{"version":3,"sources":["webpack:///../assets/scss/trysilhus.scss?5630","webpack:///../assets/scss/trysilhus.scss","webpack:///./album/shared/navigation.js","webpack:///./run.js","webpack:///./configuration.js","webpack:///./album/directives/stPersist.js","webpack:///./album/directives/stIdArray.js","webpack:///./album/shared/saveFile.js","webpack:///./album/directives/stExport.js","webpack:///./album/shared/export.html","webpack:///./album/directives/stToggleColumn.js","webpack:///./album/directives/stToggleMenu.js","webpack:///./album/shared/tablesettings.html","webpack:///./album/directives/stToggleItem.js","webpack:///./album/directives/stResetSearch.js","webpack:///./album/directives/convertToNumber.js","webpack:///./album/directives/dateModel.js","webpack:///./album/directives/albumTruncate.js","webpack:///./album/directives/autoExpand.js","webpack:///./album/directives/compileData.js","webpack:///./album/directives/contenteditable.js","webpack:///./album/directives/albumMenu.js","webpack:///./main/directives.js","webpack:///./album/directives/clickIf.js","webpack:///./album/directives/albumDate.js","webpack:///./album/directives/selectOnBlur.js","webpack:///./album/directives/albumMenuItem.js","webpack:///./album/directives/albumMenuItem.html","webpack:///./album/directives/modalMoveable.js","webpack:///./album/directives/taBlobLink.js","webpack:///./album/directives/ibmBlobLink.js","webpack:///./album/directives/scroll.js","webpack:///./api/searchApi.js","webpack:///./api/documentApi.js","webpack:///./album/shared/arrangeViewing.js","webpack:///./album/shared/albumReserveSection/reservesection.js","webpack:///./album/shared/albumBuySection/convert-step-1.js","webpack:///./album/shared/albumBuySection/convert-step-2.js","webpack:///./album/shared/albumBuySection/convert-step-3.js","webpack:///./album/shared/albumBuySection/convert-step-4.js","webpack:///./api/sectionApi.js","webpack:///./album/shared/arrangeViewing.html","webpack:///./album/shared/albumReserveSection/reservesection.html","webpack:///./album/shared/albumBuySection/convert-step-1.html","webpack:///./album/shared/albumBuySection/convert-step-2.html","webpack:///./album/shared/albumBuySection/convert-step-3.html","webpack:///./album/shared/albumBuySection/convert-step-4.html","webpack:///./album/shared/albumBuySection/convert-step-5.html","webpack:///./album/shared/albumProfileImage/ctrl.js","webpack:///./api/contactApi.js","webpack:///./album/shared/albumProfileImage/image.html","webpack:///./album/shared/albumSms/sendsms.js","webpack:///./album/shared/albumRejectOffer/rejectoffer.js","webpack:///./album/shared/albumRejectOffer/rejectoffer.html","webpack:///./api/customerApi.js","webpack:///./album/shared/albumSms/sendsms.html","webpack:///./album/shared/generateTasks.js","webpack:///./api/taskApi.js","webpack:///./album/shared/generateTasks.html","webpack:///./album/shared/versionLog/versionLog.js","webpack:///./album/shared/updateProcessVersion.js","webpack:///./album/shared/regline.js","webpack:///./album/shared/setSchedule.js","webpack:///./album/shared/aberration.js","webpack:///./album/shared/albumAberration/email.js","webpack:///./album/shared/albumAberration/modalctrl.js","webpack:///./album/shared/albumLoginPopup/login.js","webpack:///./album/shared/comment.js","webpack:///./album/shared/albumNote/ctrl.js","webpack:///./main/factories.js","webpack:///./api/mailApi.js","webpack:///./api/componentApi.js","webpack:///./api/projectApi.js","webpack:///./api/minuteApi.js","webpack:///./api/commonApi.js","webpack:///./album/shared/viewermodal.html","webpack:///./api/processApi.js","webpack:///./album/shared/updateProcessVersion.html","webpack:///./album/shared/versionLog/versionLog.html","webpack:///./api/registrationApi.js","webpack:///./album/shared/regline.html","webpack:///./api/attachmentApi.js","webpack:///./api/orderApi.js","webpack:///./api/subscriptionApi.js","webpack:///./api/salesApi.js","webpack:///./api/activityApi.js","webpack:///./api/reportApi.js","webpack:///./api/ibmApi.js","webpack:///./api/optionApi.js","webpack:///./api/houseApi.js","webpack:///./api/moduleApi.js","webpack:///./api/scheduleApi.js","webpack:///./album/shared/setSchedule.html","webpack:///./api/systemApi.js","webpack:///./api/aberrationApi.js","webpack:///./album/shared/aberration.html","webpack:///./album/shared/albumAberration/email.html","webpack:///./album/shared/albumAberration/modalmarkup.html","webpack:///./api/userApi.js","webpack:///./album/shared/albumLoginPopup/login.html","webpack:///./api/httpLoaderService.js","webpack:///./api/errorService.js","webpack:///./api/calculatorService.js","webpack:///./api/commentApi.js","webpack:///./album/shared/comment.html","webpack:///./api/ksApi.js","webpack:///./api/checklistApi.js","webpack:///./api/noteApi.js","webpack:///./album/shared/albumNote/note.html","webpack:///./api/notifyApi.js","webpack:///./api/templateApi.js","webpack:///./api/barracksApi.js","webpack:///./album/shared/albumDocuments/addfolder.js","webpack:///./album/shared/albumDocuments/addrepljob.js","webpack:///./album/shared/albumDocuments/admrepljobs.js","webpack:///./album/shared/albumDocuments/upload.js","webpack:///./album/shared/albumDocuments/upload.html","webpack:///./album/shared/albumDocuments/mycontract.js","webpack:///./album/shared/albumDocuments/editPermissions.js","webpack:///./album/shared/albumDocuments/category.js","webpack:///./album/shared/albumDocuments/component.js","webpack:///./album/shared/albumDocuments/markup.html","webpack:///./album/shared/albumDocuments/addfolder.html","webpack:///./album/shared/albumDocuments/mycontract.html","webpack:///./album/shared/albumDocuments/editPermissions.html","webpack:///./album/shared/albumDocuments/addrepljob.html","webpack:///./album/shared/albumDocuments/admrepljobs.html","webpack:///./album/shared/albumDocuments/category.html","webpack:///./album/shared/albumPdfRefs/component.js","webpack:///./album/shared/albumPdfRefs/markup.html","webpack:///./album/shared/albumRegistrations/component.js","webpack:///./album/shared/albumRegistrations/markup.html","webpack:///./album/common/albumDatePicker/component.js","webpack:///./album/common/albumDatePicker/markup.html","webpack:///./album/common/albumEditColumn/component.js","webpack:///./album/common/albumEditColumn/markup.html","webpack:///./album/common/albumTextPopup/component.js","webpack:///./album/common/albumTextPopup/markup.html","webpack:///./album/common/albumTextPopup/edit.html","webpack:///./album/common/albumHouseBody/component.js","webpack:///./album/common/albumHouseBody/markup.html","webpack:///./album/common/albumSectionTable/edit.js","webpack:///./album/common/albumSectionTable/mergeletter.js","webpack:///./album/common/albumSectionTable/addchecklist.js","webpack:///./album/common/albumSectionTable/component.js","webpack:///./album/common/albumSectionTable/markup.html","webpack:///./album/common/albumSectionTable/cartsummary.html","webpack:///./album/common/albumSectionTable/edit.html","webpack:///./album/common/albumSectionTable/mergeletter.html","webpack:///./album/common/albumSectionTable/addchecklist.html","webpack:///./album/common/albumContactPersonInput/component.js","webpack:///./album/common/albumContactPersonInput/markup.html","webpack:///./album/common/albumOrderTable/head.js","webpack:///./album/common/albumOrderTable/contacts.js","webpack:///./album/common/albumOrderTable/preview.js","webpack:///./album/shared/addCompModal.html","webpack:///./album/shared/addcompmodal.js","webpack:///./album/common/albumOrderTable/component.js","webpack:///./album/common/albumOrderTable/markup.html","webpack:///./album/common/albumOrderTable/head.html","webpack:///./album/common/albumOrderTable/contacts.html","webpack:///./album/common/albumOrderTable/preview.html","webpack:///./album/common/albumCalculatePrice/importpricecalc.js","webpack:///./album/common/albumCalculatePrice/component.js","webpack:///./album/common/albumCalculatePrice/markup.html","webpack:///./album/common/albumCalculatePrice/importpricecalc.html","webpack:///./album/common/albumContactWizard/contactPersonExists.js","webpack:///./album/common/albumContactWizard/step1.js","webpack:///./album/common/albumContactWizard/contactPersonExists.html","webpack:///./album/common/albumContactWizard/step2.js","webpack:///./album/common/albumContactWizard/step3.js","webpack:///./album/common/albumContactWizard/component.js","webpack:///./album/common/albumContactWizard/markup.html","webpack:///./album/common/albumContactWizard/step1.html","webpack:///./album/common/albumContactWizard/step2.html","webpack:///./album/common/albumContactWizard/step3.html","webpack:///./album/shared/albumAberration/component.js","webpack:///./album/shared/albumAberration/markup.html","webpack:///./album/shared/albumFileDownload/component.js","webpack:///./album/shared/albumFileDownload/markup.html","webpack:///./album/shared/albumBlobs/component.js","webpack:///./album/shared/albumBlobs/markup.html","webpack:///./album/shared/albumComments/component.js","webpack:///./album/shared/albumComments/markup.html","webpack:///./album/shared/albumDocIcon/component.js","webpack:///./album/shared/albumDocIcon/markup.html","webpack:///./album/shared/albumPdfViewer/component.js","webpack:///./album/shared/albumPdfViewer/markup.html","webpack:///./album/shared/albumPdfViewer/viewer.html","webpack:///./album/shared/albumFinancesTable/component.js","webpack:///./album/shared/albumFinancesTable/markup.html","webpack:///./album/shared/albumCheckBox/component.js","webpack:///./album/shared/albumCheckBox/markup.html","webpack:///./album/shared/albumPostCode/component.js","webpack:///./album/shared/albumPostCode/markup.html","webpack:///./album/common/albumRating/component.js","webpack:///./album/common/albumRating/markup.html","webpack:///./album/shared/albumReserveSection/component.js","webpack:///./album/shared/albumReserveSection/markup.html","webpack:///./album/shared/albumPhone/component.js","webpack:///./album/shared/albumPhone/markup.html","webpack:///./album/shared/albumChecklists/component.js","webpack:///./album/shared/albumChecklists/markup.html","webpack:///./album/shared/albumChecklistItem/editItemModal.js","webpack:///./album/shared/albumChecklistItem/aberrationActionsModal.js","webpack:///./album/shared/albumChecklistItem/component.js","webpack:///./album/shared/albumChecklistItem/markup.html","webpack:///./album/shared/albumChecklistItem/aberrationActionsModalTemplate.html","webpack:///./album/shared/albumChecklistItem/editItemModal.html","webpack:///./album/shared/albumChecklistItemEdit/component.js","webpack:///./album/shared/albumChecklistItemEdit/markup.html","webpack:///./album/shared/albumChecklistRegLine/component.js","webpack:///./album/shared/albumChecklistRegLine/markup.html","webpack:///./album/shared/albumAddCustomer/component.js","webpack:///./album/shared/albumAddCustomer/markup.html","webpack:///./album/shared/albumProcessEdit/component.js","webpack:///./album/shared/albumProcessEdit/markup.html","webpack:///./album/shared/albumInsuranceRow/component.js","webpack:///./album/shared/albumInsuranceRow/markup.html","webpack:///./album/common/albumBreadCrumbs/component.js","webpack:///./album/common/albumBreadCrumbs/markup.html","webpack:///./album/common/albumCustomerPage/addprojcust.js","webpack:///./album/common/albumCustomerPage/component.js","webpack:///./album/common/albumCustomerPage/markup.html","webpack:///./album/common/albumCustomerPage/addprojcust.html","webpack:///./album/shared/albumCategoryPicker/component.js","webpack:///./album/shared/albumCategoryPicker/markup.html","webpack:///./album/shared/albumActivityList/activityLog.js","webpack:///./album/shared/albumActivityList/component.js","webpack:///./album/shared/albumActivityList/markup.html","webpack:///./album/shared/albumActivityList/activityLog.html","webpack:///./album/shared/albumEditor/blueprints.js","webpack:///./album/shared/albumEditor/helpers.js","webpack:///./album/shared/albumEditor/replaceRefs.js","webpack:///./main/components.js","webpack:///./album/shared/albumEditor/component.js","webpack:///./album/shared/albumEditor/markup.html","webpack:///./album/shared/albumEditor/replaceRefs.html","webpack:///./album/shared/albumEditor/blueprints.html","webpack:///./album/shared/albumFileViewer/component.js","webpack:///./album/shared/albumFileViewer/markup.html","webpack:///./album/shared/albumContactPersonPicker/component.js","webpack:///./album/shared/albumContactPersonPicker/markup.html","webpack:///./album/shared/albumContactPicker/component.js","webpack:///./album/shared/albumContactPicker/markup.html","webpack:///./album/shared/albumCrudStatus/component.js","webpack:///./album/shared/albumCrudStatus/markup.html","webpack:///./main/filters.js","webpack:///./album/filters/translateFilter.js","webpack:///./album/filters/singleSpaceFilter.js","webpack:///./album/filters/range.js","webpack:///./album/filters/bytes.js","webpack:///./album/filters/percentage.js","webpack:///./album/filters/getdoctype.js","webpack:///./album/filters/filearraytotext.js","webpack:///./album/filters/emptyif0.js","webpack:///./album/filters/budgetSumFilter.js","webpack:///./album/filters/sumOfValue.js","webpack:///./album/filters/validEmail.js","webpack:///./album/filters/haveRoleFilter.js","webpack:///./album/filters/searchResultFilter.js","webpack:///./album/filters/smartTableStrictFilter.js","webpack:///./album/filters/updatedByColText.js","webpack:///./album/filters/cutFilter.js","webpack:///./album/filters/notDeleted.js","webpack:///./album/filters/albumWord.js","webpack:///./album/filters/projectContactFilter.js","webpack:///./album/filters/moduleFilter.js","webpack:///./album/filters/albumLimitTo.js","webpack:///./album/filters/startFromFilter.js","webpack:///./main/msie.js","webpack:///./album/tasks/taskLink.js","webpack:///./album/main/prospectsDiagram.js","webpack:///./album/main/salesDiagram.js","webpack:///./album/main/ctrl.js","webpack:///./album/main/charts.js","webpack:///./album/main/header.js","webpack:///./album/login/ctrl.js","webpack:///./album/logout/ctrl.js","webpack:///./album/logout/logout.html","webpack:///./main/states/root.js","webpack:///./album/main/state.js","webpack:///./album/main/dashboard.html","webpack:///./album/main/header.html","webpack:///./album/main/notFound.js","webpack:///./album/login/state.js","webpack:///./album/login/login.html","webpack:///./album/logout/state.js","webpack:///./album/ks/index/ctrl.js","webpack:///./album/ks/level2/ctrl.js","webpack:///./album/ks/level3/ctrl.js","webpack:///./main/states/ks.js","webpack:///./album/ks/state.js","webpack:///./album/ks/ks.html","webpack:///./album/ks/index/state.js","webpack:///./album/ks/index/index.html","webpack:///./album/ks/level2/state.js","webpack:///./album/ks/level2/level2.html","webpack:///./album/ks/level3/state.js","webpack:///./album/ks/level3/level3.html","webpack:///./album/section/ctrl.js","webpack:///./album/section/state.js","webpack:///./album/section/section.html","webpack:///./album/section/index/parkinglot.js","webpack:///./album/section/index/changesection.js","webpack:///./album/section/index/projcustomers.js","webpack:///./album/section/index/ctrl.js","webpack:///./album/section/index/changesection.html","webpack:///./album/section/index/projcustomers.html","webpack:///./album/section/index/parkinglot.html","webpack:///./album/section/index/state.js","webpack:///./album/section/index/index.html","webpack:///./album/section/options/addoption.js","webpack:///./album/section/options/addpackage.js","webpack:///./album/section/options/ctrl.js","webpack:///./album/section/options/addoption.html","webpack:///./album/section/options/addpackage.html","webpack:///./album/section/options/state.js","webpack:///./album/section/options/options.html","webpack:///./album/section/options/option/ctrl.js","webpack:///./album/section/options/option/state.js","webpack:///./album/section/options/option/option.html","webpack:///./album/section/coloroptions/ctrl.js","webpack:///./album/section/customers/addcustomer.js","webpack:///./album/section/customers/ctrl.js","webpack:///./album/section/customers/addcustomer.html","webpack:///./album/section/customers/customer/ctrl.js","webpack:///./album/section/finances/ctrl.js","webpack:///./album/section/changes/ctrl.js","webpack:///./album/section/changes/contract/ctrl.js","webpack:///./album/section/changes/contract/change/ctrl.js","webpack:///./album/section/documents/ctrl.js","webpack:///./album/section/settlement/ctrl.js","webpack:///./album/shared/protocolsignature.js","webpack:///./album/shared/protocolsignature.html","webpack:///./album/section/preinspectionprotocol/ctrl.js","webpack:///./album/section/preinspectionprotocol/state.js","webpack:///./album/section/acquisitionprotocol/ctrl.js","webpack:///./album/section/acquisitionprotocol/state.js","webpack:///./album/section/oneyearinspectionprotocol/ctrl.js","webpack:///./album/section/oneyearinspectionprotocol/state.js","webpack:///./album/section/registrations/ctrl.js","webpack:///./album/section/tasks/ctrl.js","webpack:///./album/section/checklists/ctrl.js","webpack:///./album/section/contract/cancelcontract.js","webpack:///./album/section/contract/ctrl.js","webpack:///./album/section/contract/cancelcontract.html","webpack:///./album/section/protocols/ctrl.js","webpack:///./album/section/aberrations/ctrl.js","webpack:///./main/states/section.js","webpack:///./album/section/coloroptions/state.js","webpack:///./album/section/coloroptions/coloroptions.html","webpack:///./album/section/customers/state.js","webpack:///./album/section/customers/customers.html","webpack:///./album/section/customers/customer/state.js","webpack:///./album/section/customers/customer/customer.html","webpack:///./album/section/finances/state.js","webpack:///./album/section/finances/finances.html","webpack:///./album/section/changes/state.js","webpack:///./album/section/changes/changes.html","webpack:///./album/section/changes/contract/state.js","webpack:///./album/section/changes/contract/contract.html","webpack:///./album/section/changes/contract/change/state.js","webpack:///./album/section/changes/contract/change/change.html","webpack:///./album/section/documents/state.js","webpack:///./album/section/documents/documents.html","webpack:///./album/section/settlement/state.js","webpack:///./album/section/settlement/settlement.html","webpack:///./album/section/preinspectionprotocol/preinspectionprotocol.html","webpack:///./album/section/acquisitionprotocol/acquisitionprotocol.html","webpack:///./album/section/oneyearinspectionprotocol/oneyearinspectionprotocol.html","webpack:///./album/section/registrations/state.js","webpack:///./album/section/registrations/registrations.html","webpack:///./album/section/tasks/state.js","webpack:///./album/section/tasks/tasks.html","webpack:///./album/section/checklists/state.js","webpack:///./album/section/checklists/checklists.html","webpack:///./album/section/contract/state.js","webpack:///./album/section/contract/contract.html","webpack:///./album/section/protocols/state.js","webpack:///./album/section/protocols/protocols.html","webpack:///./album/section/aberrations/state.js","webpack:///./album/section/aberrations/aberrations.html","webpack:///./album/processes/ctrl.js","webpack:///./album/process/ctrl.js","webpack:///./album/process/index/ctrl.js","webpack:///./album/process/read/ctrl.js","webpack:///./album/process/newversion/ctrl.js","webpack:///./album/process/activities/ctrl.js","webpack:///./album/process/activities/activity/ctrl.js","webpack:///./album/process/components/compcalc.js","webpack:///./album/process/components/ctrl.js","webpack:///./album/process/components/compcalc.html","webpack:///./album/process/schedules/ctrl.js","webpack:///./album/processes/planned/chart.js","webpack:///./album/processes/planned/add.js","webpack:///./album/processes/planned/ctrl.js","webpack:///./album/processes/planned/add.html","webpack:///./album/process/planned/ctrl.js","webpack:///./album/process/linked/ctrl.js","webpack:///./main/states/process.js","webpack:///./album/processes/state.js","webpack:///./album/processes/processes.html","webpack:///./album/process/state.js","webpack:///./album/process/process.html","webpack:///./album/process/index/state.js","webpack:///./album/process/index/index.html","webpack:///./album/process/read/state.js","webpack:///./album/process/read/read.html","webpack:///./album/process/newversion/state.js","webpack:///./album/process/newversion/newversion.html","webpack:///./album/process/activities/state.js","webpack:///./album/process/activities/activities.html","webpack:///./album/process/activities/activity/state.js","webpack:///./album/process/activities/activity/activity.html","webpack:///./album/process/components/state.js","webpack:///./album/process/components/components.html","webpack:///./album/process/schedules/state.js","webpack:///./album/process/schedules/schedules.html","webpack:///./album/processes/planned/state.js","webpack:///./album/processes/planned/planned.html","webpack:///./album/process/planned/state.js","webpack:///./album/process/planned/planned.html","webpack:///./album/process/linked/state.js","webpack:///./album/process/linked/linked.html","webpack:///./album/contactpersons/addcontactperson.js","webpack:///./album/contactpersons/addcontactperson.html","webpack:///./album/contactpersons/ctrl.js","webpack:///./album/contactpersons/contactperson/ctrl.js","webpack:///./album/contactpersons/contactperson/index/ctrl.js","webpack:///./album/contactpersons/contactperson/notes/ctrl.js","webpack:///./album/contactpersons/contactperson/documents/ctrl.js","webpack:///./album/contactpersons/contactperson/projects/ctrl.js","webpack:///./album/contactpersons/contactperson/registrations/ctrl.js","webpack:///./album/contactpersons/contactperson/tasks/ctrl.js","webpack:///./album/contactpersons/contactperson/duplicates/ctrl.js","webpack:///./album/contactpersons/contactperson/log/ctrl.js","webpack:///./album/contactpersons/contactperson/relations/ctrl.js","webpack:///./album/contactpersons/contactperson/externalweb/ctrl.js","webpack:///./album/contactpersons/contactperson/byggtrysilhus/ctrl.js","webpack:///./album/contactpersons/contactperson/courses/addcourse.js","webpack:///./album/contactpersons/contactperson/courses/ctrl.js","webpack:///./album/contactpersons/contactperson/courses/addcourse.html","webpack:///./main/states/contactperson.js","webpack:///./album/contactpersons/state.js","webpack:///./album/contactpersons/contactpersons.html","webpack:///./album/contactpersons/contactperson/state.js","webpack:///./album/contactpersons/contactperson/contactperson.html","webpack:///./album/contactpersons/contactperson/index/state.js","webpack:///./album/contactpersons/contactperson/index/index.html","webpack:///./album/contactpersons/contactperson/notes/state.js","webpack:///./album/contactpersons/contactperson/notes/notes.html","webpack:///./album/contactpersons/contactperson/documents/state.js","webpack:///./album/contactpersons/contactperson/documents/documents.html","webpack:///./album/contactpersons/contactperson/projects/state.js","webpack:///./album/contactpersons/contactperson/projects/projects.html","webpack:///./album/contactpersons/contactperson/registrations/state.js","webpack:///./album/contactpersons/contactperson/registrations/registrations.html","webpack:///./album/contactpersons/contactperson/tasks/state.js","webpack:///./album/contactpersons/contactperson/tasks/tasks.html","webpack:///./album/contactpersons/contactperson/duplicates/state.js","webpack:///./album/contactpersons/contactperson/duplicates/duplicates.html","webpack:///./album/contactpersons/contactperson/log/state.js","webpack:///./album/contactpersons/contactperson/log/log.html","webpack:///./album/contactpersons/contactperson/relations/state.js","webpack:///./album/contactpersons/contactperson/relations/relations.html","webpack:///./album/contactpersons/contactperson/externalweb/state.js","webpack:///./album/contactpersons/contactperson/externalweb/externalweb.html","webpack:///./album/contactpersons/contactperson/byggtrysilhus/state.js","webpack:///./album/contactpersons/contactperson/byggtrysilhus/byggtrysilhus.html","webpack:///./album/contactpersons/contactperson/courses/state.js","webpack:///./album/contactpersons/contactperson/courses/courses.html","webpack:///./album/system/ctrl.js","webpack:///./album/system/processphases/edit.js","webpack:///./album/system/processphases/ctrl.js","webpack:///./album/system/processphases/edit.html","webpack:///./album/system/componentgroups/edit.js","webpack:///./album/system/componentgroups/ctrl.js","webpack:///./album/system/componentgroups/edit.html","webpack:///./album/system/optioncategories/edit.js","webpack:///./album/system/optioncategories/ctrl.js","webpack:///./album/system/optioncategories/edit.html","webpack:///./album/system/optioncategories/state.js","webpack:///./album/system/optioncategories/optioncategories.html","webpack:///./album/system/projecttypes/edit.js","webpack:///./album/system/projecttypes/ctrl.js","webpack:///./album/system/projecttypes/edit.html","webpack:///./album/system/projecttypes/state.js","webpack:///./album/system/projecttypes/projecttypes.html","webpack:///./album/system/planresources/edit.js","webpack:///./album/system/planresources/ctrl.js","webpack:///./album/system/planresources/edit.html","webpack:///./album/system/planresources/state.js","webpack:///./album/system/planresources/planresources.html","webpack:///./album/system/planresources/level2/edit.js","webpack:///./album/system/planresources/level2/ctrl.js","webpack:///./album/system/planresources/level2/edit.html","webpack:///./album/system/planresources/level2/state.js","webpack:///./album/system/planresources/level2/level2.html","webpack:///./album/system/projaccounts/edit.js","webpack:///./album/system/projaccounts/ctrl.js","webpack:///./album/system/projaccounts/edit.html","webpack:///./album/system/projaccounts/state.js","webpack:///./album/system/projaccounts/projaccounts.html","webpack:///./album/system/sectiontypes/edit.js","webpack:///./album/system/sectiontypes/ctrl.js","webpack:///./album/system/sectiontypes/edit.html","webpack:///./album/system/sectiontypes/state.js","webpack:///./album/system/sectiontypes/sectiontypes.html","webpack:///./album/system/smslog/ctrl.js","webpack:///./album/system/smslog/sms.html","webpack:///./album/system/smslog/state.js","webpack:///./album/system/smslog/smslog.html","webpack:///./album/system/companies/edit.js","webpack:///./album/system/companies/ctrl.js","webpack:///./album/system/companies/edit.html","webpack:///./album/system/companies/state.js","webpack:///./album/system/companies/companies.html","webpack:///./album/system/definitions/edit.js","webpack:///./album/system/definitions/ctrl.js","webpack:///./album/system/definitions/edit.html","webpack:///./album/system/definitions/state.js","webpack:///./album/system/definitions/definitions.html","webpack:///./album/system/contactgroups/edit.js","webpack:///./album/system/contactgroups/ctrl.js","webpack:///./album/system/contactgroups/edit.html","webpack:///./album/system/contactgroups/state.js","webpack:///./album/system/contactgroups/contactgroups.html","webpack:///./album/system/aberrationcauses/edit.js","webpack:///./album/system/aberrationcauses/ctrl.js","webpack:///./album/system/aberrationcauses/edit.html","webpack:///./album/system/aberrationcauses/state.js","webpack:///./album/system/aberrationcauses/aberrationcauses.html","webpack:///./album/system/aberrationtypes/edit.js","webpack:///./album/system/aberrationtypes/ctrl.js","webpack:///./album/system/aberrationtypes/edit.html","webpack:///./album/system/aberrationtypes/state.js","webpack:///./album/system/aberrationtypes/aberrationtypes.html","webpack:///./album/system/models/edit.js","webpack:///./album/system/models/ctrl.js","webpack:///./album/system/models/edit.html","webpack:///./album/system/models/state.js","webpack:///./album/system/models/models.html","webpack:///./album/system/modules/insertUpdateModule.js","webpack:///./album/system/modules/ctrl.js","webpack:///./album/system/modules/insertUpdateModule.html","webpack:///./album/system/modules/state.js","webpack:///./album/system/modules/modules.html","webpack:///./album/system/processowners/edit.js","webpack:///./album/system/processowners/ctrl.js","webpack:///./album/system/processowners/edit.html","webpack:///./album/system/processowners/state.js","webpack:///./album/system/processowners/processowners.html","webpack:///./album/system/users/edit.js","webpack:///./album/system/users/ctrl.js","webpack:///./album/system/users/edit.html","webpack:///./album/system/users/state.js","webpack:///./album/system/users/users.html","webpack:///./album/system/roles/users.js","webpack:///./album/system/roles/edit.js","webpack:///./album/system/roles/ctrl.js","webpack:///./album/system/roles/users.html","webpack:///./album/system/roles/edit.html","webpack:///./album/system/roles/state.js","webpack:///./album/system/roles/roles.html","webpack:///./album/system/tradecodes/ctrl.js","webpack:///./album/system/tradecodes/state.js","webpack:///./album/system/tradecodes/tradecodes.html","webpack:///./album/system/tradecodes/tradecode/ctrl.js","webpack:///./album/system/tradecodes/tradecode/state.js","webpack:///./album/system/tradecodes/tradecode/tradecode.html","webpack:///./album/system/faqs/ctrl.js","webpack:///./album/system/faqs/state.js","webpack:///./album/system/faqs/faqs.html","webpack:///./album/system/faqs/faq/preview.js","webpack:///./album/system/faqs/faq/ctrl.js","webpack:///./album/system/faqs/faq/preview.html","webpack:///./album/system/faqs/faq/state.js","webpack:///./album/system/faqs/faq/faq.html","webpack:///./album/system/templates/edit.js","webpack:///./album/system/templates/ctrl.js","webpack:///./album/system/templates/edit.html","webpack:///./album/system/prognosesenteret/ctrl.js","webpack:///./album/system/tasks/ctrl.js","webpack:///./album/system/consents/edit.js","webpack:///./album/system/consents/ctrl.js","webpack:///./album/system/consents/edit.html","webpack:///./album/system/postcodes/edit.js","webpack:///./album/system/postcodes/ctrl.js","webpack:///./album/system/postcodes/edit.html","webpack:///./album/system/reglinecategories/ctrl.js","webpack:///./album/system/albumsettings/edit.js","webpack:///./album/system/albumsettings/ctrl.js","webpack:///./album/system/albumsettings/edit.html","webpack:///./main/states/system.js","webpack:///./album/system/state.js","webpack:///./album/system/system.html","webpack:///./album/system/processphases/state.js","webpack:///./album/system/processphases/processphases.html","webpack:///./album/system/componentgroups/state.js","webpack:///./album/system/componentgroups/componentgroups.html","webpack:///./album/system/templates/state.js","webpack:///./album/system/templates/templates.html","webpack:///./album/system/prognosesenteret/state.js","webpack:///./album/system/prognosesenteret/prognosesenteret.html","webpack:///./album/system/tasks/state.js","webpack:///./album/system/tasks/tasks.html","webpack:///./album/system/consents/state.js","webpack:///./album/system/consents/consents.html","webpack:///./album/system/postcodes/state.js","webpack:///./album/system/postcodes/postcodes.html","webpack:///./album/system/reglinecategories/state.js","webpack:///./album/system/reglinecategories/reglinecategories.html","webpack:///./album/system/albumsettings/state.js","webpack:///./album/system/albumsettings/albumsettings.html","webpack:///./album/reports/parameters.js","webpack:///./album/reports/ctrl.js","webpack:///./album/reports/parameters.html","webpack:///./album/reports/state.js","webpack:///./album/reports/reports.html","webpack:///./album/reports/contractsoverview/ctrl.js","webpack:///./album/reports/contractsoverview/state.js","webpack:///./album/reports/contractsoverview/contractsoverview.html","webpack:///./album/reports/unconfirmedcontracts/ctrl.js","webpack:///./album/reports/unconfirmedcontracts/state.js","webpack:///./album/reports/unconfirmedcontracts/unconfirmedcontracts.html","webpack:///./album/reports/confirmednotdelivered/ctrl.js","webpack:///./album/reports/confirmednotdelivered/state.js","webpack:///./album/reports/confirmednotdelivered/confirmednotdelivered.html","webpack:///./album/reports/sectionsmovedin/ctrl.js","webpack:///./album/reports/sectionsmovedin/state.js","webpack:///./album/reports/sectionsmovedin/sectionsmovedin.html","webpack:///./album/reports/dailystats/series.js","webpack:///./album/reports/dailystats/ctrl.js","webpack:///./album/reports/dailystats/state.js","webpack:///./album/reports/dailystats/dailystats.html","webpack:///./album/reports/unsolddelivered/ctrl.js","webpack:///./album/reports/unsolddelivered/state.js","webpack:///./album/reports/unsolddelivered/unsolddelivered.html","webpack:///./album/reports/reglinelog/showchanges.js","webpack:///./album/reports/reglinelog/ctrl.js","webpack:///./album/reports/reglinelog/showchanges.html","webpack:///./album/reports/reglinelog/state.js","webpack:///./album/reports/reglinelog/reglinelog.html","webpack:///./album/reports/controlplan/ctrl.js","webpack:///./album/reports/controlplan/state.js","webpack:///./album/reports/controlplan/controlplan.html","webpack:///./album/reports/salesstats/ctrl.js","webpack:///./album/reports/stats/ctrl.js","webpack:///./album/reports/projectportfolio/ctrl.js","webpack:///./album/reports/regbyage/ctrl.js","webpack:///./album/reports/regbycategory/ctrl.js","webpack:///./album/reports/regbycontractor/ctrl.js","webpack:///./album/reports/bonus/ctrl.js","webpack:///./album/reports/confirmedcontracts/ctrl.js","webpack:///./album/reports/drilldown/ctrl.js","webpack:///./main/states/report.js","webpack:///./album/reports/salesstats/state.js","webpack:///./album/reports/salesstats/salesstats.html","webpack:///./album/reports/stats/state.js","webpack:///./album/reports/stats/stats.html","webpack:///./album/reports/regbyage/state.js","webpack:///./album/reports/regbyage/regbyage.html","webpack:///./album/reports/regbycategory/state.js","webpack:///./album/reports/regbycategory/regbycategory.html","webpack:///./album/reports/bonus/state.js","webpack:///./album/reports/bonus/bonusreport.html","webpack:///./album/reports/confirmedcontracts/state.js","webpack:///./album/reports/confirmedcontracts/confirmedcontracts.html","webpack:///./album/reports/drilldown/state.js","webpack:///./album/reports/drilldown/drilldown.html","webpack:///./album/reports/regbycontractor/state.js","webpack:///./album/reports/regbycontractor/regbycontractor.html","webpack:///./album/reports/projectportfolio/state.js","webpack:///./album/reports/projectportfolio/projectportfolio.html","webpack:///./album/projects/ctrl.js","webpack:///./album/projects/state.js","webpack:///./album/projects/projects.html","webpack:///./album/project/ctrl.js","webpack:///./album/project/state.js","webpack:///./album/project/project.html","webpack:///./album/project/index/newhouse.js","webpack:///./album/project/index/ctrl.js","webpack:///./album/project/index/newhouse.html","webpack:///./album/project/index/state.js","webpack:///./album/project/index/index.html","webpack:///./album/project/new/ctrl.js","webpack:///./album/project/new/state.js","webpack:///./album/project/new/new.html","webpack:///./album/project/customers/ctrl.js","webpack:///./album/project/customers/state.js","webpack:///./album/project/customers/customers.html","webpack:///./album/project/customers/add/ctrl.js","webpack:///./album/project/customers/add/state.js","webpack:///./album/project/customers/add/add.html","webpack:///./album/project/houses/ctrl.js","webpack:///./album/project/houses/state.js","webpack:///./album/project/houses/houses.html","webpack:///./album/project/sections/ctrl.js","webpack:///./album/project/sections/state.js","webpack:///./album/project/sections/sections.html","webpack:///./album/project/tasks/ctrl.js","webpack:///./album/project/tasks/state.js","webpack:///./album/project/tasks/tasks.html","webpack:///./album/project/options/addoptions.js","webpack:///./album/project/options/ctrl.js","webpack:///./album/project/options/addoptions.html","webpack:///./album/project/options/state.js","webpack:///./album/project/options/options.html","webpack:///./album/project/options/option/ctrl.js","webpack:///./album/project/options/option/state.js","webpack:///./album/project/options/option/option.html","webpack:///./album/project/minutes/newminute.js","webpack:///./album/project/minutes/ctrl.js","webpack:///./album/project/minutes/newminute.html","webpack:///./album/project/minutes/state.js","webpack:///./album/project/minutes/minutes.html","webpack:///./album/project/minutes/minute/send.js","webpack:///./album/project/minutes/minute/log.js","webpack:///./album/shared/dropdownMultiSelectHelper.js","webpack:///./album/project/minutes/minute/ctrl.js","webpack:///./album/project/minutes/minute/send.html","webpack:///./album/project/minutes/minute/log.html","webpack:///./album/project/minutes/minute/state.js","webpack:///./album/project/minutes/minute/minute.html","webpack:///./album/project/contacts/importcontacts.js","webpack:///./album/project/contacts/ctrl.js","webpack:///./album/project/contacts/importcontacts.html","webpack:///./album/project/contacts/state.js","webpack:///./album/project/contacts/contacts.html","webpack:///./album/project/contacts/projcontact/ctrl.js","webpack:///./album/project/contacts/projcontact/state.js","webpack:///./album/project/contacts/projcontact/projcontact.html","webpack:///./album/project/aberrations/ctrl.js","webpack:///./album/project/aberrations/state.js","webpack:///./album/project/aberrations/aberrations.html","webpack:///./album/project/organization/importProjOrganization.js","webpack:///./album/project/organization/insertUpdateProjOrganization.js","webpack:///./album/project/organization/ctrl.js","webpack:///./album/project/organization/insertUpdateProjOrganization.html","webpack:///./album/project/organization/importProjOrganization.html","webpack:///./album/project/organization/state.js","webpack:///./album/project/organization/organization.html","webpack:///./album/project/info/updateprojid.js","webpack:///./album/project/info/sendnewsletter.js","webpack:///./album/project/info/projectnumbers.js","webpack:///./album/project/info/ctrl.js","webpack:///./album/project/info/projectnumbers.html","webpack:///./album/project/info/updateprojid.html","webpack:///./album/project/info/sendnewsletter.html","webpack:///./album/project/info/state.js","webpack:///./album/project/info/info.html","webpack:///./album/project/documents/ctrl.js","webpack:///./album/project/documents/state.js","webpack:///./album/project/documents/documents.html","webpack:///./album/project/registrations/ctrl.js","webpack:///./album/project/registrations/state.js","webpack:///./album/project/registrations/registrations.html","webpack:///./album/project/checklists/ctrl.js","webpack:///./album/project/checklists/state.js","webpack:///./album/project/checklists/checklists.html","webpack:///./album/project/openregistrations/ctrl.js","webpack:///./album/project/openregistrations/state.js","webpack:///./album/project/openregistrations/openregistrations.html","webpack:///./album/project/blueprints/ctrl.js","webpack:///./album/project/blueprints/state.js","webpack:///./album/project/blueprints/blueprints.html","webpack:///./album/project/schedule/import.js","webpack:///./album/project/schedule/ctrl.js","webpack:///./album/project/schedule/import.html","webpack:///./album/project/schedule/state.js","webpack:///./album/project/schedule/schedule.html","webpack:///./album/project/schedule/activities/ctrl.js","webpack:///./album/project/schedule/activities/state.js","webpack:///./album/project/schedule/activities/activities.html","webpack:///./album/project/crewregistration/ctrl.js","webpack:///./album/project/crewregistration/state.js","webpack:///./album/project/crewregistration/crewregistration.html","webpack:///./album/project/psi/ctrl.js","webpack:///./album/project/psi/state.js","webpack:///./album/project/psi/psi.html","webpack:///./album/project/crewaccess/ctrl.js","webpack:///./album/project/crewaccess/state.js","webpack:///./album/project/crewaccess/crewaccess.html","webpack:///./album/project/barracks/addBarracks.js","webpack:///./album/project/barracks/ctrl.js","webpack:///./album/project/barracks/addBarracks.html","webpack:///./album/project/barracks/state.js","webpack:///./album/project/barracks/barracks.html","webpack:///./album/project/barracks/info/bookingModal.js","webpack:///./album/project/barracks/info/infoBarrack.js","webpack:///./album/project/barracks/info/bookingModal.html","webpack:///./main/states/project.js","webpack:///./album/project/barracks/info/stateInfoBarracks.js","webpack:///./album/project/barracks/info/infoBarrack.html","webpack:///./album/house/ctrl.js","webpack:///./album/house/index/ctrl.js","webpack:///./album/house/sections/addsections.js","webpack:///./album/house/sections/mailmerge/step1ctrl.js","webpack:///./album/house/sections/mailmerge/step2ctrl.js","webpack:///./album/house/sections/mailmerge/step3ctrl.js","webpack:///./album/house/sections/ctrl.js","webpack:///./album/house/sections/addsections.html","webpack:///./album/house/sections/mailmerge/step1.html","webpack:///./album/house/sections/mailmerge/step2.html","webpack:///./album/house/sections/mailmerge/step3.html","webpack:///./album/house/options/ctrl.js","webpack:///./album/house/aberrations/ctrl.js","webpack:///./album/house/changes/ctrl.js","webpack:///./album/house/checklists/ctrl.js","webpack:///./album/house/documents/ctrl.js","webpack:///./album/house/modules/upsertmodule.js","webpack:///./album/house/modules/ctrl.js","webpack:///./album/house/modules/upsertmodule.html","webpack:///./album/house/schedules/summary.js","webpack:///./album/house/schedules/importSchedules.js","webpack:///./album/house/schedules/addSchedule.js","webpack:///./album/house/schedules/ctrl.js","webpack:///./album/house/schedules/summary.html","webpack:///./album/house/schedules/importSchedules.html","webpack:///./album/house/schedules/addSchedule.html","webpack:///./album/house/schedules/schedule/ctrl.js","webpack:///./album/house/schedules/schedule/index/ctrl.js","webpack:///./album/house/schedules/schedule/activities/ctrl.js","webpack:///./album/house/schedules/schedule/components/ctrl.js","webpack:///./album/house/organization/ctrl.js","webpack:///./album/house/fdv/ctrl.js","webpack:///./main/states/house.js","webpack:///./album/house/state.js","webpack:///./album/house/house.html","webpack:///./album/house/index/state.js","webpack:///./album/house/index/index.html","webpack:///./album/house/sections/state.js","webpack:///./album/house/sections/sections.html","webpack:///./album/house/options/state.js","webpack:///./album/house/options/options.html","webpack:///./album/house/aberrations/state.js","webpack:///./album/house/aberrations/aberrations.html","webpack:///./album/house/changes/state.js","webpack:///./album/house/changes/changes.html","webpack:///./album/house/checklists/state.js","webpack:///./album/house/checklists/checklists.html","webpack:///./album/house/documents/state.js","webpack:///./album/house/documents/documents.html","webpack:///./album/house/modules/state.js","webpack:///./album/house/modules/modules.html","webpack:///./album/house/schedules/state.js","webpack:///./album/house/schedules/schedules.html","webpack:///./album/house/schedules/schedule/state.js","webpack:///./album/house/schedules/schedule/schedule.html","webpack:///./album/house/schedules/schedule/index/state.js","webpack:///./album/house/schedules/schedule/index/index.html","webpack:///./album/house/schedules/schedule/activities/state.js","webpack:///./album/house/schedules/schedule/activities/activities.html","webpack:///./album/house/schedules/schedule/components/state.js","webpack:///./album/house/schedules/schedule/components/components.html","webpack:///./album/house/organization/state.js","webpack:///./album/house/organization/organization.html","webpack:///./album/house/fdv/state.js","webpack:///./album/house/fdv/fdv.html","webpack:///./album/registrations/ctrl.js","webpack:///./album/registrations/reg/ctrl.js","webpack:///./album/registrations/reg/index/ctrl.js","webpack:///./album/registrations/reg/reglinelog/ctrl.js","webpack:///./album/registrations/reg/comments/ctrl.js","webpack:///./album/registrations/newreg/ctrl.js","webpack:///./album/registrations/newregline/ctrl.js","webpack:///./main/states/registration.js","webpack:///./album/registrations/state.js","webpack:///./album/registrations/registrations.html","webpack:///./album/registrations/reg/state.js","webpack:///./album/registrations/reg/reg.html","webpack:///./album/registrations/reg/index/state.js","webpack:///./album/registrations/reg/index/index.html","webpack:///./album/registrations/reg/comments/state.js","webpack:///./album/registrations/reg/comments/comments.html","webpack:///./album/registrations/reg/reglinelog/state.js","webpack:///./album/registrations/reg/reglinelog/reglinelog.html","webpack:///./album/registrations/newreg/state.js","webpack:///./album/registrations/newreg/newreg.html","webpack:///./album/registrations/newregline/state.js","webpack:///./album/registrations/newregline/newregline.html","webpack:///./album/checklists/ctrl.js","webpack:///./album/checklists/edit/ctrl.js","webpack:///./album/checklists/checklist/ctrl.js","webpack:///./album/checklists/checklist/index/ctrl.js","webpack:///./album/checklists/checklist/finished/ctrl.js","webpack:///./main/states/checklist.js","webpack:///./album/checklists/state.js","webpack:///./album/checklists/checklists.html","webpack:///./album/checklists/edit/state.js","webpack:///./album/checklists/edit/edit.html","webpack:///./album/checklists/checklist/state.js","webpack:///./album/checklists/checklist/checklist.html","webpack:///./album/checklists/checklist/index/state.js","webpack:///./album/checklists/checklist/index/index.html","webpack:///./album/checklists/checklist/finished/state.js","webpack:///./album/checklists/checklist/finished/finished.html","webpack:///./album/customers/ctrl.js","webpack:///./album/customers/state.js","webpack:///./album/customers/customers.html","webpack:///./album/customers/find/ctrl.js","webpack:///./album/customers/add/ctrl.js","webpack:///./album/customer/ctrl.js","webpack:///./album/customer/documents/ctrl.js","webpack:///./album/customer/registrations/ctrl.js","webpack:///./album/customer/log/ctrl.js","webpack:///./album/customer/notes/ctrl.js","webpack:///./album/customer/duplicates/ctrl.js","webpack:///./album/customer/tasks/ctrl.js","webpack:///./album/customer/mt/ctrl.js","webpack:///./main/states/customer.js","webpack:///./album/customers/find/state.js","webpack:///./album/customers/add/state.js","webpack:///./album/customers/add/add.html","webpack:///./album/customer/state.js","webpack:///./album/customer/customer.html","webpack:///./album/customer/index/state.js","webpack:///./album/customer/documents/state.js","webpack:///./album/customer/documents/documents.html","webpack:///./album/customer/registrations/state.js","webpack:///./album/customer/registrations/registrations.html","webpack:///./album/customer/log/state.js","webpack:///./album/customer/log/log.html","webpack:///./album/customer/notes/state.js","webpack:///./album/customer/notes/notes.html","webpack:///./album/customer/duplicates/state.js","webpack:///./album/customer/duplicates/duplicates.html","webpack:///./album/customer/tasks/state.js","webpack:///./album/customer/tasks/tasks.html","webpack:///./album/customer/mt/state.js","webpack:///./album/customer/mt/mt.html","webpack:///./album/options/all/ctrl.js","webpack:///./album/options/optionpackages/ctrl.js","webpack:///./album/options/optionpackages/package/ctrl.js","webpack:///./album/options/option/ctrl.js","webpack:///./album/options/option/index/ctrl.js","webpack:///./album/options/option/pricecalc/ctrl.js","webpack:///./album/options/option/amountcalc/addcomponent.js","webpack:///./album/options/option/amountcalc/importcomponents.js","webpack:///./album/options/option/amountcalc/ctrl.js","webpack:///./album/options/option/amountcalc/addcomponent.html","webpack:///./album/options/option/amountcalc/importcomponents.html","webpack:///./album/options/option/sectiontypes/ctrl.js","webpack:///./album/options/option/sections/ctrl.js","webpack:///./album/options/view/ctrl.js","webpack:///./album/options/option/documents/projmodels.js","webpack:///./album/options/option/documents/ctrl.js","webpack:///./album/options/option/documents/projmodels.html","webpack:///./main/states/options.js","webpack:///./album/options/state.js","webpack:///./album/options/options.html","webpack:///./album/options/all/state.js","webpack:///./album/options/all/all.html","webpack:///./album/options/optionpackages/state.js","webpack:///./album/options/optionpackages/packages.html","webpack:///./album/options/optionpackages/package/state.js","webpack:///./album/options/optionpackages/package/package.html","webpack:///./album/options/option/state.js","webpack:///./album/options/option/option.html","webpack:///./album/options/option/index/state.js","webpack:///./album/options/option/index/index.html","webpack:///./album/options/option/pricecalc/state.js","webpack:///./album/options/option/pricecalc/pricecalc.html","webpack:///./album/options/option/amountcalc/state.js","webpack:///./album/options/option/amountcalc/amountcalc.html","webpack:///./album/options/option/sectiontypes/state.js","webpack:///./album/options/option/sectiontypes/sectiontypes.html","webpack:///./album/options/option/sections/state.js","webpack:///./album/options/option/sections/sections.html","webpack:///./album/options/view/state.js","webpack:///./album/options/view/view.html","webpack:///./album/options/option/documents/state.js","webpack:///./album/options/option/documents/documentscomponent.html","webpack:///./album/contacts/ctrl.js","webpack:///./album/contacts/contact/ctrl.js","webpack:///./album/contacts/contact/index/ctrl.js","webpack:///./album/contacts/contact/notes/ctrl.js","webpack:///./album/contacts/contact/documents/ctrl.js","webpack:///./album/contacts/contact/projects/ctrl.js","webpack:///./album/contacts/contact/registrations/ctrl.js","webpack:///./album/contacts/contact/contactpersons/ctrl.js","webpack:///./main/states/contact.js","webpack:///./album/contacts/state.js","webpack:///./album/contacts/contacts.html","webpack:///./album/contacts/contact/state.js","webpack:///./album/contacts/contact/contact.html","webpack:///./album/contacts/contact/index/state.js","webpack:///./album/contacts/contact/index/index.html","webpack:///./album/contacts/contact/notes/state.js","webpack:///./album/contacts/contact/notes/notes.html","webpack:///./album/contacts/contact/projects/state.js","webpack:///./album/contacts/contact/projects/projects.html","webpack:///./album/contacts/contact/registrations/state.js","webpack:///./album/contacts/contact/registrations/registrations.html","webpack:///./album/contacts/contact/documents/state.js","webpack:///./album/contacts/contact/documents/documents.html","webpack:///./album/contacts/contact/contactpersons/state.js","webpack:///./album/contacts/contact/contactpersons/contactpersons.html","webpack:///./album/aberrations/ctrl.js","webpack:///./album/aberrationactions/ctrl.js","webpack:///./album/aberrations/aberration/ctrl.js","webpack:///./album/aberrations/aberration/index/ctrl.js","webpack:///./album/aberrations/aberration/actions/ctrl.js","webpack:///./album/aberrations/aberration/comments/ctrl.js","webpack:///./album/aberrations/aberration/actions/action/convert.js","webpack:///./album/aberrations/aberration/actions/action/ctrl.js","webpack:///./album/aberrations/aberration/actions/action/convert.html","webpack:///./main/states/aberration.js","webpack:///./album/aberrations/state.js","webpack:///./album/aberrations/aberrations.html","webpack:///./album/aberrationactions/state.js","webpack:///./album/aberrationactions/aberrationactions.html","webpack:///./album/aberrations/aberration/state.js","webpack:///./album/aberrations/aberration/aberration.html","webpack:///./album/aberrations/aberration/index/state.js","webpack:///./album/aberrations/aberration/index/index.html","webpack:///./album/aberrations/aberration/actions/state.js","webpack:///./album/aberrations/aberration/actions/actions.html","webpack:///./album/aberrations/aberration/comments/state.js","webpack:///./album/aberrations/aberration/comments/comments.html","webpack:///./album/aberrations/aberration/actions/action/state.js","webpack:///./album/aberrations/aberration/actions/action/action.html","webpack:///./album/tasks/all/ctrl.js","webpack:///./album/tasks/taskview/completetask.js","webpack:///./album/tasks/taskview/ctrl.js","webpack:///./album/tasks/taskview/completetask.html","webpack:///./album/tasks/taskedit/ctrl.js","webpack:///./album/tasks/followup/prospect/ctrl.js","webpack:///./album/tasks/followup/viewing/ctrl.js","webpack:///./album/tasks/mytasks/tasksByCategoryChart.js","webpack:///./album/tasks/mytasks/myTasksModalCtrl.js","webpack:///./album/tasks/mytasks/ctrl.js","webpack:///./album/tasks/mytasks/calendar.js","webpack:///./album/tasks/mytasks/myTasksModal.html","webpack:///./main/states/task.js","webpack:///./album/tasks/all/state.js","webpack:///./album/tasks/all/all.html","webpack:///./album/tasks/taskview/state.js","webpack:///./album/tasks/taskview/taskview.html","webpack:///./album/tasks/taskedit/state.js","webpack:///./album/tasks/taskedit/taskedit.html","webpack:///./album/tasks/followup/prospect/state.js","webpack:///./album/tasks/followup/prospect/prospect.html","webpack:///./album/tasks/followup/viewing/state.js","webpack:///./album/tasks/followup/viewing/viewing.html","webpack:///./album/tasks/mytasks/state.js","webpack:///./album/tasks/mytasks/mytasks.html","webpack:///./album/orders/ctrl.js","webpack:///./album/orders/order/ctrl.js","webpack:///./album/components/ctrl.js","webpack:///./album/components/component/ctrl.js","webpack:///./album/components/component/index/ctrl.js","webpack:///./album/components/component/processes/ctrl.js","webpack:///./album/prospects/ctrl.js","webpack:///./album/search/ctrl.js","webpack:///./album/profile/index/ctrl.js","webpack:///./album/profile/favorites/ctrl.js","webpack:///./album/profile/notifications/ctrl.js","webpack:///./album/securecontracts/ctrl.js","webpack:///./album/budget/add/step1.js","webpack:///./album/budget/ctrl.js","webpack:///./album/budget/add/step1.html","webpack:///./album/contractanalysis/ctrl.js","webpack:///./main/states/misc.js","webpack:///./album/orders/state.js","webpack:///./album/orders/orders.html","webpack:///./album/orders/order/state.js","webpack:///./album/orders/order/order.html","webpack:///./album/components/state.js","webpack:///./album/components/components.html","webpack:///./album/components/component/state.js","webpack:///./album/components/component/component.html","webpack:///./album/components/component/index/state.js","webpack:///./album/components/component/index/index.html","webpack:///./album/components/component/processes/state.js","webpack:///./album/components/component/processes/processes.html","webpack:///./album/prospects/state.js","webpack:///./album/prospects/prospects.html","webpack:///./album/search/state.js","webpack:///./album/search/search.html","webpack:///./album/profile/state.js","webpack:///./album/profile/profile.html","webpack:///./album/profile/index/state.js","webpack:///./album/profile/index/index.html","webpack:///./album/profile/favorites/state.js","webpack:///./album/profile/favorites/favorites.html","webpack:///./album/profile/notifications/state.js","webpack:///./album/profile/notifications/notifications.html","webpack:///./album/securecontracts/state.js","webpack:///./album/securecontracts/securecontracts.html","webpack:///./album/budget/state.js","webpack:///./album/budget/budget.html","webpack:///./album/contractanalysis/state.js","webpack:///./album/contractanalysis/contractanalysis.html","webpack:///./main.js","webpack:///external \"jQuery\""],"names":["api","content","__esModule","default","module","i","options","exports","locals","___CSS_LOADER_API_IMPORT___","___CSS_LOADER_GET_URL_IMPORT___","___CSS_LOADER_URL_IMPORT_0___","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_URL_IMPORT_8___","___CSS_LOADER_URL_IMPORT_9___","___CSS_LOADER_URL_IMPORT_10___","___CSS_LOADER_URL_IMPORT_11___","___CSS_LOADER_URL_IMPORT_12___","___CSS_LOADER_URL_IMPORT_13___","___CSS_LOADER_URL_IMPORT_14___","push","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","hash","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","___CSS_LOADER_URL_REPLACEMENT_8___","___CSS_LOADER_URL_REPLACEMENT_9___","___CSS_LOADER_URL_REPLACEMENT_10___","___CSS_LOADER_URL_REPLACEMENT_11___","___CSS_LOADER_URL_REPLACEMENT_12___","___CSS_LOADER_URL_REPLACEMENT_13___","___CSS_LOADER_URL_REPLACEMENT_14___","___CSS_LOADER_URL_REPLACEMENT_15___","___CSS_LOADER_URL_REPLACEMENT_16___","___CSS_LOADER_URL_REPLACEMENT_17___","navigation","pageURL","target","useAppRouting","useMultipleAppRouting","toString","openIn","indexOf","window","open","albumAddress","vueAddress","msalService","$http","$rootScope","store","$log","uibPaginationConfig","$location","$transitions","$state","$interpolate","$timeout","amMoment","toastr","albumBrowser","$q","$confirm","userApi","albumConfig","$on","console","info","location","href","acquireTokenSilent","applicationConfig","userProfileScopes","then","response","catch","error","loginRedirect","idToken","localStorage","getItem","length","setItem","removeItem","getHclConnectionsAuthenticated","data","authenticated","hclConnectionsLoginModal","userId","result","res","postHclConnectionsAuthentication","user","password","r","title","text","hideCancel","status","logout","profile","get","getExternalAddress","id","type","path","apiAddress","host","undefined","updateBreadcrumbsArray","resolves","currentState","$current","titleFromData","titleText","titleFromAData","aData","name","customBreadCrumb","checkListContext","titleTextField","cbcRaw","clcRaw","cbc","JSON","parse","clc","breadcrumbs","map","p","route","key","displayName","value","param","b","findIndex","routeExternal","protocol","hostname","ppId","sectionId","customBreadCrumbs","crumbsRaw","crumbs","Sentry","username","albumUserName","email","fullName","firstName","isMsie","ie","moment","locale","changeLocale","firstText","previousText","nextText","lastText","defaultErrorHandler","detail","warn","onError","transition","msg","warning","errorMessageWords","toLowerCase","split","startsWith","onSuccess","trans","fn","tokens","promises","toState","to","getResolveTokens","token","resolved","injector","all","hideBreadCrumb","$","removeClass","searchPageInput","headerSearchInput","val","cleanSearchInput","attr","addClass","$urlRouterProvider","$httpProvider","dynamicNumberStrategyProvider","toastrConfig","uiSelectConfig","uibDatepickerConfig","uibDatepickerPopupConfig","stConfig","$locationProvider","jwtOptionsProvider","$qProvider","AnalyticsProvider","otherwise","$injector","url","setAccount","setPageEvent","theme","refreshDelay","angular","extend","timeOut","preventOpenDuplicates","inputEvent","search","errorOnUnhandledRejections","pagination","template","sort","skipNatural","delay","pipe","startingDay","showWeeks","showButtonBar","datepickerPopup","config","unauthenticatedRedirector","whiteListedDomains","tokenGetter","prefix","document","cookie","decodeURIComponent","getCookieByPrefix","interceptors","addStrategy","numInt","numFract","numSep","numPos","numNeg","html5Mode","$localForage","require","priority","link","scope","element","ctrl","nameSpace","stPersist","$watch","tableState","newValue","oldValue","err","savedState","idArray","colName","idColumnName","getFilteredCollection","saveBlob","blob","fileName","saveAs","saveFile","applicationType","contentType","Blob","navigator","userAgent","match","fileUrl","URL","createObjectURL","commonApi","$uibModal","exportController","$uibModalInstance","searchApi","linkObj","modalvm","this","columns","header","columnsfromheader","closest","find","hiddenColumns","forEach","hc","formatting","width","breakText","headerText","trim","exportCol","dataKey","exportFormat","x","footerRowColumns","td","footerTemp","c","toExport","rows","footer","cancel","close","ok","bind","controllerAs","size","controller","resolve","modalExportWin","er","values","exportTable","restrict","replace","transclude","tag","nodeName","elem","column","index","hidden","stToggleColumn","registerElem","newVal","newColumn","stateIn","$window","col","visible","toggleHide","reset","reload","modalWin","stToggleMenu","state","showMenu","newState","json","toJson","attrs","filterEmpty","isEmpty","predicateObject","copy","contextObject","projectOid","customerOid","lineStatus","hasClass","toggleClass","$apply","start","ngModel","$parsers","parseInt","$formatters","modelCtrl","input","isValid","Date","transformedInput","$setViewValue","$render","$parse","cutFilter","chars","$set","cutText","textArea","scrollHeight","style","height","autoExpand","trigger","$compile","elmnt","$observe","myTemplate","isDefined","html","append","args","read","validate","modelKey","getModelKey","opts","opt","o","$modelValue","convertNewLines","onlyText","parseHtml","ngMaxlength","ngMinlength","$setValidity","$viewValue","Hammer","defaults","cssProps","userSelect","directive","stIdArray","stExport","stToggleItem","stResetSearch","convertToNumber","dateModel","compile","$element","clickIf","pre","on","event","callback","$event","stopImmediatePropagation","preventDefault","$$phase","$evalAsync","post","albumTruncate","albumDate","$scope","dateFilter","$onInit","shortDate","longDate","elm","e","tagging","isActivated","activeIndex","select","items","compileData","contenteditable","swipeSidemenu","tapNavbar","tapContent","tapBreadcrumb","hammerHandle","toggleMobileMenu","toggleHammer","enable","set","mobileActivated","body","breadcrumb","querySelector","sidemenu","querySelectorAll","mobileMenuIcon","classList","remove","add","navbar","contains","mobileButton","after","stateOpt","stateParams","uiSref","closeMenu","icon","toggle","$document","iElement","startX","startY","y","modalContent","parent","mousemove","pageY","pageX","css","top","left","mouseup","unbind","position","attachmentApi","stopPropagation","downloadAttachment","guid","blobid","ibmApi","uuid","download","scrollY","display","globalSearch","sr","headerSearch","searchContactPersons","s","searchMode","searchContactPersonsExists","searchComponents","searchContacts","searchProjects","searchPostCodes","addToHistory","sh","cnt","timestamp","unix","dropDownSearch","dds","searchCustomers","getPhaseAndProject","previewMerge","mergeReq","saveLetter","method","responseType","transformResponse","transformDownload","createMergedDocument","file","mergeRequest","fd","FormData","stringify","transformRequest","identity","headers","updateMergedDocument","finalizeMailMerge","downloadFileFromServer","mergeFields","mergeAndDownload","documents","checkRecipients","recipients","createFolder","folder","createSubFolder","replacePdfRefs","listOfRefs","houseId","replaceRequest","listOfPdfRefs","replaceAllPdfRefs","scheduleId","replaceHousePdfRefs","browseConnections","projectId","getContactDocuments","contactId","getContactPersonDocuments","contactPersonId","downloadDocuRef","docuRefId","projCust","today","tomorrow","setDate","getDate","projectName","customerPersonFullName","date","time","sendSms","customerAcceptSms","customerPerson","acceptSms","smsNumber","mobile","taskGuid","uuidv4","$watchGroup","newVals","viewingTime","getDateTime","formattedDate","format","calLink","smsText","dateTime","viewing","assignedTo","assignedToContactPerson","deadLine","projTable","customerId","custTable","projCustomerId","postCodeId","projectPostCodeId","address","projectAddress","taskType","note","description","sections","selectSection","section","selectedSection","customerApi","validEmailFilter","$context","behavior","entering","entered","convertCustomerData","personalities","financeStatuses","responsibles","salesResponsible","salesRep","projCustomerContractType","mtUser","secondaryOwners","leaving","forward","projCustomerCustomerPersonEmail","addSecondaryCustomer","removeSo","so","soCheck","valid","lastName","num","invalid","filter","iso","salesRepNotSelected","contractDateNotSet","projCustomerContractSigned","addReservation","array","isActive","concat","reservations","removeReservation","splice","$wizard","convertToBuySectionRequest","soList","pNumber","share","person","middleName","birthDate","phone","moveInDate","projCustomerProjSectionMoveInDate","contractTimeLimit","projCustomerContractTimeLimit","contractType","contractSigned","contractReservation","projCustomerContractReservation","contractReservationTxt","projCustomerContractReservationTxt","contractReservationDeadLine","projCustomerContractReservationDeadLine","contractReservationTH","projCustomerContractReservationTH","contractReservationTxtTH","projCustomerContractReservationTxtTH","contractReservationDeadLineTH","projCustomerContractReservationDeadLineTH","projCustomerCustomerPersonFirstName","projCustomerCustomerPersonMiddleName","projCustomerCustomerPersonLastName","projCustomerCustomerPersonPhone","projCustomerCustomerPersonMobile","projCustomerCustomerPersonAddress","postCodeFromWizard","name2","projCustomerCustomerName2","pnumber","projCustomerCustomerPNumber","pnumber2","projCustomerCustomerPNumber2","phone2","projCustomerCustomerPhone2","email2","projCustomerCustomerEmail2","gapVisionPersonalityType","projCustomerCustomerGapVisionPersonalityType","createMtUser","contractMeetingTask","createContractMeetingTask","sectionAndCustomerString","projectPhaseProjectName","contractMeetingDateTime","finances","loanType","financeStatus","financeHB","financeHBDate","amount","hbLoan","financeStart","financeStartDate","startLoan","financePrivate","privateLoanDate","privateLoan","getSectionAberrations","getSectionOptions","getAvailableSectionOptions","getOptionsIsAvailableForMt","changeContracts","changeContract","contractId","getSectionChange","changeId","saveChange","change","saveContract","contract","getSectionList","reserveSection","buySection","modalRes","bsr","leaveSection","cancelContract","cancelDate","canceledDate","createSectionOptions","projSectionOptions","addPackageToSection","addPackageToSectionRequest","createSections","req","getOption","sectionOptionId","deleteSection","saveSection","deleteChange","deleteContract","deleteOption","option","confirmOptions","projSectionId","changeOptionPrice","arrangeViewingModal","arrangeViewingCtrl","reserveSectionModal","albumReserveSectionCtrl","projectApi","getProjectWithSections","buySectionModal","deferred","defer","projCustomerCustomerPersonPostCodeId","projCustomerProjSectionId","$new","shadow","successing","$data","$step","$isLastStep","addStep","albumBuySectionStep1Ctrl","albumBuySectionStep2Ctrl","albumBuySectionStep3Ctrl","albumBuySectionStep4Ctrl","noop","promise","saveSalesContract","getSettlement","saveSettlement","settlement","getDocuments","sectionid","saveFinances","getBulkEditSections","acceptChangeContract","saveParkingLot","parkingLot","deleteParkingLot","getProtocols","getAcquisitionProtocol","protocolId","getNewAcquisitionProtocol","saveAcquisitionProtocol","regLines","line","transformAttachments","attachments","timeout","downloadAcquisitionProtocol","getPreInspectionProtocol","getNewPreInspectionProtocol","savePreInspectionProtocol","aberrationActions","aberrationAction","downloadPreInspectionProtocol","getNewOneYearInspectionProtocol","saveOneYearInspectionProtocol","getOneYearInspectionProtocol","getOneYearInspectionProtocolRegistrations","downloadOneYearInspectionProtocol","getCustomer","saveSectionCustomer","projCustomer","addSectionCustomer","addCustomerToSection","request","getMyContractDocuments","postMyContractDocuments","deleteMyContractDocument","delete","getTrafficLights","hideLoader","getBulkEditData","saveSections","acceptSectionOffer","rejectSectionOffer","downloadSectionOffer","swapSection","from","fromSection","toSection","postAttachmentsToBuffer","attachment","bufferGuid","formData","getSectionColorOptions","getSectionColorOptionsReady","deleteColorOption","colorOption","confirmColorOptions","changeColorOptionPrice","imageUrl","companyContactPersons","addProjectContact","removeProjectContact","projContactId","exportContactList","projcontacts","getProjContact","updateProjContact","projContact","validateProjectContact","getContactPersonsDictionary","getContactPersons","getContactPerson","updateContactPerson","cp","createContactPerson","getContacts","getContact","updateContact","contact","deleteContact","getContactGroups","getContactPersonsList","updateContactPersonB","deleteContactPerson","contactPerson","mergeDuplicates","duplicates","contactPersonRelationUpsert","contactpersonrelation","cache","isNumber","profileModal","albumProfileImageCtrl","getContactProjects","getContactPersonCourses","postContactPersonCourse","contactPersonCourse","deleteContactPersonCourse","contactPersonCourseId","getContactVendors","companyDeactivatedContactPersons","companyActivateContactPersons","put","companyDeactivateContactPerson","changeIsBTAdmin","templateApi","disableTransform","excludeSectionTemplate","some","showSectionTemplate","getTemplates","templates","applyTemplate","readyToSend","sentStatus","tapToDismiss","questionAnswered","getProjCust","projCustId","getCustomerFromProjCustomer","getCustomersPaged","createCustomer","customer","validateCustomer","createProjCust","updateCustomer","getCustomerDocuments","getCustomerBlobDocuments","getTasks","getSecureContracts","setGuarantee","securecontract","getProspects","mergeCustomer","duplicateId","mergeIntoId","setCustomerRating","rating","setCustomerFollowUp","notFollowUp","deleteProjCust","smsRequest","openSmsModal","number","sendsms","deleteCustomer","findCustomerByMobile","findExistingCustomer","acceptOffer","rejectofferhtml","backdrop","rejectoffer","rejectOffer","houseApi","schedules","displayCollection","processPhases","uniqBy","t","phaseId","phase","tt","scheduleFilter","sch","processName","responsible","nameFilter","responsibleFilter","phaseIdFilter","selectedPhase","processNameFilter","responsiblePersonFullNameFilter","selectAll","selectAllVisible","deleteAllVisible","filtered","isTask","responsiblePersonFullName","deleteTask","toggleSelect","createTask","deleteAllTasks","completeSubTask","subTask","completeTask","task","completeProspectTask","completeViewingTask","getTask","taskId","getTasksPaged","saveTask","getContactPersonTasks","getCustomerTasks","getProjectTasks","getSectionTasks","getTaskExternal","getAllMyTasks","generateTasksModal","generateTasksctrl","versionLog","process","save","updates","context","regSources","regline","setTimeout","getElementById","focus","setResponsible","item","regLine","schedule","setDuration","ms","endDate","startOf","diff","startDate","duration","asDays","changeOperation","changeDuration","newDuration","toDate","changeDate","days","m","aberration","category","desc","validated","subject","aberrationData","aberrationApi","validateAberration","pwd","pwdInput","users","haveRole","comment","visibleToCustomerCheckboxVisible","commentType","visibleToCustomer","u","label","newTags","newComment","userTagged","personId","tags","projCustomers","first","head","changeRating","probability","factory","documentApi","sectionApi","contactApi","taskApi","getCalendar","downloadEml","history","getComponents","getComponent","compId","saveComponent","component","setComponentInactive","getComponentsKeyValue","generateId","contentLength","cd","contentDisposition","parameters","filename","newData","fileSize","getProjectCustomers","getProject","getProjects","upsertProject","project","getProjectList","getSections","getSection","projId","getOrganization","upsertProjOrganization","po","importProjOrganizations","getInfo","updateInformation","importContactList","fromProjectId","toProjectId","exportProjOrganization","dto","updateProjOrganizationPermissions","getBluePrints","downloadBluePrints","getOptions","projectOptionId","getAberrations","gnrsAndBnrs","updateProjId","loadImage","postNewsletter","projectNewsletter","parentProjectList","getInfotechProjects","getCrewRegistrations","getCrewAccess","putCrewRegistration","projCrewRegistration","deleteCrewAccess","hmsCardNumber","getCrewAccessOrgData","crewAccessList","exportCrewRegistrations","getPsiAcceptedDate","getPsiAccepted","getMinutes","getMinute","minuteId","populateRecipients","updateMinute","minute","updateMinuteRequest","participants","minuteRegistrations","registrationLines","createMinute","createMinuteRequest","downloadMinute","projAberrations","aberrations","downloadAllMinutes","deleteMinute","sendMinute","addMinuteHeader","deleteHeader","updateHeader","addLine","deleteLine","updateLine","getLog","imagesTypesSupported","openFileViewerModal","files","carousel","exportObj","a","newAttachment","k","filetype","validateEmail","str","test","updateNotes","noteReq","getParameters","getAllMeetings","getAppointment","encodeURIComponent","calcDeliveryDate","scheduleStartDate","dm","subtract","weekday","isAfter","getWeekNumber","d","isoWeekYear","isoWeek","getModuleTypes","projType","getAccounts","getFinanceStatuses","getProfile","getBlogs","getNewsfeed","feedLimit","hiddenGroups","getDefinitions","downloadOrOpen","includes","getRegLines","getBCProjects","getBCProjectLines","completeEventProcess","getEventProcess","eventId","plannedProcesses","getProcesses","getProcess","getPermissions","roles","projTypeId","tradeCodeId","edit","approve","permissions","tcp","getReadProcess","getProcessActivities","getProcessComponents","saveNewVersion","askApproval","saveProcess","approveVersion","downloadProcessDocument","getSchedules","processId","deleteProcess","addProcessData","getProcessComponentCalculations","processComponentId","createProcessComponent","deleteProcessComponent","updateProcessComponent","updateModuleCalculations","calculations","toggleActive","updateProcessesModal","updateProcessVersionCtrl","versionLogModal","originalId","versionLogCtrl","planEventData","addPlannedEvent","plannedEvent","updateProcessesToLastVersion","prepareUpdateProcessesToLastVersion","getLinkedProcesses","addRegLine","saveNewReg","getNewRegLine","regHeaderId","getRegLine","getRegistration","getRegistrations","getRegistrationLine","regOid","regLineId","getLines","getRegistrationContactPersons","validateRegistrationLine","projRegistrationId","saveRegistrationLine","updateReg","saveRegistration","registration","downloadRegLineWorkOrder","downloadAttachments","downloadImages","exportExcel","tableData","exportWorkOrders","exportWorkOrdersFromLines","lines","sendReminder","getRegLineLog","getRegistrationsOpen","createFromChecklistItem","regLineModal","reglineCtrl","att","container","upload","blobs","deleteBlobs","getOrders","getOrder","orderId","GeneratePdf","orders","contactInformation","neworder","contactInformations","createOrder","contactPersonName","contactPersonMobile","orderRequest","projPhase","getOrderLinesNotOrdered","orderDate","postpone","downloadOrderPdf","postReceivedGoods","orderLines","subscription","saveBudget","budget","getBudget","yr","addBudget","searchContracts","deleteBudget","exportContracts","contracts","exportCancelations","cancelations","getActivity","activityId","activityUrl","updateActivity","legacyActivity","activity","deleteActivity","reArrangeActivities","updateReq","getScheduleActivities","upsertActivity","scheduleActivityDelete","scheduleActivityUpdate","scheduleActivityAberration","addCopy","duplicate","indexing","addActivityToProcess","getContractOverview","getUnconfirmedContracts","getSalesStats","year","week","getSalesDiagram","getStats","date1","date2","getConfirmedNotDelivered","getControlPlans","salesStatsExport","salesStatsExcel","salesStatsRequest","getRegByAge","getRegByCategory","getRegByCategoryDrilldown","subCategoryId","subCategories","getRegbyContractor","getSectionsMovedin","reportParams","getBonusReport","getConfirmedContracts","getMyDeliveredSections","getProjectFilter","getDailyStats","getUnSoldDelivered","salesReportQuarterly","getProjectPortfolio","sectionsOverviewExcel","componentsOverviewExcel","getProjDocuments","useAlbumUser","getProjDocumentsInFolder","downloadFileFromConnections","deleteFileFromConnections","doc","togglePin","meta","documentId","createCommunity","community","deleteCommunity","getFolderPermissions","uuids","putFolderPermissions","getTradeCodes","getReplicationJobs","postReplicationJob","job","putReplicationJobs","jobs","getReplicationFiles","getFoldersCategories","putFolderCategory","getCommunities","addProjectInfo","searchForOption","getOptionsFromPool","getOptionPackages","getOptionPackage","packageId","updateOptionPackage","pckage","optionId","saveOption","saveOptionPoolCalc","optionCalc","saveProjectOptionCalc","saveSectionOptionCalc","getOptionComponents","saveComponents","components","createOptionPackage","deleteOptionPackage","createOption","setPriceCalc","costCalcs","amountEnt","amountPercentageEnt","amountPercentageSales","amountSales","amountTax","price","recommendedPrice","NaN","cost","sum","oc","qty","copyOptionsFromPool","toCopy","poolOptionsIds","updateOptionsFromPool","saveOptionSectionTypes","sectionTypes","deleteProjectOption","deleteAllCalculations","addProcess","removeProcess","processOption","preview","removeOptionFromPackage","addOptionToPackage","getOptionDocuments","deleteOptionDocument","blobId","putOptionDocumentProjModels","projModels","getAllHouses","getHouses","getHouse","projPhaseId","getSectionsInHouse","updateHouse","house","deleteHouse","createHouse","getMountDate","updateLastUpdatedScheduleDate","getChanges","exportOptions","sectionOptions","exportChanges","changes","getPhaseColorOptions","getPhaseOptionsAndChanges","getPhaseInvoice","getHouseDocuments","houseid","getHouseSchedule","downloadScheduleAsPdf","seRequest","getModulesInHouse","getFdv","folderId","getModules","includeinactive","updateModule","insertModule","upsertProjPhaseModule","ppm","saveModulesOnSections","getSchedule","updateSchedule","ps","insertSchedule","updateResponsibleHouseSchedule","updateResponsibleProjectSchedule","updateScheduleResponsible","importSchedules","addDays","fromHouse","toHouse","complete","deleteSchedule","deleteAllSchedules","downloadControlSchemas","downloadOrders","setScheduleModal","setScheduleCtrl","moveSchedule","msr","getSummary","exportActivitiesPdf","wrikeProjects","wrikeImport","wrikeImportSync","wrikeDeleteProject","updateTaskStatus","list","getProjectSchedule","filters","createActivites","getWrikeTask","openWrikeFolder","getProjTypes","getOrderCount","getLastUpdateProject","getLastUpdatePhase","getWrikeImportProjects","getWrikeImportProjectSchedules","getWrikeHouseScheduleTemplates","getWrikeScheduleMilestones","getProcessPhases","editProcessPhase","model","getModels","editModel","getComponentGroups","editComponentGroup","getProjectTypes","editProjectType","pt","getCompanies","editCompany","company","getProcessOwners","editProcessOwner","processOwner","getTradeCode","includeInactive","editTradeCode","tc","toggleTradeCodeActive","getRoles","editRole","role","getUsersInRole","updateUsersInRole","roleId","userInRoles","getUsers","editUser","getSectionTypes","editSectionType","st","editContactGroup","cg","getAberrationCauses","editAberrationCause","getAberrationTypes","editAberrationType","getSmsLog","editDefinition","getFaqs","getFaq","faqId","saveFaq","f","getPostCodeById","getPostCodes","editPostCode","getPrognoseSenteret","addTradeCodeUserRole","tcur","delTradeCodeUserRole","getSystemTasks","runSystemTask","taskrequest","getConsents","editConsent","getOptionCategory","getOptionCategories","getOptionCategoryResources","editOptionCategoriesOrder","optioncategories","editOptionCategory","getPlanResources","editPlanResource","deletePlanResource","getProjAccounts","putProjAccount","projAccount","deleteProjAccount","getReglinecategories","regLineCategoryDelete","regLineCategoryAdd","regLineCategoryUpdate","getAlbumsettings","updateAlbumSetting","setting","deleteAlbumSetting","getBusinessCentralCompanies","getAberration","aberrationParams","insertUpdateAberration","allAberrationActions","getActions","aberrationId","getAction","actionId","saveAction","action","aberrationModal","aberrationCtrl","Object","assign","aberrationEmail","albumAberrationEmailCtrl","aberrationModalFull","preSelect","albumAberrationModalCtrl","downloadAberration","includeImages","deleteAberration","deleteAction","convertToRegLine","regLineCategoryId","$cacheFactory","deleteCache","removeAll","haveAnyRoleRequired","userRoles","intersection","authorized","rolesRequired","reject","haveAllRolesRequired","getUserInfo","updateProfile","profileUpdateReq","updateFavorites","favorites","slackTest","updateNotficationSettings","getExternalUser","domain","externalUserId","getExternalUserSignIns","createExternalUser","changeExternalUser","externalUser","changePasswordEmail","deleteExternalUser","getPersonProfile","updatePermissions","checkExternalUser","getFavorites","login","loginrequest","getCalendarCode","loginPopupCtrl","xhrCreations","xhrResolutions","updateStatus","loading","requestError","rejection","responseError","validationErrors","isString","allowHtml","forOwn","mi","reader","FileReader","onload","readAsText","exceptionType","isDev","priceCalc","taxPercent","amountToBeTaxed","Math","round","Number","amountIncludedTaxed","calcSalesAmount","salesPercentage","dynamicPrice","percent","recommenedPrice","pc","calcEntAmount","entPercentage","calcEntPercentage","entAmount","calcSalesPercentage","salesAmount","calcSalesAmountAndPercentage","commentModal","commentCtrl","saveComment","getComments","setCommentAnswered","toggleCustomerVisibility","book","folderGuid","getProcessPhase","uploadKsFile","downloadKsFile","getContextId","checklist","editChecklist","checklistId","SaveChecklistAbrrebationActions","checklistItemDto","GetChecklistAbrrebationActions","checklistRequest","getChecklists","getChecklist","saveChecklist","saveChecklistInContext","getSectionChecklists","getSectionMultipleChecklists","saveMultipleChecklist","deleteCheckList","deleteChecklistItem","getChecklistsFilled","downloadPdf","checkListId","signature","base64Signature","getProjectChecklists","getHouseChecklists","getChecklistItemTypes","removeBluePrintCache","postVisibleToCustomer","noteModal","noteObj","albumNoteCtrl","getNotes","addNote","editNote","deleteNote","getTypes","getRules","postRule","rule","putTemplate","templateDto","deleteTemplate","templateId","getBarracksProject","getBarracksProjectsOptions","addBarrackProject","editBarrackProject","moveBarrackProject","getBarrackProjectBookings","getBarrackProject","barracksProjectsId","delBooking","bookingId","communities","breadCrumb","selectedCommunity","selectedFolder","folderList","folderName","selectedFolderPath","currentFolderPath","communityChanged","folders","fileList","ibmItemType","folderChanged","substring","join","replJobs","deleteJob","jobStatus","uploader","clearQueue","documentTypes","documentTypesMultiple","checkMultiple","documentTypeSupportMultiple","dt","documentType","docs","ibmItem","folderUuid","folderPermissions","folderPermission","inheritedFromPath","active","canEditPermissions","tradeCodes","toogleActive","tradeCode","connectionsFolderId","removedPermissions","tradeCodesAvailable","permission","inActive","categories","categorySelected","bindings","blobDocuments","myContract","onUpdate","appendBodyClass","showToggleTagged","$stateParams","FileUploader","env","isCustomerDocuments","isSectionDocuments","blobDocs","myContractDocuments","useMyContract","myContractDocumentTypes","myContractDocumentTypesMultiple","communityId","folderType","showConnectionsButton","showDeleteCommunity","showCreateCommunity","showUpload","connectionUserId","showDelete","showPin","loadingPermissionList","loadingReplicationJobs","permissionList","replJobsText","sourceFolderUuid","j","targetProject","targetUuid","sourceProjectName","sourceFolderPath","cat","folderCategories","folderCategory","categoryName","removeAfterUpload","Authorization","onCompleteItem","success","message","addFolder","addfolderctrl","collectionId","onAfterAddingAll","addedItems","modalIsOpen","uploadFile","onCompleteAll","onBeforeUploadItem","formDataTags","taggedFilter","toggleTaged","isTagged","navigate","bc","root","go","getters","bytes","row","totalMediaSize","moveToMyContractAllowed","mergeAllowed","toMerge","mergeAbleExtensions","mergeAble","extension","moveToMyContract","mycontractctrl","openMyContractModal","downloadMyContractDocument","openMyContractDocument","newWindow","uploadhtml","uploadctrl","openUploadModal","queue","inputTags","uploadAll","favorite","browseFolder","openFileInConnection","editPermissions","editpermissionsctrl","addReplicationJob","addReplJobCtrl","openAddReplicationJobModal","sourceProjTable","targetFolderUuid","targetProjTable","targetFolderPath","admReplicationJobs","replJobsStatus","admReplJobsCtrl","openAdmReplicationJobsModal","replJob","configureReplJobs","customButtonText","customButtonText2","showCustomButton","showCustomButton2","hideOk","customButtonObj","adminJobs","customButtonObj2","newJob","changeCategory","categoryctrl","openCategoryModal","updateSelected","entry","entries","blueprints","entryHistory","selected","found","selectedItems","persistKey","showCustomer","showProject","showHouse","showSection","hideStatus","registrationApi","systemApi","currentTableState","currentTableData","createContextTableData","page","itemsPerPage","predicate","sortBy","sortDesc","reverse","filterClause","filterName","filterValues","openOnly","lineId","lineName","customerName","createdBy","closedBy","boost","regSource","lineDate","day","month","dd","mm","yy","colspanFooter","nav","openDatePicker","currentTarget","attributes","setDateFilter","companies","disableAdd","workorders","export","showAll","sectionOid","contactPersonOid","createContextSearch","registrations","numberOfPages","totalPages","totalItemCount","insertNew","navReg","lineOid","navProject","placeholder","isDisabled","textBoxOnly","tbSize","colValue","colChanged","temp","houseCompleted","milestonesInfo","lastMilestone","create","completed","lastid","salesRates","weekRate","rate","count","sold","atticCount","projSections","reservedStatus","attic","soldPct","allSold","bulkData","modules","moduleId","modelId","houseModelId","types","reason","customerHaveAddress","removeRecipient","removeR","downloadMergeFields","templateChange","previewId","previewChange","mergeTemplate","image","warnings","missingData","md","isCustom","missingDataHeader","maxBy","copyMissingData","keyIn","send","saveAsPdf","mergeFormat","checklists","checklistApi","contactPersons","checklistsSelected","deadline","showAdd","onAdd","showChecklist","getRecipients","startOfDay","projCustomerCustomerPersonFullName","customers","customers2","acceptEmail","projCustomerCustomerPersonAcceptEmail","acceptNewsLetter","projCustomerCustomerPersonAcceptNewsLetter","projCustomerCustomerPersonAcceptSms","projCustomerCustomerId","sectionNum","tableSettings","defaultTableSettings","allSelected","sectionTypeName","sectionTypeId","projectPhaseProjTable","availableForSale","openCart","editctrl","selectOne","anyNotSelected","createLetter","mergeletterctrl","openMergeModal","createSms","createEmail","bccString","mailTo","anySelected","addSections","addChecklist","onAddChecklist","currentCustomers","addchecklistctrl","contactperson","displayHmsCard","changeProfileImg","openProfileImg","tstamp","getTime","searchContactPerson","contactpersons","newOrder","ourContact","changeContactContactPerson","v","sendTo","errorMessages","contacts","contactList","em","orderApi","allowSendChanged","disableFinishButton","enableFinishButton","generatePdf","searchmode","query","newProjComponent","projComponent","allowEdit","currentUser","thUsers","scheduleApi","wizardPlaceOrder","finishTitle","headctrl","contactsctrl","previewctrl","postponeAll","ordered","orderFilter","hideOrdered","orderedLines","orderIds","uniq","placeOrder","projectPostCode","ordersFiltered","every","vi","vl","orderString","houseNum","processKey","deliveryDate","deliveryAddress","responsiblePersonMobile","responsibleId","addCompModalhtml","addcompmodalctrl","comp","contactInfo","addSubject","added","meassureText","contactName","stopPropagationAll","optionApi","io","optionSearch","getPriceCalc","costCalc","accounts","import","calculatorService","amountIncludedTax","update","amountPercentageEntChanged","changeDescOrAccount","calc","changeCost","cc","importOptionCalc","pricecalcctrl","projOptionCalculations","projAccounts","lastCost","last","addOptionCalc","delOptionCalc","amountEntChanged","amountPercentageSalesChanged","amountSalesChanged","priceChanged","isSavedContactPerson","mode","nextStepId","oldData","contactPersonMode","Promise","isContactPerson","contactPersonExistsctrl","errors","searchContact","contactSearch","goToContactMode2","contactMode","getContactInfo","editInfo","fax","groupId","groups","wiz","contactPerson2","step1ctrl","step2ctrl","step3ctrl","startWizard","allSections","costCentre","costCentreContactName","aberrationTypes","aberrationSeverities","canEditSeverity","aberrationLocations","aberrationStatuses","disable","allowClose","aberrationCauses","projects","houses","initResponsible","aberrationStatus","projectChange","houseChange","causeFilter","aberrationTypeId","h","base64","b64toBlob","pako","compress","hideDelete","hideAdd","addText","resize","spinner","show","addAttachment","lastFileInput","deleteAttachment","attIndex","handleLoadStart","afterValidate","fileObjects","fo","apply","dataCompressed","Uint8Array","atob","charCodeAt","gzip","level","pushAttachment","checkFile","base64_object","filesize","commentApi","comments","addComment","commentStatus","aberrationActionId","disableVisibleToCustomerOperation","setVisibleToCustomer","setMarkedAsAnswered","markedAsAnswered","ext","$sce","blobUrl","removeBlob","revokeObjectURL","docTitle","endsWith","openPdf","pdf","pdfUrl","postCode","previousValue","$doCheck","currentValue","postCodes","starSize","setStar","stars","filled","changeStar","rateThis","removeSection","removeSectionFromProjCust","reservedBy","reservedByProjCust","callPhone","availableChecklists","contextId","editVisibleToCustomer","displayVisibleToCustomer","toogleVisibleToCustomer","ev","chk","confirmText","checklistItemTypes","contextState","bluePrints","bp","actions","totalActions","actionsTypes","aberrationActionTypes","actionSeverities","disabled","discrepancyType","aberrationCategories","showAberrationActionBtn","showAberrationButton","aberrationHelpText","showRegLineButton","regLineHelpText","lineIndexLineId","aberrationActionsHelpText","actionAberrationId","actionsInfo","aberrationCategory","abCategories","daysAgo3","minDate","random","optionSelected","selectedVal","downloadBluePrint","openAberrationActionsModal","checklistItemId","aberrationActionsModal","projSection","timeLimit","aberrationTimeLimit","aberrationActionType","openAberrationModal","checklistItemAberrationRequest","checklistItem","skipQaManagerNotification","openRegLineModal","newReg","projRegistrationProjTable","projRegistrationPhase","projRegistrationSection","regHeaderDate","regHeaderType","regHeaderStatus","checklistItemRegLineRequest","regLineResult","openModalEditItem","editItemModal","modalres","linkedText","Autolinker","txt","replaceFn","documentDownload","buildTag","arr","getAnchorText","linkText","RegExp","setInnerHtml","setAttr","setSelectedOption","downloadFile","checkNumNoDecimal","keyCode","removeFile","itemTypes","showMentio","showOptions","setPosition","mentioMenu","addOption","nextKey","bluePrintTagged","projectList","setCustomerData","selectCustomer","typeSearch","withOutMobile","searchDone","apiResponse","gender","isoProcessTypes","processTypes","processTradeCodes","projTypes","projLines","milestoneTypes","isNewVersion","guarantee","changeEndDate","endDateCopy","changeVendor","vendorCopy","vendor","changeActive","dateCopy","displaynameProperty","abstractProxyProperty","workingState","getWorkingState","getDisplayName","getExternalRouteByWorkingState","getExternalRouteByDisplay","stateAlreadyInBreadcrumbs","proxyStateName","abstract","getObjectValue","propertyReference","interpolationContext","objectPath","propertyArray","alreadyUsed","extRoutes","paths","getCurrentPath","resolvables","promisesResolved","resolveTransition","noteText","noteApi","getStarRange","range","isAllowedToEditPNumer","setBirthDate","orderProjects","updateCrm","hubConnection","stop","signalR","hubUrl","HubConnectionBuilder","withUrl","skipNegotiation","transport","HttpTransportType","WebSockets","withAutomaticReconnect","build","progress","projCustomerIndex","purchaseProgressPercent","purchaseProgressText","hasActivePurchase","crmStatus","projSectionSectionNum","buttons","accept","projCustStatus","purchasingSection","reserve","connectToHub","invoke","projectsOwner","projectsNotOwner","haveReserved","projSectionReservedStatus","notInterested","haveRating","buy","showing","linkTo","parseTwoDigitYear","yearString","realDigits","d1","d2","m1","m2","y1","y2","i1","i2","i3","isWomen","changeBirthDate","uniqPart","substr","datePart","addprojcust","addprojcustctrl","saveToDb","pNumValid","pnum1","pnum2","pNumber2","pNumLength","pNum2Length","pNumberInvalid","isNaN","pNumber2Invalid","validation","addRegline","projSectionProjPhase","followUp","arrangeViewing","convert","sres","sectionToBuy","reservationStatuses","phaseReservations","reservation","isReadOnly","acceptionText","dialogRes","purchaseOfferAcceptionText","rejectionText","salesResponsibleUserInfoContactPersonPersonFullName","purchaseOfferRejectionText","downloadOffer","required","allSubCategories","mainCategories","parentId","subCategorySelected","mainCategorySelected","sc","mainCategory","disableComplete","completedDate","editorOptions","allActivitiesComplete","scheduleCompleted","allTextsExpanded","activityApi","hideBlueprints","allowAdd","updateList","dbActivity","updateActivityText","createAberration","activityLogId","modalAberration","activityOk","openModal","activityLogCtrl","modalActivityLog","modalactivity","activityDuplicate","planEventId","activityAdd","maxIndex","inEditMode","activityDelete","activityUpdate","goToAberration","toggleText","insert","dummyHtml","createElement","innerHTML","getAnchorTagsWithPdfRefs","getElementsByTagName","pdfref","getAttribute","getPdfRefs","dHtml","pdfRefs","innerText","pdfRef","dataset","batchid","pdfRefsInSpans","getSpanTagsWithPdfRefs","pdfRefsInParagraphs","getParagraphTagsWithPdfRefs","pdfRefsFirst","refList","groupBy","handlePdfRefLink","htmlText","links","albumDocuments","albumPdfRefs","albumRegistrations","albumDatePicker","albumEditColumn","albumTextPopup","albumHouseBody","albumSectionTable","albumContactPersonInput","albumOrderTable","albumCalculatePrice","albumContactWizard","albumAberration","albumFileDownload","albumBlobs","albumComments","albumDocIcon","albumPdfViewer","albumFinancesTable","albumCheckBox","albumPostCode","albumRating","albumReserveSection","albumPhone","albumChecklists","albumChecklistItem","albumChecklistItemEdit","albumChecklistRegLine","albumAddCustomer","albumProcessEdit","albumInsuranceRow","albumBreadCrumbs","albumCustomerPage","albumCategoryPicker","albumActivityList","updateText","showHideRefButton","showButton","ele","initEditor","FroalaEditor","DefineIcon","SVG_KEY","FA5NAME","RegisterCommand","editor","replaceRefsCtrl","linksToReplace","newHtml","tagsToReplace","group","initial","nextSibling","nodeType","textContent","outerHTML","toReplace","replacement","oldGroupId","replaceRefs","undo","refreshAfterCallback","htmlContent","selection","bluePrintCtrl","restore","toolbarLast","bearerToken","imageUploadURL","requestHeaders","toolbarButtons","heightMin","heightMax","htmlAllowedAttrs","events","initialized","dropEvent","markers","insertAtPoint","originalEvent","$el","replaceWith","MARKERS","canDo","saveStep","readFilesPromises","uploadFilesPromises","dataTransfer","fr","readAsDataURL","readFile","uploads","blobUploaded","core","hasFocus","browser","mozilla","disableBlur","blur","enableBlur","contentChanged","loadImg","haveData","noBlob","readImg","oldActiveFile","newActiveFile","delActive","activeFile","minInputLength","searched","results","changed","translations","doNotCapitalize","charAt","toUpperCase","slice","min","max","precision","parseFloat","isFinite","floor","log","pow","toFixed","$filter","decimals","mult","n","mimetypecoll","linkForType","fileLinks","rel","el","mime","fileCount","debug","total","allBudgets","budgets","cb","january","february","march","april","may","june","july","august","september","october","november","december","isUndefined","fetchFromObject","obj","prop","_index","op","isArray","objectType","updatedByUser","userName","updated","wordwise","tail","lastspace","lastIndexOf","deletedDate","definitions","words","w","haveDef","word","trustAsHtml","inColl","showRight","showLeft","floors","leftFilter","rightFilter","right","floorFilter","limit","where","itemToInclude","limited","unshift","detectIE","ua","msie","rv","registrationLineId","checklistContextId","chart","plotBackgroundColor","plotBorderWidth","plotShadow","tooltip","pointFormatter","series","plotOptions","pie","allowPointSelect","cursor","dataLabels","enabled","showInLegend","colorByPoint","xAxis","crosshair","yAxis","headerFormat","pointFormat","footerFormat","shared","useHTML","pointPadding","borderWidth","mailApi","reportApi","tasks","vm","showDashboardCategory","loaders","calendar","blogs","collapsed","attendees","newAberration","myTasks","anyTasksOverdue","isOverDue","navigateToTask","ref","stateRef","regLinesResponse","workplaceSettings","workplaceHiddenGroupsChanged","workplaceFeedSizes","workplaceFeedSize","workplaceHiddenGroups","workplaceHiddenGroupsStr","storedWorkplaceHiddenGroups","storedWorkplaceFeedSize","getWorkplaceFeed","workplace","workplaceGroups","workplacePosts","posts","each","workplaceFeedsize","workplaceGroupVisibility","workplaceHiddenGroupsIndex","workplaceGroupIndex","workplaceSettingsToogle","workplaceDropDownOpen","workplaceDropDownButtonClicked","workplaceDropDownCheckClosed","definitionsResponse","iconClass","coronaDocuments","downloadConnectionsDoc","FileSaver","showIntranet","goToBlog","serverResponse","reports","salesTotal","propectsLastMonth","haveSalesStats","stats","projcusts","totalNum","reduce","subtitle","months","orderBy","getFullYear","createCharts","showDays","currentDate","displayDate","displayDateEnd","dir","weekOfYear","dayOfMonth","getUTCDate","showMore","openAppointment","appointment","webLink","transformSearch","hits","score","highlightTitle","fullText","tableId","searchText","natt","morgen","ettermiddag","kveld","midnatt","currentRoles","userIsAdmin","showSystem","timeOfToday","hour","endOf","isBetween","reglineId","searchAlbum","clearTimeout","_searchTimeout","collapse","newNote","back","navMain","rootUrl","$stateProvider","params","requiresLogin","views","headerctrl","ksApi","load","projtype","projTypeName","noData","fileChange","ksFile","fileDownload","processesInPhase","phaseName","breadcrumbProxy","kscontent","processPhaseId","customerstab","parkinglot","gnrs","bnrs","showCustomBnr","showCustomGnr","bnr","gnr","availableSections","projcustomers","projcustomer","setPreviewUrl","selectedPlan","planUrls","planUrl","navigateToSection","previewPlanUrl","removeFromSection","changeSection","changesectionctrl","projectPhaseHouseNum","projcustomersctrl","projcust","acceptPurchaseOffer","rejectPurchaseOffer","projectPhaseProjectSalesResponsibleUserInfoContactPersonPersonFullName","downloadPurchaseOffer","replaceAll","atticPrice","sectionBecomesUnavailable","off","onSectionUnavailable","parkingLotDialog","parkinglotctrl","buildNum","onlinePurchaseInProgress","SalesAdmin","reservedStatuses","showRemove","disableCompletionDeadline","showswap","sectionsOnHouse","sectionIndex","firstBuyer","oldestDate","isBefore","isSame","nextSection","prevSection","addCustomer","openadd","trafficLights","buySectionOnWebIsActive","buySectionOnWebActive","buySectionOnWeb","sectionInfo","readyForWeb","dependency","projectOptions","alreadyOnSection","isDeleted","deadlineExpired","packages","toogleSelected","selectedOpts","selectedOpt","selectedCollection","selectedPackage","optionsMt","canConfirm","isConfirmed","optionsIsAvailableForMt","isAvailable","optionsAvailableAfterDt","availableAfterDate","optionFilterData","inCart","sumCart","accumulator","priceChange","sumConfirmed","changePrice","priceChanging","priceChangeKeyUp","which","addoptionctrl","addpackagectrl","openStore","sectionOption","costs","goToProjectOption","poptions","priceCalcUpdate","saveOptionCalc","ncsColor","colorOptions","colorOptionsReadyResult","hex","ncs","confirmedColorOptions","unconfirmedColorOptions","errorMessage","canEdit","colorAvalible","addressType","readOnlyNote","contactInfoNote","resetNote","resetProjSectionContactInfoNote","projSectionContactInfoNote","searchExistingCustomers","existingCustomers","addressChange","streetAddress","projectPhaseProjectPostCodeId","postCodeDisplay","existingCustomer","changePrimaryOwner","addcustomerctrl","openAddCustomersModal","newcustomer","removeCustomer","personFullName","sectionCustomer","sumOfValueFilter","contractTotal","showAccept","accepted","hasJointDebt","transactions","tr","transactionCategory","updatedDate","changedDate","createdDate","downloadSettlement","deleteSettlement","addTransaction","transDate","oldStatus","filterOptions","totalJointDebt","totalTransactionSum","sig","readonly","personsPresent","dataUrl","now","protocolResponse","draftKey","preInspectionDate","acquisitionDateTime","acquisitionTime","regLineCategories","addPersonToPresent","pp","haveText","present","addAberrationAction","lastIndex","nextIndex","saveDraft","draftDate","onLine","setAcquisitionDateTime","saveToServer","aa","Title","signatures","abbActions","abbAction","abbActionAttachments","localProtocol","finally","removeAberrationAction","templateSelected","protocolsignaturehtml","protocolsignaturectrl","openSignature","transformServerResponse","temporaryUsePermit","temporaryCertificateOfCompletionDate","aberrationOk","handled","aberrationAsRegLine","lastLineNum","nextLineNum","lineNum","newRegLine","fromAberrationActionId","regLineAttachments","removeLine","inspectionDate","newRegLineOneYear","newRegLineOther","regLinesOneYear","regLinesOther","regStatuses","lineStatusOriginal","projRegistrationOneYearInspectionProtocolUniqId","uniqId","regHeaderSource","saveNewRegLine","saveRegLine","updateRegLine","vr","onShown","regContext","addTask","confirmedContractState","confirmedContract","advancePaymentState","advancePayment","guarantees","percent3","percent3Date","percent3Vendor","percent5","percent5Date","percent5Vendor","percent10","percent10Date","percent10Vendor","settlementGuarantee","settlementGuaranteeDate","settlementGuaranteeVendor","settlementGuaranteeEndDate","haveEndDate","g","changeReservation","reservationDeadLine","reservationTxt2","changeAdvancePayment","advancePaymentSum","updateGuarantee","changeConfirmState","confirmedDate","saveContractToDb","cancelcontractctrl","newReservation","saveReservation","protocols","draftKeyAcquisition","draftKeyPreInspection","draftKeyOneYearInspection","localAcquisitionProtocol","customerFullName","isInternal","protocolType","localPreInspectionProtocol","localOneYearInspectionProtocol","addAberration","sectioncontent","processes","processApi","isProcessAdmin","bcProjectLines","isApproveable","approvedDate","showDeleteBtn","versions","isoProcedures","openVersionLog","processRead","activities","checkCtrl","children","sa","newversion","versionComment","nv","fromId","typeId","isoTypeId","purpose","definition","responsibility","floorNum","dependencies","projModelId","isMilestone","milestoneType","notDeleted","textVisible","chkFilter","activityMoved","addNewActivity","setTextVisible","toogleTextsVisible","goBack","allowed","activityText","subactivities","toDeleteFromServer","controlSchema","subActivityMoved","arrType","ch","changeChild","deleteSubActivity","toDelete","addChild","itemToAdd","splits","stringToProcess","String","fromCharCode","collection","tempId","updateOrCreateActivity","processComponent","del","mc","processComponents","componentCalculation","compcalcctrl","removeComponent","addComponentToCalculation","addCompModalctrl","resources","parentName","setProcess","eventType","end","planned","processAnnualTimeline","addCtrl","completeEvent","overrideFilter","setFilter","tblState","processVersion","processVersionIsNew","versionEnd","processcontent","createParams","newRelation","shortName","addContactPerson","keyboard","animation","addcontactpersonhtml","addcontactpersonctrl","taskCount","displayCourses","projContacts","notes","downloadDoc","listToMerge","contactPersonIdToKeep","fromDate","currentPage","pageSize","fetch","logs","messages","onSelectContact","deleteRelation","externalUserExists","user_id","userHaveLoggedIn","logins_count","showAddExternalUser","showChangePasswordEmail","showSendNewWelcomeEmail","userCannotBeCreated","newWelcomeEmail","isTrysilhusUser","showDeleteExternalUser","invitation_accepted","loadingSignIns","extUserLoginCount","last_login","extUserLastSignIn","courseList","course","courses","hasExpiryDate","expiryDate","courseChange","courseId","deleteCourse","addCourse","addCourseDialog","addcoursectrl","contactpersoncontent","security","translate","defaultDescription","settings","isVue","goToSetting","processPhase","deleteProcessPhase","editInsert","componentGroup","parentCompGroups","componentGroups","deleteComponentGroup","parentGroupId","optioncategory","visibleOnWeb","imageBlob","Array","prototype","move","dragInfo","dropInfo","onCategoryDragStart","dragImage","srcElement","siblings","parentElement","setDragImage","onCategoryDragOver","sourceElement","getTargetCategoryParentElement","onCategoryDrop","oldIndexRef","getArrayIndex","newIndexRef","moveCategory","parentCategoryId","parentIndex","cIndex","childElement","optCategories","optCategoryChildren","saveOrdering","deleteOptionCategory","resp","categoryResources","projectType","projectTypes","planResource","planResourceGroups","productionGroups","planresources","resourcesLevel1","deleteResource","planType","productionGroupId","parents","productionGroupChange","parentResource","newResource","resourcesLevel2","projaccounts","disableInsert","pa","bcId","sectionType","models","deleteSectionType","readSms","sms","smslog","businessCentralCompanies","bccIndex","bcCompanyId","bcCompanyName","deleteCompany","deleteDefinition","contactgroup","contactgroups","deleteContactGroup","cause","aberrationcauses","deleteCause","aberrationtype","aberrationtypes","deleteType","deleteModel","moduleApi","openInsertUpdateModal","insertUpdateModulectrl","editModule","mres","addModule","processowners","deleteProcessOwner","filterRoles","roleIds","rolesFiltered","addRoleToUser","newRole","roleName","updatedString","deleteRole","roleRoleName","contactPersonPersonFullName","roleString","usersInRole","newUserInRole","addUserInRole","delUserInRole","uir","usr","editUsers","usersctrl","userInRole","appRoleAssignments","tradecodes","processOwners","tradeCodeUserRole","upsertTradeCode","deleteTradeCode","faqs","deleteFaq","question","faq","answer","faqCategories","years","thisYear","runTask","consent","consents","postcodes","deletePostCode","reglinecategories","category1","category2","newMain","newSub","addMain","addSub","mainCategoryFilter","albumsettings","editCtrl","openEditAddModal","editSetting","IsValidJSONString","projecttypes","planresources2","sectiontypes","tradecode","reportParameters","field","getMonth","quarterlyReportDownload","parametersCtrl","modal","sectionsOverviewDownload","componentsOverviewDownload","contractoverview","totalPercentageSold","toggleCollapse","proj","allCollapsed","unconfirmedcontracts","l","contractSignedFilter","takeOverDateFilter","takeOverDate","confirmednotdelivered","contractDateFilter","contractDate","sectionsmovedin","projectFilter","dataKeysToUpdate","updateData","chartObj","timeLine","getChartObj","dk","serie","selectedFilter","seriesData","unixDate","setData","filterRemoved","filterSelected","legendItemClick","formatter","allowDecimals","legend","layout","align","verticalAlign","unSoldData","unsolddelivered","runningTotal10","runningTotal30","runningTotal","point","showChanges","showchangesctrl","controlplans","goToActivities","plan","schId","pId","salesstats","projtypes","weeksToDisplay","domtoimage","toBlob","background","reloadReport","prevweek","nextweek","prevyear","nextyear","getNetContracts","salesStatsWeeks","netContracts","fetchData","regbyage","regbyCategory","subCategoriesSelected","dates","newDates","oldDates","notify","regByCategories","exporting","customButton","className","onclick","symbol","drilldown","seriesOptions","click","categoryId","subCategoryName","regbycontractor","regsByContractor","bonus","confirmedcontracts","contractsoverview","dailystats","reglinelog","controlplan","projectStatuses","sectionData","sectionsSold","sectionsTotal","thumbImg","fav","regCount","soldCount","totalCount","projectCompleted","isExistingProject","sr10","pctSoldRounded","ceil","favoriteKey","isOnMyList","toggleMyProjects","operation","isProjectPage","setbg","phases","copySchedule","copyPhase","filterOnProcessOwner","newHouse","newhousectrl","chr","parentProjects","projcontent","countInterested","interested","countCustomers","countOutdatedInterests","outdatedInterests","asMonths","taskTypes","onSearchChanged","isAllSelected","isAnyOptionsSelected","anyOptions","anyOptionsSelected","selectedCount","allCount","addProjectOptionCalc","addoptionsctrl","sel","updatePricesFromPool","removeOptionFromProject","removeAllOptionFromProject","isRemoved","getEntPrice","projectOption","minuteApi","meetingsToCopyFrom","minutes","currentProjectId","changeType","prevMeetings","meetingType","newMinuteData","newMeetingNumber","meetingNumber","copyType","selectedProjectOid","meetingTypesList","meetingList","copyOnlyHeadersChange","copyOnlyHeaders","copyAllLines","disableCopyAllLines","copyAllLinesChange","disableCopyOnlyHeaders","copyTypeChange","meetingTemplateProjectId","firstMatchingTemplate","item5","item1","meetingId","item2","newId","downloadAll","delMinute","newMinute","newminutectrl","validEmail","invalidEmail","rCount","copyTo","minuteLog","translationSettings","checkAll","uncheckAll","selectionCount","buttonDefaultText","dynamicButtonTextSuffix","mergeUpdates","headLine","headLines","headlineNumber","headlineTxt","updateHeadLine","showLines","headLineId","meetingCode","headerId","lastSaved","translationTexts","dropdownSettings","idProperty","externalIdProperty","scrollable","scrollableHeight","enableSearch","showCheckAll","showUncheckAll","buttonClasses","sendMinuteToRecipients","sendctrl","errorResponses","hl","projMeetingMinutes","emailText","meetingName","linesMenu","$itemScope","bold","italic","hexColor","projectContacts","contactPersonPersonEmail","contactGroup","projMeetingContacts","distribution","projectContactId","projectContactContactPersonPersonFullName","projectContactContactPersonPersonEmail","attended","meetingStart","nextMeeting","addHeader","headLineNumber","changedHeader","newLine","changedLine","saveMinute","viewLog","logCtrl","checkBrowser","importList","importcontactsctrl","exportList","deleteProjContact","projcontact","importFromOwners","importRequest","toId","currentProjId","owners","listOfExistingTradeCodesInProject","notAnOption","changeTradeCode","changeContact","organization","projOrganizationDto","deleteProjOrganization","insertUpdateProjOrganization","insertUpdateProjOrganizationctrl","exportProjOrganizations","importProjOrganizationctrl","importRes","importCount","changeCommunityPermission","projOrg","origin","communityWritePermissionProjContact","communityWritePermissionLeader","communityWritePermissionResponsible","projectNumbers","isEdit","projName","projNameFocus","projectNumbersModal","projNumbers","projectnumbersctrl","infotechProjSettings","autoCheckoutTime","isNewsletterSent","infotechProjects","btAddress","disableNewsletterModeChange","newsletterSummary","sent","updateProjectAndProjInformation","projectImage","condominiumStartPrice","updateprojidctrl","updateProjIdModal","oldId","connectionId","changedInfotechAutocheckout","isAutoCheckoutEnabled","sendStartUpNewsletter","sendnewsletterctrl","emailsToSend","sendNewsletter","newsletter","buildingName","projectImageName","openImage","transformImage","delImage","addProjectToProjNumbers","editProjNumbers","deleteProjNumbers","fieldInfo","tradeCodeNumber","downloadQr","ctx","getContext","canvas","fillStyle","fillRect","QRCode","toDataURL","errorCorrectionLevel","version","margin","color","dark","light","img","Image","src","drawImage","btImg","makePDFQr","jsPDF","marginX","internal","setFont","centeredText","setFontSize","addImage","logo","downloadQrImg","font","textAlign","fillText","cWidth","fontSize","textWidth","getStringUnitWidth","getFontSize","scaleFactor","textOffset","downloadHMSPlanQr","urlHms","projDocuments","loadDocuments","openregs","exportFileName","regType","mainGroups","toggleSelectAll","flatMap","totalSize","sumBy","selectedId","wrikeProjectName","wp","milestoneProcesses","wrikeProject","nameArray","wrikeProjectId","wrikeProjectAdjustProcess","adjustedDate","lastUpdate","hasSubTasks","updatedDateTime","updatedBy","isAllExpanded","expanded","allExpanded","allowUpdateAllProcessesToNewVersion","allowImport","allowUpdateResponsible","allowGenerateTasks","allowSync","allowDelete","activitiesCreated","activityCount","activityDoneCount","commentCount","updateAllProcessesToNewVersion","updatedCount","generateTasks","setEditMode","editToolTipVisible","editSchedule","updateSchResponsible","updateResponsible","sync","openTask","wrikeId","permalink","openWrikeProject","addSchedule","importCtrl","deleteWrikeProject","toogleSubTasks","filterTable","filterPhase","filterTradeCode","filterCompletedDate","filterResponsiblePersonFullName","toogleExpand","expand","sch2","projTypeChange","setProcessAsDone","exportpdf","customPath","projCrewRegistrations","fromIn","toIn","fromOut","toOut","displayOut","displayCheckedIn","getAcceptSms","phNummer","personMobile","personName","checkout","timeLimitUpdate","removeFilter","out","openExportModal","openCoursesModal","cr","psiAccepted","psi","contactPersonCourses","crewAccess","itemIndex","removeAccess","crewAccessItem","cardAttributes","cardId","personAttributes","barracksOptions","editBarrack","barracks","barracksProjects","barracksId","barrackSelected","isSaved","barracksApi","openAddBarracksModal","barrack","addbarracksctrl","roomsTot","barrackRooms","addBarracks","editBarracks","infoBarracks","barrackId","moveBarracks","isMoved","texs","bookings","booking","roomName","canDelete","calendarEl","stat","Calendar","plugins","dayGridPlugin","bootstrapPlugin","defaultView","center","nbLocale","contentHeight","weekNumbers","themeSystem","eventClick","_def","extendedProps","bookingModalctrl","openBookingModal","render","prosentageDays","0","20","40","60","80","99","100","barracksName","movedDate","labels","valueSuffix","useUTC","pointStart","UTC","pointInterval","newproject","customeradd","openregistrations","crewregistrations","crewaccess","purchaseAndSalesActs","houseOrderedOptions","isHouseOrdered","houseOrdered","bcProjects","rptPhaseOptionsAndChanges","rptPhaseColorOptions","rptPhaseInvoice","saveHouse","completeChecklist","isHouseCooperativeChange","isHousingCooperative","housingCooperativeSharePrSection","housingCoopName","housingCoopAddress","housingCoopPostCodeId","housingCoopOrgNum","firstSectionNum","sectionCountChange","upper","numberOfSections","prFloor","numberOfFloors","newFile","oldFile","oids","selectedTemplate","nonMatches","notMatched","myFile","current","modulesOnHouse","showModuleWarning","addsectionsctrl","wizardMailMerge","selectedUsers","ids","houseOptions","optionsSum","bonusSum","confirmed","notConfirmed","typeName","changeOptionsView","saveHouseOptions","cloneDeep","gr","bonusHours","ho","openChecklist","houseChanges","projModule","moduleChange","projModules","saveAndReload","pm","maxSections","moduleSelect","modulesAlignedWithSections","sectionModules","sectionModulesCount","countBy","sectionsAligned","sectionsToUpdate","upsertModule","projectTypeId","upsertmodulectrl","openUpsertModal","summary","wrikeCanCreateSync","canImport","projectsNew","projectSchedules","scheduleTemplates","milestones","parentFolderId","wrikeFolderId","getProjectSchedules","getHouseScheduleTemplates","getMilestones","checkCanImport","getProjectListNew","selectedOptChanged","processIdsInProjSchedule","checkEndDate","searchProcesses","modelName","projSchedule","phaseModelName","modelsArray","updateModel","updateToPhaseProjModel","openScheduleSummary","summaryctrl","summaryModal","getDuration","setSchedule","scheduleCopy","scheduleMove","durationChange","moveResponse","us","daysMoved","wrikeSyncEnabled","wrikeSyncProjType","deleted","haveOrdersFailed","completedFailed","updateScheduleFromProjOrg","importSchedulesctrl","wrikeOpen","wrikeOpenTask","wrikeSync","addSchedulectrl","exportToPdf","navVisible","indexInList","prev","next","navId","leaderId","downloadProcess","activityList","checkLists","allowReplacePdfRefs","act","refs","activitiesCnt","activitiesDone","chkAllowComplete","contactInformationList","componentsWarning","organizations","fdv","breadCrumbClick","openOrNavigate","schedulecontent","housecontent","associatedRegLines","commentLinkName","regTypes","houseDropDownDisabled","commentContext","changeProject","houseNumOrder","currentProject","changeHouse","currentSection","fullAddress","sendCopy","sendCopyOnReminder","disableStatus","rs","disableClose","attr1","disableDeny","changeRegStatus","sentToExternal","lineIndex","attId","regLineLog","step1Done","step2Done","regHeaderResponsible","productionLeader","regHeaderQaContactPersonId","qa","rl","projRegistrationProjectName","projRegistrationProjSectionSectionNum","commentsPath","logPath","newRegLinePath","checklistData","chkList","checklistDiscrepancyTypes","contextTypes","itemMoved","sb","deleteItem","addItem","lastItemBySortBy","newItem","placeHolder","itemActions","haveContext","checklistAdmin","disableSave","bluePrintTotalCount","totalBluePrintCount","isAssignedToMe","enableSaveAndComplete","disableInput","reloadBluePrints","signaturehtml","signaturectrl","isTemplate","parentCheckList","getCustomers","elasticQuery","bool","must","query_string","_source","customerStatus","haveDuplicates","mergeCustomers","merge","taskProjectId","taskSectionId","existingUserCheck","sectionsOwned","isStringEqual","localeCompare","sensitivity","userNameWarning","changeExternalUserName","new_email","customerResponse","customercontent","optionModels","modelIds","modelNames","modelsLength","optionPackages","addPackage","optionPackage","package","removeOption","deletePackage","savePackage","optionCategories","optionTypes","processOptions","sectionTypesCount","pro","onSelectProcess","checkImage","checkInfoImage","imageInfoBlob","optionTypeId","isAtticOption","duplicateOptionData","optionCategoryId","duplicateAll","componentRespons","finished","optionCount","optionTextCount","icomps","componentsKeyValue","qtyStatus","addcomponent","componentId","importComponents","importcomponents","deleteAll","saveSectionTypes","apartmentKey","optionsPreview","blobProjModels","projModelsText","projModel","isSuccess","isError","deleteDocument","downloadDocument","updateProjModels","projmodelsctrl","openProjModelsModal","optioncontent","componentApi","vendors","mainContactPersonSearch","mainContactPersonId","mainContactPersonName","setNewBcVendorId","bcVendorId","newBcVendorId","repsonse","isBTAdmin","addNewContactPerson","contactcontent","aberrationactions","actionTypes","tabTitle","actionsTabTitle","commentsTabTitle","sendEmailToResponsible","emailSubject","categoryStringInText","showAddButton","shouseApi","goToList","disableCompleteButton","actionStatus","showCompleteButton","actionTimeLimitExceedsAberrationTimeLimit","completeAction","reloadAction","reglineCategories","convertctrl","cRes","followUpComment","subscriptionApi","subscriptions","prospectContactInfo","when","fromNow","editTask","notifyTask","isCompleted","completeTaskDb","completeTaskCtrl","completeTaskModal","followup","preSelectedSection","preSelectedCustomer","deadLineTime","cancelEdit","addSubTask","subTasks","changeSubTask","projectChanged","typeChanged","sectionChanged","customerChanged","assignedToContactPersonPersonFullName","cutomerId","completeProspectTaskRequest","customerMobile","viewingTaskName","smsResponse","tasksByCategoryChartConfig","tasksNotDone","groupedByType","notCompleted","taskColor","stackLabels","fontWeight","stacking","tasksOverview","completedTasksOverview","sliced","taskTypeOverview","tasksPerMonth","connectorAllowed","responsive","rules","condition","maxWidth","chartOptions","filterFilter","itemCount","totalItems","itemsPrPage","maxSize","loadCalendar","storedSort","storedSearch","hideCompleted","changeHideCompleted","resetFilter","showReset","taskTypeString","openMyTasksModal","myTasksModalCtrl","handleClick","tasksByCategoryChart","order","isReceivingGoods","orderLine","qtyAlreadyReceived","canReceiveGoods","validateOrderLine","allowedReceivedGoodsActions","qtyReceived","receivedGoodsAction","receiveGoods","confirmReceivedGoods","goToNobb","nobb","composedId","projComponentMeassures","projComponentMeasures","projCompGroups","loadSubGroups","projCompGroupSub","contactIds","componentContacts","selectComponentContact","changeComponentContact","ven","addComponentContact","newComponentContact","vc","isSelected","Id","removeComponentContact","prospects","searchResponse","took","mutedText","totalHits","goToHistory","searchHistory","setType","typeString","without","permissionsLoaded","contactpersonLoaded","calendarCode","subscribeToCalender","calCode","webCalHref","pathname","copyCalenderUrl","copyText","setSelectionRange","execCommand","saveContactPerson","isEqual","omit","saveProfile","viewProfile","openProfile","duplicateCount","favMoved","saveFavorites","notifyApi","notificationChannels","testSlack","saveNotificationSettings","allow","deny","hasAllowed","matchRules","hasDenied","closestMatch","securecontracts","newbudget","selectedYear","setProjectId","salesApi","wizardAddBudget","addstep1ctrl","changeYear","filterStartDate","filterEndDate","cancellationFilter","showTab1","showTab2","showTab3","filterChange","loaded","allContracts","createdDateFilter","projCustomerCreatedDate","reservationText","canceledDateFilter","displayCollection0","displayCollection1","displayCollection2","searchTypes","searchResults","highlightText","lastUpdated","charIndexText","profilecontent","addDrilldown","Highcharts","addExporting","dsn","integrations","Integrations","app","clientID","consentScopes","webApiEndpoint","webApiScopes","userProfileEndpoint","protectedResourceMap","Map","constant","msalProvider","init","authority","tokenReceivedCallback","errorDesc","tokenType","optionalParams","redirectUri","navigateToLoginRequestUrl","cacheLocation","storeAuthStateInCookie","unprotectedResources","routeProtectionConfig","popUp","configuration","exception","allStates","ks","processStates","system","report","misc","directives","factories","run","setOptions","lang","weekdays","shortMonths","drillUpText","jQuery"],"mappings":"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","file":"app.js","sourcesContent":["var api = require(\"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n var content = require(\"!!../../node_modules/css-loader/dist/cjs.js!../../node_modules/sass-loader/dist/cjs.js!./trysilhus.scss\");\n\n content = content.__esModule ? content.default : content;\n\n if (typeof content === 'string') {\n content = [[module.id, content, '']];\n }\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nmodule.exports = content.locals || {};","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_GET_URL_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/getUrl.js\");\nvar ___CSS_LOADER_URL_IMPORT_0___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-solid-900.eot\");\nvar ___CSS_LOADER_URL_IMPORT_1___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2\");\nvar ___CSS_LOADER_URL_IMPORT_2___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff\");\nvar ___CSS_LOADER_URL_IMPORT_3___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_4___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-solid-900.svg\");\nvar ___CSS_LOADER_URL_IMPORT_5___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-regular-400.eot\");\nvar ___CSS_LOADER_URL_IMPORT_6___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2\");\nvar ___CSS_LOADER_URL_IMPORT_7___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff\");\nvar ___CSS_LOADER_URL_IMPORT_8___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_9___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-regular-400.svg\");\nvar ___CSS_LOADER_URL_IMPORT_10___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-brands-400.eot\");\nvar ___CSS_LOADER_URL_IMPORT_11___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2\");\nvar ___CSS_LOADER_URL_IMPORT_12___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff\");\nvar ___CSS_LOADER_URL_IMPORT_13___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf\");\nvar ___CSS_LOADER_URL_IMPORT_14___ = require(\"@fortawesome/fontawesome-free/webfonts/fa-brands-400.svg\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\nexports.push([module.id, \"@import url(https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800);\"]);\nexports.push([module.id, \"@import url(https://fonts.googleapis.com/css?family=Quicksand:400,500,700);\"]);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___, { hash: \"#fontawesome\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_8___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_9___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\nvar ___CSS_LOADER_URL_REPLACEMENT_10___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_8___);\nvar ___CSS_LOADER_URL_REPLACEMENT_11___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_9___, { hash: \"#fontawesome\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_12___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___);\nvar ___CSS_LOADER_URL_REPLACEMENT_13___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_10___, { hash: \"?#iefix\" });\nvar ___CSS_LOADER_URL_REPLACEMENT_14___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_11___);\nvar ___CSS_LOADER_URL_REPLACEMENT_15___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_12___);\nvar ___CSS_LOADER_URL_REPLACEMENT_16___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_13___);\nvar ___CSS_LOADER_URL_REPLACEMENT_17___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_14___, { hash: \"#fontawesome\" });\n// Module\nexports.push([module.id, \"/*!\\n * Bootstrap v4.5.0 (https://getbootstrap.com/)\\n * Copyright 2011-2020 The Bootstrap Authors\\n * Copyright 2011-2020 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n */:root{--blue: #007bff;--indigo: #6610f2;--purple: #6f42c1;--pink: #e83e8c;--red: #dc3545;--orange: #fd7e14;--yellow: #ffc107;--green: #28a745;--teal: #20c997;--cyan: #17a2b8;--white: #fff;--gray: #6c757d;--gray-dark: #666;--gray-darkest: #333;--gray-darkest-overlay: #515151;--gray-darker: #3f3f3f;--gray-darker-overlay: #5c5c5c;--gray-semidark: gray;--gray-semilight: #999;--gray-light: #ced4da;--gray-lighter: #e6e6e6;--gray-lightest: #f5f5f5;--#ff0: #fed130;--orange: #f6a300;--green: #28a745;--red: #dc3545;--green-hover: #74bc5b;--trysilhus-red: #a02361;--trysilhus-red-lighter: #dd175e;--trysilhus-yellow: #fdb913;--trysilhus-yellow-lighter: #ffbd39;--primary: #3c4883;--primary-lighter: #5464b3;--primary: #3c4883;--secondary: #6c757d;--success: #28a745;--info: #17a2b8;--warning: #ffc107;--danger: #dc3545;--light: #f8f9fa;--dark: #343a40;--breakpoint-xs: 0;--breakpoint-sm: 576px;--breakpoint-md: 768px;--breakpoint-lg: 992px;--breakpoint-xl: 1200px;--font-family-sans-serif: \\\"Open Sans\\\", sans-serif, arial;--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \\\"Liberation Mono\\\", \\\"Courier New\\\", monospace}*,*::before,*::after{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:\\\"Open Sans\\\",sans-serif,arial;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex=\\\"-1\\\"]:focus:not(:focus-visible){outline:0 !important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[title],abbr[data-original-title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#3c4883;text-decoration:none;background-color:transparent}a:hover{color:#242b4f;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,\\\"Liberation Mono\\\",\\\"Courier New\\\",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=\\\"button\\\"]{cursor:pointer}select{word-wrap:normal}button,[type=\\\"button\\\"],[type=\\\"reset\\\"],[type=\\\"submit\\\"]{-webkit-appearance:button}button:not(:disabled),[type=\\\"button\\\"]:not(:disabled),[type=\\\"reset\\\"]:not(:disabled),[type=\\\"submit\\\"]:not(:disabled){cursor:pointer}button::-moz-focus-inner,[type=\\\"button\\\"]::-moz-focus-inner,[type=\\\"reset\\\"]::-moz-focus-inner,[type=\\\"submit\\\"]::-moz-focus-inner{padding:0;border-style:none}input[type=\\\"radio\\\"],input[type=\\\"checkbox\\\"]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=\\\"number\\\"]::-webkit-inner-spin-button,[type=\\\"number\\\"]::-webkit-outer-spin-button{height:auto}[type=\\\"search\\\"]{outline-offset:-2px;-webkit-appearance:none}[type=\\\"search\\\"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none !important}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}h1,.h1{font-size:2.5rem}h2,.h2{font-size:2rem}h3,.h3{font-size:1.75rem}h4,.h4{font-size:1.5rem}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,0.1)}small,.small{font-size:80%;font-weight:400}mark,.mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:\\\"\\\\2014\\\\00A0\\\"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container{max-width:540px}}@media (min-width: 768px){.container{max-width:720px}}@media (min-width: 992px){.container{max-width:960px}}@media (min-width: 1200px){.container{max-width:1140px}}.container-fluid,.container-sm,.container-md,.container-lg,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width: 576px){.container,.container-sm{max-width:540px}}@media (min-width: 768px){.container,.container-sm,.container-md{max-width:720px}}@media (min-width: 992px){.container,.container-sm,.container-md,.container-lg{max-width:960px}}@media (min-width: 1200px){.container,.container-sm,.container-md,.container-lg,.container-xl{max-width:1140px}}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=\\\"col-\\\"]{padding-right:0;padding-left:0}.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col,.col-auto,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm,.col-sm-auto,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md,.col-md-auto,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg,.col-lg-auto,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width: 576px){.col-sm{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width: 768px){.col-md{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width: 992px){.col-lg{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width: 1200px){.col-xl{flex-basis:0;flex-grow:1;min-width:0;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table th,.table td{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm th,.table-sm td{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered th,.table-bordered td{border:1px solid #dee2e6}.table-bordered thead th,.table-bordered thead td{border-bottom-width:2px}.table-borderless th,.table-borderless td,.table-borderless thead th,.table-borderless tbody+tbody{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,0.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,0.075)}.table-primary,.table-primary>th,.table-primary>td{background-color:#c8ccdc}.table-primary th,.table-primary td,.table-primary thead th,.table-primary tbody+tbody{border-color:#9aa0bf}.table-hover .table-primary:hover{background-color:#b8bed2}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#b8bed2}.table-secondary,.table-secondary>th,.table-secondary>td{background-color:#d6d8db}.table-secondary th,.table-secondary td,.table-secondary thead th,.table-secondary tbody+tbody{border-color:#b3b7bb}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>th,.table-success>td{background-color:#c3e6cb}.table-success th,.table-success td,.table-success thead th,.table-success tbody+tbody{border-color:#8fd19e}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>th,.table-info>td{background-color:#bee5eb}.table-info th,.table-info td,.table-info thead th,.table-info tbody+tbody{border-color:#86cfda}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>th,.table-warning>td{background-color:#ffeeba}.table-warning th,.table-warning td,.table-warning thead th,.table-warning tbody+tbody{border-color:#ffdf7e}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>th,.table-danger>td{background-color:#f5c6cb}.table-danger th,.table-danger td,.table-danger thead th,.table-danger tbody+tbody{border-color:#ed969e}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>th,.table-light>td{background-color:#fdfdfe}.table-light th,.table-light td,.table-light thead th,.table-light tbody+tbody{border-color:#fbfcfc}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>th,.table-dark>td{background-color:#c6c8ca}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#95999c}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>th,.table-active>td{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,0.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,0.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark th,.table-dark td,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,0.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:rgba(255,255,255,0.075)}@media (max-width: 575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width: 767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width: 991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width: 1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.form-control:focus{color:#495057;background-color:#fff;border-color:#7c88c3;outline:0;box-shadow:0 0 0 .2rem rgba(60,72,131,0.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=\\\"date\\\"].form-control,input[type=\\\"time\\\"].form-control,input[type=\\\"datetime-local\\\"].form-control,input[type=\\\"month\\\"].form-control{appearance:none}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[size],select.form-control[multiple]{height:auto}textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=\\\"col-\\\"]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input[disabled] ~ .form-check-label,.form-check-input:disabled ~ .form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,0.9);border-radius:.25rem}.was-validated :valid ~ .valid-feedback,.was-validated :valid ~ .valid-tooltip,.is-valid ~ .valid-feedback,.is-valid ~ .valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#28a745;padding-right:calc(1.5em + .75rem);background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:valid,.custom-select.is-valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem);background:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\\\") no-repeat right .75rem center/8px 10px,url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\\\") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .custom-select:valid:focus,.custom-select.is-valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .form-check-input:valid ~ .form-check-label,.form-check-input.is-valid ~ .form-check-label{color:#28a745}.was-validated .form-check-input:valid ~ .valid-feedback,.was-validated .form-check-input:valid ~ .valid-tooltip,.form-check-input.is-valid ~ .valid-feedback,.form-check-input.is-valid ~ .valid-tooltip{display:block}.was-validated .custom-control-input:valid ~ .custom-control-label,.custom-control-input.is-valid ~ .custom-control-label{color:#28a745}.was-validated .custom-control-input:valid ~ .custom-control-label::before,.custom-control-input.is-valid ~ .custom-control-label::before{border-color:#28a745}.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before,.custom-control-input.is-valid:checked ~ .custom-control-label::before{border-color:#34ce57;background-color:#34ce57}.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before,.custom-control-input.is-valid:focus ~ .custom-control-label::before{box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.was-validated .custom-control-input:valid:focus:not(:checked) ~ .custom-control-label::before,.custom-control-input.is-valid:focus:not(:checked) ~ .custom-control-label::before{border-color:#28a745}.was-validated .custom-file-input:valid ~ .custom-file-label,.custom-file-input.is-valid ~ .custom-file-label{border-color:#28a745}.was-validated .custom-file-input:valid:focus ~ .custom-file-label,.custom-file-input.is-valid:focus ~ .custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,0.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,0.9);border-radius:.25rem}.was-validated :invalid ~ .invalid-feedback,.was-validated :invalid ~ .invalid-tooltip,.is-invalid ~ .invalid-feedback,.is-invalid ~ .invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\\\");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.was-validated .custom-select:invalid,.custom-select.is-invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem);background:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\\\") no-repeat right .75rem center/8px 10px,url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\\\") #fff no-repeat center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem)}.was-validated .custom-select:invalid:focus,.custom-select.is-invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .form-check-input:invalid ~ .form-check-label,.form-check-input.is-invalid ~ .form-check-label{color:#dc3545}.was-validated .form-check-input:invalid ~ .invalid-feedback,.was-validated .form-check-input:invalid ~ .invalid-tooltip,.form-check-input.is-invalid ~ .invalid-feedback,.form-check-input.is-invalid ~ .invalid-tooltip{display:block}.was-validated .custom-control-input:invalid ~ .custom-control-label,.custom-control-input.is-invalid ~ .custom-control-label{color:#dc3545}.was-validated .custom-control-input:invalid ~ .custom-control-label::before,.custom-control-input.is-invalid ~ .custom-control-label::before{border-color:#dc3545}.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before,.custom-control-input.is-invalid:checked ~ .custom-control-label::before{border-color:#e4606d;background-color:#e4606d}.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before,.custom-control-input.is-invalid:focus ~ .custom-control-label::before{box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.was-validated .custom-control-input:invalid:focus:not(:checked) ~ .custom-control-label::before,.custom-control-input.is-invalid:focus:not(:checked) ~ .custom-control-label::before{border-color:#dc3545}.was-validated .custom-file-input:invalid ~ .custom-file-label,.custom-file-input.is-invalid ~ .custom-file-label{border-color:#dc3545}.was-validated .custom-file-input:invalid:focus ~ .custom-file-label,.custom-file-input.is-invalid:focus ~ .custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,0.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width: 576px){.form-inline label{display:flex;align-items:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:flex;flex:0 0 auto;flex-flow:row wrap;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group,.form-inline .custom-select{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn:focus,.btn.focus{outline:0;box-shadow:0 0 0 .2rem rgba(60,72,131,0.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#3c4883;border-color:#3c4883}.btn-primary:hover{color:#fff;background-color:#303a69;border-color:#2c3560}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#303a69;border-color:#2c3560;box-shadow:0 0 0 .2rem rgba(89,99,150,0.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#3c4883;border-color:#3c4883}.btn-primary:not(:disabled):not(.disabled):active,.btn-primary:not(:disabled):not(.disabled).active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#2c3560;border-color:#283057}.btn-primary:not(:disabled):not(.disabled):active:focus,.btn-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(89,99,150,0.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary:focus,.btn-secondary.focus{color:#fff;background-color:#5a6268;border-color:#545b62;box-shadow:0 0 0 .2rem rgba(130,138,145,0.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled):active,.btn-secondary:not(:disabled):not(.disabled).active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled):active:focus,.btn-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,0.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#218838;border-color:#1e7e34;box-shadow:0 0 0 .2rem rgba(72,180,97,0.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled):active,.btn-success:not(:disabled):not(.disabled).active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,0.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#138496;border-color:#117a8b;box-shadow:0 0 0 .2rem rgba(58,176,195,0.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled):active,.btn-info:not(:disabled):not(.disabled).active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled):active:focus,.btn-info:not(:disabled):not(.disabled).active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,0.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning:focus,.btn-warning.focus{color:#212529;background-color:#e0a800;border-color:#d39e00;box-shadow:0 0 0 .2rem rgba(222,170,12,0.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled):active,.btn-warning:not(:disabled):not(.disabled).active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled):active:focus,.btn-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,0.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c82333;border-color:#bd2130;box-shadow:0 0 0 .2rem rgba(225,83,97,0.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled):active,.btn-danger:not(:disabled):not(.disabled).active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled):active:focus,.btn-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,0.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light:focus,.btn-light.focus{color:#212529;background-color:#e2e6ea;border-color:#dae0e5;box-shadow:0 0 0 .2rem rgba(216,217,219,0.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled):active,.btn-light:not(:disabled):not(.disabled).active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled):active:focus,.btn-light:not(:disabled):not(.disabled).active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,0.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark:focus,.btn-dark.focus{color:#fff;background-color:#23272b;border-color:#1d2124;box-shadow:0 0 0 .2rem rgba(82,88,93,0.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled):active,.btn-dark:not(:disabled):not(.disabled).active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled):active:focus,.btn-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,0.5)}.btn-outline-primary{color:#3c4883;border-color:#3c4883}.btn-outline-primary:hover{color:#fff;background-color:#3c4883;border-color:#3c4883}.btn-outline-primary:focus,.btn-outline-primary.focus{box-shadow:0 0 0 .2rem rgba(60,72,131,0.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#3c4883;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled):active,.btn-outline-primary:not(:disabled):not(.disabled).active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#3c4883;border-color:#3c4883}.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(60,72,131,0.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:focus,.btn-outline-secondary.focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled):active,.btn-outline-secondary:not(:disabled):not(.disabled).active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:focus,.btn-outline-success.focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled):active,.btn-outline-success:not(:disabled):not(.disabled).active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled):active:focus,.btn-outline-success:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:focus,.btn-outline-info.focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled):active,.btn-outline-info:not(:disabled):not(.disabled).active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled):active:focus,.btn-outline-info:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:focus,.btn-outline-warning.focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled):active,.btn-outline-warning:not(:disabled):not(.disabled).active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:focus,.btn-outline-danger.focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled):active,.btn-outline-danger:not(:disabled):not(.disabled).active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:focus,.btn-outline-light.focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled):active,.btn-outline-light:not(:disabled):not(.disabled).active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled):active:focus,.btn-outline-light:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:focus,.btn-outline-dark.focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled):active,.btn-outline-dark:not(:disabled):not(.disabled).active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.btn-link{font-weight:400;color:#3c4883;text-decoration:none}.btn-link:hover{color:#242b4f;text-decoration:underline}.btn-link:focus,.btn-link.focus{text-decoration:underline}.btn-link:disabled,.btn-link.disabled{color:#6c757d;pointer-events:none}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-sm,.btn-group-sm>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=\\\"submit\\\"].btn-block,input[type=\\\"reset\\\"].btn-block,input[type=\\\"button\\\"].btn-block{width:100%}.fade{transition:opacity 0.15s linear}@media (prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height 0.35s ease}@media (prefers-reduced-motion: reduce){.collapsing{transition:none}}.dropup,.dropright,.dropdown,.dropleft{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:\\\"\\\"}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:\\\"\\\";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=\\\"top\\\"],.dropdown-menu[x-placement^=\\\"right\\\"],.dropdown-menu[x-placement^=\\\"bottom\\\"],.dropdown-menu[x-placement^=\\\"left\\\"]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#3c4883}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover{z-index:1}.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-left:-1px}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:not(:first-child),.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=\\\"radio\\\"],.btn-group-toggle>.btn input[type=\\\"checkbox\\\"],.btn-group-toggle>.btn-group>.btn input[type=\\\"radio\\\"],.btn-group-toggle>.btn-group>.btn input[type=\\\"checkbox\\\"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-control-plaintext,.input-group>.custom-select,.input-group>.custom-file{position:relative;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.form-control+.form-control,.input-group>.form-control+.custom-select,.input-group>.form-control+.custom-file,.input-group>.form-control-plaintext+.form-control,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.custom-file,.input-group>.custom-select+.form-control,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.custom-file,.input-group>.custom-file+.form-control,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.custom-file{margin-left:-1px}.input-group>.form-control:focus,.input-group>.custom-select:focus,.input-group>.custom-file .custom-file-input:focus ~ .custom-file-label{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.form-control:not(:last-child),.input-group>.custom-select:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-control:not(:first-child),.input-group>.custom-select:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-prepend,.input-group-append{display:flex}.input-group-prepend .btn,.input-group-append .btn{position:relative;z-index:2}.input-group-prepend .btn:focus,.input-group-append .btn:focus{z-index:3}.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.input-group-text,.input-group-append .input-group-text+.btn{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=\\\"radio\\\"],.input-group-text input[type=\\\"checkbox\\\"]{margin-top:0}.input-group-lg>.form-control:not(textarea),.input-group-lg>.custom-select{height:calc(1.5em + 1rem + 2px)}.input-group-lg>.form-control,.input-group-lg>.custom-select,.input-group-lg>.input-group-prepend>.input-group-text,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-append>.btn{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.form-control:not(textarea),.input-group-sm>.custom-select{height:calc(1.5em + .5rem + 2px)}.input-group-sm>.form-control,.input-group-sm>.custom-select,.input-group-sm>.input-group-prepend>.input-group-text,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-append>.btn{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text,.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked ~ .custom-control-label::before{color:#fff;border-color:#3c4883;background-color:#3c4883}.custom-control-input:focus ~ .custom-control-label::before{box-shadow:0 0 0 .2rem rgba(60,72,131,0.25)}.custom-control-input:focus:not(:checked) ~ .custom-control-label::before{border-color:#7c88c3}.custom-control-input:not(:disabled):active ~ .custom-control-label::before{color:#fff;background-color:#9fa7d3;border-color:#9fa7d3}.custom-control-input[disabled] ~ .custom-control-label,.custom-control-input:disabled ~ .custom-control-label{color:#6c757d}.custom-control-input[disabled] ~ .custom-control-label::before,.custom-control-input:disabled ~ .custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:\\\"\\\";background-color:#fff;border:#adb5bd solid 1px}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:\\\"\\\";background:no-repeat 50% / 50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3e%3c/svg%3e\\\")}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before{border-color:#3c4883;background-color:#3c4883}.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' viewBox='0 0 4 4'%3e%3cpath stroke='%23fff' d='M0 2h4'/%3e%3c/svg%3e\\\")}.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(60,72,131,0.5)}.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before{background-color:rgba(60,72,131,0.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked ~ .custom-control-label::after{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\\\")}.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(60,72,131,0.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label::before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label::after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-switch .custom-control-label::after{transition:none}}.custom-switch .custom-control-input:checked ~ .custom-control-label::after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked ~ .custom-control-label::before{background-color:rgba(60,72,131,0.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e\\\") no-repeat right .75rem center/8px 10px;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#7c88c3;outline:0;box-shadow:0 0 0 .2rem rgba(60,72,131,0.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size=\\\"1\\\"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{position:relative;display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(1.5em + .75rem + 2px);margin:0;opacity:0}.custom-file-input:focus ~ .custom-file-label{border-color:#7c88c3;box-shadow:0 0 0 .2rem rgba(60,72,131,0.25)}.custom-file-input[disabled] ~ .custom-file-label,.custom-file-input:disabled ~ .custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en) ~ .custom-file-label::after{content:\\\"Browse\\\"}.custom-file-input ~ .custom-file-label[data-browse]::after{content:attr(data-browse)}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);padding:.375rem .75rem;line-height:1.5;color:#495057;content:\\\"Browse\\\";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;appearance:none}.custom-range:focus{outline:none}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(60,72,131,0.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(60,72,131,0.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(60,72,131,0.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#3c4883;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#9fa7d3}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#3c4883;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#9fa7d3}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#3c4883;border:0;border-radius:1rem;transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;appearance:none}@media (prefers-reduced-motion: reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#9fa7d3}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label::before,.custom-file-label,.custom-select{transition:background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.custom-control-label::before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:hover,.nav-link:focus{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#3c4883}.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:.5rem 1rem}.navbar .container,.navbar .container-fluid,.navbar .container-sm,.navbar .container-md,.navbar .container-lg,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:hover,.navbar-toggler:focus{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:\\\"\\\";background:no-repeat center center;background-size:100% 100%}@media (max-width: 575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 576px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width: 767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 768px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-md,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width: 991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 992px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width: 1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width: 1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-sm,.navbar-expand>.container-md,.navbar-expand>.container-lg,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,0.9)}.navbar-light .navbar-brand:hover,.navbar-light .navbar-brand:focus{color:rgba(0,0,0,0.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,0.5)}.navbar-light .navbar-nav .nav-link:hover,.navbar-light .navbar-nav .nav-link:focus{color:rgba(0,0,0,0.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,0.3)}.navbar-light .navbar-nav .show>.nav-link,.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .nav-link.active{color:rgba(0,0,0,0.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,0.5);border-color:rgba(0,0,0,0.1)}.navbar-light .navbar-toggler-icon{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280,0,0,0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\\\")}.navbar-light .navbar-text{color:rgba(0,0,0,0.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,0.9)}.navbar-light .navbar-text a:hover,.navbar-light .navbar-text a:focus{color:rgba(0,0,0,0.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-brand:focus{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-nav .nav-link:hover,.navbar-dark .navbar-nav .nav-link:focus{color:rgba(255,255,255,0.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,0.25)}.navbar-dark .navbar-nav .show>.nav-link,.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .nav-link.active{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,0.5);border-color:rgba(255,255,255,0.1)}.navbar-dark .navbar-toggler-icon{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\\\")}.navbar-dark .navbar-text{color:rgba(255,255,255,0.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:hover,.navbar-dark .navbar-text a:focus{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,0.03);border-bottom:1px solid rgba(0,0,0,0.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img,.card-img-top,.card-img-bottom{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width: 576px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width: 576px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item{display:flex}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:\\\"/\\\"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#3c4883;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#242b4f;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(60,72,131,0.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#3c4883;border-color:#3c4883}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}@media (prefers-reduced-motion: reduce){.badge{transition:none}}a.badge:hover,a.badge:focus{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#3c4883}a.badge-primary:hover,a.badge-primary:focus{color:#fff;background-color:#2c3560}a.badge-primary:focus,a.badge-primary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(60,72,131,0.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:hover,a.badge-secondary:focus{color:#fff;background-color:#545b62}a.badge-secondary:focus,a.badge-secondary.focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,0.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:hover,a.badge-success:focus{color:#fff;background-color:#1e7e34}a.badge-success:focus,a.badge-success.focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,0.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:hover,a.badge-info:focus{color:#fff;background-color:#117a8b}a.badge-info:focus,a.badge-info.focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,0.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:hover,a.badge-warning:focus{color:#212529;background-color:#d39e00}a.badge-warning:focus,a.badge-warning.focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,0.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:hover,a.badge-danger:focus{color:#fff;background-color:#bd2130}a.badge-danger:focus,a.badge-danger.focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,0.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:hover,a.badge-light:focus{color:#212529;background-color:#dae0e5}a.badge-light:focus,a.badge-light.focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,0.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:hover,a.badge-dark:focus{color:#fff;background-color:#1d2124}a.badge-dark:focus,a.badge-dark.focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,0.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width: 576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#1f2544;background-color:#d8dae6;border-color:#c8ccdc}.alert-primary hr{border-top-color:#b8bed2}.alert-primary .alert-link{color:#0f1221}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:flex;height:1rem;overflow:hidden;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background-color:#3c4883;transition:width 0.6s ease}@media (prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,0.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#3c4883;border-color:#3c4883}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#1f2544;background-color:#c8ccdc}.list-group-item-primary.list-group-item-action:hover,.list-group-item-primary.list-group-item-action:focus{color:#1f2544;background-color:#b8bed2}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#1f2544;border-color:#1f2544}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:hover,.list-group-item-secondary.list-group-item-action:focus{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:hover,.list-group-item-success.list-group-item-action:focus{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:hover,.list-group-item-info.list-group-item-action:focus{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:hover,.list-group-item-warning.list-group-item-action:focus{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:hover,.list-group-item-danger.list-group-item-action:focus{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:hover,.list-group-item-light.list-group-item-action:focus{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:hover,.list-group-item-dark.list-group-item-action:focus{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):hover,.close:not(:disabled):not(.disabled):focus{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border:1px solid rgba(0,0,0,0.1);box-shadow:0 0.25rem 0.75rem rgba(0,0,0,0.1);backdrop-filter:blur(10px);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,0.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,0.05)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform 0.3s ease-out;transform:translate(0, -50px)}@media (prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-header,.modal-dialog-scrollable .modal-footer{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered::before{display:block;height:calc(100vh - 1rem);height:min-content;content:\\\"\\\"}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable::before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem 1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem 1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered::before{height:calc(100vh - 3.5rem);height:min-content}.modal-sm{max-width:300px}}@media (min-width: 992px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width: 1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:\\\"Open Sans\\\",sans-serif,arial;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:\\\"\\\";border-color:transparent;border-style:solid}.bs-tooltip-top,.bs-tooltip-auto[x-placement^=\\\"top\\\"]{padding:.4rem 0}.bs-tooltip-top .arrow,.bs-tooltip-auto[x-placement^=\\\"top\\\"] .arrow{bottom:0}.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^=\\\"top\\\"] .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-right,.bs-tooltip-auto[x-placement^=\\\"right\\\"]{padding:0 .4rem}.bs-tooltip-right .arrow,.bs-tooltip-auto[x-placement^=\\\"right\\\"] .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^=\\\"right\\\"] .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-bottom,.bs-tooltip-auto[x-placement^=\\\"bottom\\\"]{padding:.4rem 0}.bs-tooltip-bottom .arrow,.bs-tooltip-auto[x-placement^=\\\"bottom\\\"] .arrow{top:0}.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^=\\\"bottom\\\"] .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-left,.bs-tooltip-auto[x-placement^=\\\"left\\\"]{padding:0 .4rem}.bs-tooltip-left .arrow,.bs-tooltip-auto[x-placement^=\\\"left\\\"] .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^=\\\"left\\\"] .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:\\\"Open Sans\\\",sans-serif,arial;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,0.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::before,.popover .arrow::after{position:absolute;display:block;content:\\\"\\\";border-color:transparent;border-style:solid}.bs-popover-top,.bs-popover-auto[x-placement^=\\\"top\\\"]{margin-bottom:.5rem}.bs-popover-top>.arrow,.bs-popover-auto[x-placement^=\\\"top\\\"]>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-top>.arrow::before,.bs-popover-auto[x-placement^=\\\"top\\\"]>.arrow::before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,0.25)}.bs-popover-top>.arrow::after,.bs-popover-auto[x-placement^=\\\"top\\\"]>.arrow::after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-right,.bs-popover-auto[x-placement^=\\\"right\\\"]{margin-left:.5rem}.bs-popover-right>.arrow,.bs-popover-auto[x-placement^=\\\"right\\\"]>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-right>.arrow::before,.bs-popover-auto[x-placement^=\\\"right\\\"]>.arrow::before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,0.25)}.bs-popover-right>.arrow::after,.bs-popover-auto[x-placement^=\\\"right\\\"]>.arrow::after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-bottom,.bs-popover-auto[x-placement^=\\\"bottom\\\"]{margin-top:.5rem}.bs-popover-bottom>.arrow,.bs-popover-auto[x-placement^=\\\"bottom\\\"]>.arrow{top:calc(-.5rem - 1px)}.bs-popover-bottom>.arrow::before,.bs-popover-auto[x-placement^=\\\"bottom\\\"]>.arrow::before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:rgba(0,0,0,0.25)}.bs-popover-bottom>.arrow::after,.bs-popover-auto[x-placement^=\\\"bottom\\\"]>.arrow::after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}.bs-popover-bottom .popover-header::before,.bs-popover-auto[x-placement^=\\\"bottom\\\"] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\\\"\\\";border-bottom:1px solid #f7f7f7}.bs-popover-left,.bs-popover-auto[x-placement^=\\\"left\\\"]{margin-right:.5rem}.bs-popover-left>.arrow,.bs-popover-auto[x-placement^=\\\"left\\\"]>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-left>.arrow::before,.bs-popover-auto[x-placement^=\\\"left\\\"]>.arrow::before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,0.25)}.bs-popover-left>.arrow::after,.bs-popover-auto[x-placement^=\\\"left\\\"]>.arrow::after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:\\\"\\\"}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-left),.active.carousel-item-right{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-right),.active.carousel-item-left{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5;transition:opacity 0.15s ease}@media (prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:20px;height:20px;background:no-repeat 50% / 100% 100%}.carousel-control-prev-icon{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3e%3c/svg%3e\\\")}.carousel-control-next-icon{background-image:url(\\\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3e%3c/svg%3e\\\")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity 0.6s ease}@media (prefers-reduced-motion: reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;border:.25em solid currentColor;border-right-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:text-bottom;background-color:currentColor;border-radius:50%;opacity:0;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.bg-primary{background-color:#3c4883 !important}a.bg-primary:hover,a.bg-primary:focus,button.bg-primary:hover,button.bg-primary:focus{background-color:#2c3560 !important}.bg-secondary{background-color:#6c757d !important}a.bg-secondary:hover,a.bg-secondary:focus,button.bg-secondary:hover,button.bg-secondary:focus{background-color:#545b62 !important}.bg-success{background-color:#28a745 !important}a.bg-success:hover,a.bg-success:focus,button.bg-success:hover,button.bg-success:focus{background-color:#1e7e34 !important}.bg-info{background-color:#17a2b8 !important}a.bg-info:hover,a.bg-info:focus,button.bg-info:hover,button.bg-info:focus{background-color:#117a8b !important}.bg-warning{background-color:#ffc107 !important}a.bg-warning:hover,a.bg-warning:focus,button.bg-warning:hover,button.bg-warning:focus{background-color:#d39e00 !important}.bg-danger{background-color:#dc3545 !important}a.bg-danger:hover,a.bg-danger:focus,button.bg-danger:hover,button.bg-danger:focus{background-color:#bd2130 !important}.bg-light{background-color:#f8f9fa !important}a.bg-light:hover,a.bg-light:focus,button.bg-light:hover,button.bg-light:focus{background-color:#dae0e5 !important}.bg-dark{background-color:#343a40 !important}a.bg-dark:hover,a.bg-dark:focus,button.bg-dark:hover,button.bg-dark:focus{background-color:#1d2124 !important}.bg-white{background-color:#fff !important}.bg-transparent{background-color:transparent !important}.border{border:1px solid #dee2e6 !important}.border-top{border-top:1px solid #dee2e6 !important}.border-right{border-right:1px solid #dee2e6 !important}.border-bottom{border-bottom:1px solid #dee2e6 !important}.border-left{border-left:1px solid #dee2e6 !important}.border-0{border:0 !important}.border-top-0{border-top:0 !important}.border-right-0{border-right:0 !important}.border-bottom-0{border-bottom:0 !important}.border-left-0{border-left:0 !important}.border-primary{border-color:#3c4883 !important}.border-secondary{border-color:#6c757d !important}.border-success{border-color:#28a745 !important}.border-info{border-color:#17a2b8 !important}.border-warning{border-color:#ffc107 !important}.border-danger{border-color:#dc3545 !important}.border-light{border-color:#f8f9fa !important}.border-dark{border-color:#343a40 !important}.border-white{border-color:#fff !important}.rounded-sm{border-radius:.2rem !important}.rounded{border-radius:.25rem !important}.rounded-top{border-top-left-radius:.25rem !important;border-top-right-radius:.25rem !important}.rounded-right{border-top-right-radius:.25rem !important;border-bottom-right-radius:.25rem !important}.rounded-bottom{border-bottom-right-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-left{border-top-left-radius:.25rem !important;border-bottom-left-radius:.25rem !important}.rounded-lg{border-radius:.3rem !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:50rem !important}.rounded-0{border-radius:0 !important}.clearfix::after{display:block;clear:both;content:\\\"\\\"}.d-none{display:none !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}@media (min-width: 576px){.d-sm-none{display:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}}@media (min-width: 768px){.d-md-none{display:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}}@media (min-width: 992px){.d-lg-none{display:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}}@media (min-width: 1200px){.d-xl-none{display:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}}@media print{.d-print-none{display:none !important}.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:\\\"\\\"}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.85714%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-fill{flex:1 1 auto !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}@media (min-width: 576px){.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}}@media (min-width: 768px){.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}}@media (min-width: 992px){.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}}@media (min-width: 1200px){.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}}.float-left{float:left !important}.float-right{float:right !important}.float-none{float:none !important}@media (min-width: 576px){.float-sm-left{float:left !important}.float-sm-right{float:right !important}.float-sm-none{float:none !important}}@media (min-width: 768px){.float-md-left{float:left !important}.float-md-right{float:right !important}.float-md-none{float:none !important}}@media (min-width: 992px){.float-lg-left{float:left !important}.float-lg-right{float:right !important}.float-lg-none{float:none !important}}@media (min-width: 1200px){.float-xl-left{float:left !important}.float-xl-right{float:right !important}.float-xl-none{float:none !important}}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports (position: sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 0.125rem 0.25rem rgba(0,0,0,0.075) !important}.shadow{box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,0.175) !important}.shadow-none{box-shadow:none !important}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mw-100{max-width:100% !important}.mh-100{max-height:100% !important}.min-vw-100{min-width:100vw !important}.min-vh-100{min-height:100vh !important}.vw-100{width:100vw !important}.vh-100{height:100vh !important}.m-0{margin:0 !important}.mt-0,.my-0{margin-top:0 !important}.mr-0,.mx-0{margin-right:0 !important}.mb-0,.my-0{margin-bottom:0 !important}.ml-0,.mx-0{margin-left:0 !important}.m-1{margin:.25rem !important}.mt-1,.my-1{margin-top:.25rem !important}.mr-1,.mx-1{margin-right:.25rem !important}.mb-1,.my-1{margin-bottom:.25rem !important}.ml-1,.mx-1{margin-left:.25rem !important}.m-2{margin:.5rem !important}.mt-2,.my-2{margin-top:.5rem !important}.mr-2,.mx-2{margin-right:.5rem !important}.mb-2,.my-2{margin-bottom:.5rem !important}.ml-2,.mx-2{margin-left:.5rem !important}.m-3{margin:1rem !important}.mt-3,.my-3{margin-top:1rem !important}.mr-3,.mx-3{margin-right:1rem !important}.mb-3,.my-3{margin-bottom:1rem !important}.ml-3,.mx-3{margin-left:1rem !important}.m-4{margin:1.5rem !important}.mt-4,.my-4{margin-top:1.5rem !important}.mr-4,.mx-4{margin-right:1.5rem !important}.mb-4,.my-4{margin-bottom:1.5rem !important}.ml-4,.mx-4{margin-left:1.5rem !important}.m-5{margin:3rem !important}.mt-5,.my-5{margin-top:3rem !important}.mr-5,.mx-5{margin-right:3rem !important}.mb-5,.my-5{margin-bottom:3rem !important}.ml-5,.mx-5{margin-left:3rem !important}.p-0{padding:0 !important}.pt-0,.py-0{padding-top:0 !important}.pr-0,.px-0{padding-right:0 !important}.pb-0,.py-0{padding-bottom:0 !important}.pl-0,.px-0{padding-left:0 !important}.p-1{padding:.25rem !important}.pt-1,.py-1{padding-top:.25rem !important}.pr-1,.px-1{padding-right:.25rem !important}.pb-1,.py-1{padding-bottom:.25rem !important}.pl-1,.px-1{padding-left:.25rem !important}.p-2{padding:.5rem !important}.pt-2,.py-2{padding-top:.5rem !important}.pr-2,.px-2{padding-right:.5rem !important}.pb-2,.py-2{padding-bottom:.5rem !important}.pl-2,.px-2{padding-left:.5rem !important}.p-3{padding:1rem !important}.pt-3,.py-3{padding-top:1rem !important}.pr-3,.px-3{padding-right:1rem !important}.pb-3,.py-3{padding-bottom:1rem !important}.pl-3,.px-3{padding-left:1rem !important}.p-4{padding:1.5rem !important}.pt-4,.py-4{padding-top:1.5rem !important}.pr-4,.px-4{padding-right:1.5rem !important}.pb-4,.py-4{padding-bottom:1.5rem !important}.pl-4,.px-4{padding-left:1.5rem !important}.p-5{padding:3rem !important}.pt-5,.py-5{padding-top:3rem !important}.pr-5,.px-5{padding-right:3rem !important}.pb-5,.py-5{padding-bottom:3rem !important}.pl-5,.px-5{padding-left:3rem !important}.m-n1{margin:-.25rem !important}.mt-n1,.my-n1{margin-top:-.25rem !important}.mr-n1,.mx-n1{margin-right:-.25rem !important}.mb-n1,.my-n1{margin-bottom:-.25rem !important}.ml-n1,.mx-n1{margin-left:-.25rem !important}.m-n2{margin:-.5rem !important}.mt-n2,.my-n2{margin-top:-.5rem !important}.mr-n2,.mx-n2{margin-right:-.5rem !important}.mb-n2,.my-n2{margin-bottom:-.5rem !important}.ml-n2,.mx-n2{margin-left:-.5rem !important}.m-n3{margin:-1rem !important}.mt-n3,.my-n3{margin-top:-1rem !important}.mr-n3,.mx-n3{margin-right:-1rem !important}.mb-n3,.my-n3{margin-bottom:-1rem !important}.ml-n3,.mx-n3{margin-left:-1rem !important}.m-n4{margin:-1.5rem !important}.mt-n4,.my-n4{margin-top:-1.5rem !important}.mr-n4,.mx-n4{margin-right:-1.5rem !important}.mb-n4,.my-n4{margin-bottom:-1.5rem !important}.ml-n4,.mx-n4{margin-left:-1.5rem !important}.m-n5{margin:-3rem !important}.mt-n5,.my-n5{margin-top:-3rem !important}.mr-n5,.mx-n5{margin-right:-3rem !important}.mb-n5,.my-n5{margin-bottom:-3rem !important}.ml-n5,.mx-n5{margin-left:-3rem !important}.m-auto{margin:auto !important}.mt-auto,.my-auto{margin-top:auto !important}.mr-auto,.mx-auto{margin-right:auto !important}.mb-auto,.my-auto{margin-bottom:auto !important}.ml-auto,.mx-auto{margin-left:auto !important}@media (min-width: 576px){.m-sm-0{margin:0 !important}.mt-sm-0,.my-sm-0{margin-top:0 !important}.mr-sm-0,.mx-sm-0{margin-right:0 !important}.mb-sm-0,.my-sm-0{margin-bottom:0 !important}.ml-sm-0,.mx-sm-0{margin-left:0 !important}.m-sm-1{margin:.25rem !important}.mt-sm-1,.my-sm-1{margin-top:.25rem !important}.mr-sm-1,.mx-sm-1{margin-right:.25rem !important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem !important}.ml-sm-1,.mx-sm-1{margin-left:.25rem !important}.m-sm-2{margin:.5rem !important}.mt-sm-2,.my-sm-2{margin-top:.5rem !important}.mr-sm-2,.mx-sm-2{margin-right:.5rem !important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem !important}.ml-sm-2,.mx-sm-2{margin-left:.5rem !important}.m-sm-3{margin:1rem !important}.mt-sm-3,.my-sm-3{margin-top:1rem !important}.mr-sm-3,.mx-sm-3{margin-right:1rem !important}.mb-sm-3,.my-sm-3{margin-bottom:1rem !important}.ml-sm-3,.mx-sm-3{margin-left:1rem !important}.m-sm-4{margin:1.5rem !important}.mt-sm-4,.my-sm-4{margin-top:1.5rem !important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem !important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem !important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem !important}.m-sm-5{margin:3rem !important}.mt-sm-5,.my-sm-5{margin-top:3rem !important}.mr-sm-5,.mx-sm-5{margin-right:3rem !important}.mb-sm-5,.my-sm-5{margin-bottom:3rem !important}.ml-sm-5,.mx-sm-5{margin-left:3rem !important}.p-sm-0{padding:0 !important}.pt-sm-0,.py-sm-0{padding-top:0 !important}.pr-sm-0,.px-sm-0{padding-right:0 !important}.pb-sm-0,.py-sm-0{padding-bottom:0 !important}.pl-sm-0,.px-sm-0{padding-left:0 !important}.p-sm-1{padding:.25rem !important}.pt-sm-1,.py-sm-1{padding-top:.25rem !important}.pr-sm-1,.px-sm-1{padding-right:.25rem !important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem !important}.pl-sm-1,.px-sm-1{padding-left:.25rem !important}.p-sm-2{padding:.5rem !important}.pt-sm-2,.py-sm-2{padding-top:.5rem !important}.pr-sm-2,.px-sm-2{padding-right:.5rem !important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem !important}.pl-sm-2,.px-sm-2{padding-left:.5rem !important}.p-sm-3{padding:1rem !important}.pt-sm-3,.py-sm-3{padding-top:1rem !important}.pr-sm-3,.px-sm-3{padding-right:1rem !important}.pb-sm-3,.py-sm-3{padding-bottom:1rem !important}.pl-sm-3,.px-sm-3{padding-left:1rem !important}.p-sm-4{padding:1.5rem !important}.pt-sm-4,.py-sm-4{padding-top:1.5rem !important}.pr-sm-4,.px-sm-4{padding-right:1.5rem !important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem !important}.pl-sm-4,.px-sm-4{padding-left:1.5rem !important}.p-sm-5{padding:3rem !important}.pt-sm-5,.py-sm-5{padding-top:3rem !important}.pr-sm-5,.px-sm-5{padding-right:3rem !important}.pb-sm-5,.py-sm-5{padding-bottom:3rem !important}.pl-sm-5,.px-sm-5{padding-left:3rem !important}.m-sm-n1{margin:-.25rem !important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem !important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem !important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem !important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem !important}.m-sm-n2{margin:-.5rem !important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem !important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem !important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem !important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem !important}.m-sm-n3{margin:-1rem !important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem !important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem !important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem !important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem !important}.m-sm-n4{margin:-1.5rem !important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem !important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem !important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem !important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem !important}.m-sm-n5{margin:-3rem !important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem !important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem !important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem !important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem !important}.m-sm-auto{margin:auto !important}.mt-sm-auto,.my-sm-auto{margin-top:auto !important}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important}}@media (min-width: 768px){.m-md-0{margin:0 !important}.mt-md-0,.my-md-0{margin-top:0 !important}.mr-md-0,.mx-md-0{margin-right:0 !important}.mb-md-0,.my-md-0{margin-bottom:0 !important}.ml-md-0,.mx-md-0{margin-left:0 !important}.m-md-1{margin:.25rem !important}.mt-md-1,.my-md-1{margin-top:.25rem !important}.mr-md-1,.mx-md-1{margin-right:.25rem !important}.mb-md-1,.my-md-1{margin-bottom:.25rem !important}.ml-md-1,.mx-md-1{margin-left:.25rem !important}.m-md-2{margin:.5rem !important}.mt-md-2,.my-md-2{margin-top:.5rem !important}.mr-md-2,.mx-md-2{margin-right:.5rem !important}.mb-md-2,.my-md-2{margin-bottom:.5rem !important}.ml-md-2,.mx-md-2{margin-left:.5rem !important}.m-md-3{margin:1rem !important}.mt-md-3,.my-md-3{margin-top:1rem !important}.mr-md-3,.mx-md-3{margin-right:1rem !important}.mb-md-3,.my-md-3{margin-bottom:1rem !important}.ml-md-3,.mx-md-3{margin-left:1rem !important}.m-md-4{margin:1.5rem !important}.mt-md-4,.my-md-4{margin-top:1.5rem !important}.mr-md-4,.mx-md-4{margin-right:1.5rem !important}.mb-md-4,.my-md-4{margin-bottom:1.5rem !important}.ml-md-4,.mx-md-4{margin-left:1.5rem !important}.m-md-5{margin:3rem !important}.mt-md-5,.my-md-5{margin-top:3rem !important}.mr-md-5,.mx-md-5{margin-right:3rem !important}.mb-md-5,.my-md-5{margin-bottom:3rem !important}.ml-md-5,.mx-md-5{margin-left:3rem !important}.p-md-0{padding:0 !important}.pt-md-0,.py-md-0{padding-top:0 !important}.pr-md-0,.px-md-0{padding-right:0 !important}.pb-md-0,.py-md-0{padding-bottom:0 !important}.pl-md-0,.px-md-0{padding-left:0 !important}.p-md-1{padding:.25rem !important}.pt-md-1,.py-md-1{padding-top:.25rem !important}.pr-md-1,.px-md-1{padding-right:.25rem !important}.pb-md-1,.py-md-1{padding-bottom:.25rem !important}.pl-md-1,.px-md-1{padding-left:.25rem !important}.p-md-2{padding:.5rem !important}.pt-md-2,.py-md-2{padding-top:.5rem !important}.pr-md-2,.px-md-2{padding-right:.5rem !important}.pb-md-2,.py-md-2{padding-bottom:.5rem !important}.pl-md-2,.px-md-2{padding-left:.5rem !important}.p-md-3{padding:1rem !important}.pt-md-3,.py-md-3{padding-top:1rem !important}.pr-md-3,.px-md-3{padding-right:1rem !important}.pb-md-3,.py-md-3{padding-bottom:1rem !important}.pl-md-3,.px-md-3{padding-left:1rem !important}.p-md-4{padding:1.5rem !important}.pt-md-4,.py-md-4{padding-top:1.5rem !important}.pr-md-4,.px-md-4{padding-right:1.5rem !important}.pb-md-4,.py-md-4{padding-bottom:1.5rem !important}.pl-md-4,.px-md-4{padding-left:1.5rem !important}.p-md-5{padding:3rem !important}.pt-md-5,.py-md-5{padding-top:3rem !important}.pr-md-5,.px-md-5{padding-right:3rem !important}.pb-md-5,.py-md-5{padding-bottom:3rem !important}.pl-md-5,.px-md-5{padding-left:3rem !important}.m-md-n1{margin:-.25rem !important}.mt-md-n1,.my-md-n1{margin-top:-.25rem !important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem !important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem !important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem !important}.m-md-n2{margin:-.5rem !important}.mt-md-n2,.my-md-n2{margin-top:-.5rem !important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem !important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem !important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem !important}.m-md-n3{margin:-1rem !important}.mt-md-n3,.my-md-n3{margin-top:-1rem !important}.mr-md-n3,.mx-md-n3{margin-right:-1rem !important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem !important}.ml-md-n3,.mx-md-n3{margin-left:-1rem !important}.m-md-n4{margin:-1.5rem !important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem !important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem !important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem !important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem !important}.m-md-n5{margin:-3rem !important}.mt-md-n5,.my-md-n5{margin-top:-3rem !important}.mr-md-n5,.mx-md-n5{margin-right:-3rem !important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem !important}.ml-md-n5,.mx-md-n5{margin-left:-3rem !important}.m-md-auto{margin:auto !important}.mt-md-auto,.my-md-auto{margin-top:auto !important}.mr-md-auto,.mx-md-auto{margin-right:auto !important}.mb-md-auto,.my-md-auto{margin-bottom:auto !important}.ml-md-auto,.mx-md-auto{margin-left:auto !important}}@media (min-width: 992px){.m-lg-0{margin:0 !important}.mt-lg-0,.my-lg-0{margin-top:0 !important}.mr-lg-0,.mx-lg-0{margin-right:0 !important}.mb-lg-0,.my-lg-0{margin-bottom:0 !important}.ml-lg-0,.mx-lg-0{margin-left:0 !important}.m-lg-1{margin:.25rem !important}.mt-lg-1,.my-lg-1{margin-top:.25rem !important}.mr-lg-1,.mx-lg-1{margin-right:.25rem !important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem !important}.ml-lg-1,.mx-lg-1{margin-left:.25rem !important}.m-lg-2{margin:.5rem !important}.mt-lg-2,.my-lg-2{margin-top:.5rem !important}.mr-lg-2,.mx-lg-2{margin-right:.5rem !important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem !important}.ml-lg-2,.mx-lg-2{margin-left:.5rem !important}.m-lg-3{margin:1rem !important}.mt-lg-3,.my-lg-3{margin-top:1rem !important}.mr-lg-3,.mx-lg-3{margin-right:1rem !important}.mb-lg-3,.my-lg-3{margin-bottom:1rem !important}.ml-lg-3,.mx-lg-3{margin-left:1rem !important}.m-lg-4{margin:1.5rem !important}.mt-lg-4,.my-lg-4{margin-top:1.5rem !important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem !important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem !important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem !important}.m-lg-5{margin:3rem !important}.mt-lg-5,.my-lg-5{margin-top:3rem !important}.mr-lg-5,.mx-lg-5{margin-right:3rem !important}.mb-lg-5,.my-lg-5{margin-bottom:3rem !important}.ml-lg-5,.mx-lg-5{margin-left:3rem !important}.p-lg-0{padding:0 !important}.pt-lg-0,.py-lg-0{padding-top:0 !important}.pr-lg-0,.px-lg-0{padding-right:0 !important}.pb-lg-0,.py-lg-0{padding-bottom:0 !important}.pl-lg-0,.px-lg-0{padding-left:0 !important}.p-lg-1{padding:.25rem !important}.pt-lg-1,.py-lg-1{padding-top:.25rem !important}.pr-lg-1,.px-lg-1{padding-right:.25rem !important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem !important}.pl-lg-1,.px-lg-1{padding-left:.25rem !important}.p-lg-2{padding:.5rem !important}.pt-lg-2,.py-lg-2{padding-top:.5rem !important}.pr-lg-2,.px-lg-2{padding-right:.5rem !important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem !important}.pl-lg-2,.px-lg-2{padding-left:.5rem !important}.p-lg-3{padding:1rem !important}.pt-lg-3,.py-lg-3{padding-top:1rem !important}.pr-lg-3,.px-lg-3{padding-right:1rem !important}.pb-lg-3,.py-lg-3{padding-bottom:1rem !important}.pl-lg-3,.px-lg-3{padding-left:1rem !important}.p-lg-4{padding:1.5rem !important}.pt-lg-4,.py-lg-4{padding-top:1.5rem !important}.pr-lg-4,.px-lg-4{padding-right:1.5rem !important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem !important}.pl-lg-4,.px-lg-4{padding-left:1.5rem !important}.p-lg-5{padding:3rem !important}.pt-lg-5,.py-lg-5{padding-top:3rem !important}.pr-lg-5,.px-lg-5{padding-right:3rem !important}.pb-lg-5,.py-lg-5{padding-bottom:3rem !important}.pl-lg-5,.px-lg-5{padding-left:3rem !important}.m-lg-n1{margin:-.25rem !important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem !important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem !important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem !important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem !important}.m-lg-n2{margin:-.5rem !important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem !important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem !important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem !important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem !important}.m-lg-n3{margin:-1rem !important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem !important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem !important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem !important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem !important}.m-lg-n4{margin:-1.5rem !important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem !important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem !important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem !important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem !important}.m-lg-n5{margin:-3rem !important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem !important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem !important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem !important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem !important}.m-lg-auto{margin:auto !important}.mt-lg-auto,.my-lg-auto{margin-top:auto !important}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important}}@media (min-width: 1200px){.m-xl-0{margin:0 !important}.mt-xl-0,.my-xl-0{margin-top:0 !important}.mr-xl-0,.mx-xl-0{margin-right:0 !important}.mb-xl-0,.my-xl-0{margin-bottom:0 !important}.ml-xl-0,.mx-xl-0{margin-left:0 !important}.m-xl-1{margin:.25rem !important}.mt-xl-1,.my-xl-1{margin-top:.25rem !important}.mr-xl-1,.mx-xl-1{margin-right:.25rem !important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem !important}.ml-xl-1,.mx-xl-1{margin-left:.25rem !important}.m-xl-2{margin:.5rem !important}.mt-xl-2,.my-xl-2{margin-top:.5rem !important}.mr-xl-2,.mx-xl-2{margin-right:.5rem !important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem !important}.ml-xl-2,.mx-xl-2{margin-left:.5rem !important}.m-xl-3{margin:1rem !important}.mt-xl-3,.my-xl-3{margin-top:1rem !important}.mr-xl-3,.mx-xl-3{margin-right:1rem !important}.mb-xl-3,.my-xl-3{margin-bottom:1rem !important}.ml-xl-3,.mx-xl-3{margin-left:1rem !important}.m-xl-4{margin:1.5rem !important}.mt-xl-4,.my-xl-4{margin-top:1.5rem !important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem !important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem !important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem !important}.m-xl-5{margin:3rem !important}.mt-xl-5,.my-xl-5{margin-top:3rem !important}.mr-xl-5,.mx-xl-5{margin-right:3rem !important}.mb-xl-5,.my-xl-5{margin-bottom:3rem !important}.ml-xl-5,.mx-xl-5{margin-left:3rem !important}.p-xl-0{padding:0 !important}.pt-xl-0,.py-xl-0{padding-top:0 !important}.pr-xl-0,.px-xl-0{padding-right:0 !important}.pb-xl-0,.py-xl-0{padding-bottom:0 !important}.pl-xl-0,.px-xl-0{padding-left:0 !important}.p-xl-1{padding:.25rem !important}.pt-xl-1,.py-xl-1{padding-top:.25rem !important}.pr-xl-1,.px-xl-1{padding-right:.25rem !important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem !important}.pl-xl-1,.px-xl-1{padding-left:.25rem !important}.p-xl-2{padding:.5rem !important}.pt-xl-2,.py-xl-2{padding-top:.5rem !important}.pr-xl-2,.px-xl-2{padding-right:.5rem !important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem !important}.pl-xl-2,.px-xl-2{padding-left:.5rem !important}.p-xl-3{padding:1rem !important}.pt-xl-3,.py-xl-3{padding-top:1rem !important}.pr-xl-3,.px-xl-3{padding-right:1rem !important}.pb-xl-3,.py-xl-3{padding-bottom:1rem !important}.pl-xl-3,.px-xl-3{padding-left:1rem !important}.p-xl-4{padding:1.5rem !important}.pt-xl-4,.py-xl-4{padding-top:1.5rem !important}.pr-xl-4,.px-xl-4{padding-right:1.5rem !important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem !important}.pl-xl-4,.px-xl-4{padding-left:1.5rem !important}.p-xl-5{padding:3rem !important}.pt-xl-5,.py-xl-5{padding-top:3rem !important}.pr-xl-5,.px-xl-5{padding-right:3rem !important}.pb-xl-5,.py-xl-5{padding-bottom:3rem !important}.pl-xl-5,.px-xl-5{padding-left:3rem !important}.m-xl-n1{margin:-.25rem !important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem !important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem !important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem !important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem !important}.m-xl-n2{margin:-.5rem !important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem !important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem !important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem !important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem !important}.m-xl-n3{margin:-1rem !important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem !important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem !important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem !important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem !important}.m-xl-n4{margin:-1.5rem !important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem !important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem !important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem !important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem !important}.m-xl-n5{margin:-3rem !important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem !important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem !important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem !important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem !important}.m-xl-auto{margin:auto !important}.mt-xl-auto,.my-xl-auto{margin-top:auto !important}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important}}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:\\\"\\\";background-color:rgba(0,0,0,0)}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,\\\"Liberation Mono\\\",\\\"Courier New\\\",monospace !important}.text-justify{text-align:justify !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left !important}.text-right{text-align:right !important}.text-center{text-align:center !important}@media (min-width: 576px){.text-sm-left{text-align:left !important}.text-sm-right{text-align:right !important}.text-sm-center{text-align:center !important}}@media (min-width: 768px){.text-md-left{text-align:left !important}.text-md-right{text-align:right !important}.text-md-center{text-align:center !important}}@media (min-width: 992px){.text-lg-left{text-align:left !important}.text-lg-right{text-align:right !important}.text-lg-center{text-align:center !important}}@media (min-width: 1200px){.text-xl-left{text-align:left !important}.text-xl-right{text-align:right !important}.text-xl-center{text-align:center !important}}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.font-weight-light{font-weight:300 !important}.font-weight-lighter{font-weight:lighter !important}.font-weight-normal{font-weight:400 !important}.font-weight-bold{font-weight:700 !important}.font-weight-bolder{font-weight:bolder !important}.font-italic{font-style:italic !important}.text-white{color:#fff !important}.text-primary{color:#3c4883 !important}a.text-primary:hover,a.text-primary:focus{color:#242b4f !important}.text-secondary{color:#6c757d !important}a.text-secondary:hover,a.text-secondary:focus{color:#494f54 !important}.text-success{color:#28a745 !important}a.text-success:hover,a.text-success:focus{color:#19692c !important}.text-info{color:#17a2b8 !important}a.text-info:hover,a.text-info:focus{color:#0f6674 !important}.text-warning{color:#ffc107 !important}a.text-warning:hover,a.text-warning:focus{color:#ba8b00 !important}.text-danger{color:#dc3545 !important}a.text-danger:hover,a.text-danger:focus{color:#a71d2a !important}.text-light{color:#f8f9fa !important}a.text-light:hover,a.text-light:focus{color:#cbd3da !important}.text-dark{color:#343a40 !important}a.text-dark:hover,a.text-dark:focus{color:#121416 !important}.text-body{color:#212529 !important}.text-muted{color:#6c757d !important}.text-black-50{color:rgba(0,0,0,0.5) !important}.text-white-50{color:rgba(255,255,255,0.5) !important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none !important}.text-break{word-wrap:break-word !important}.text-reset{color:inherit !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}@media print{*,*::before,*::after{text-shadow:none !important;box-shadow:none !important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:\\\" (\\\" attr(title) \\\")\\\"}pre{white-space:pre-wrap !important}pre,blockquote{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px !important}.container{min-width:992px !important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #dee2e6 !important}.table-dark{color:inherit}.table-dark th,.table-dark td,.table-dark thead th,.table-dark tbody+tbody{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}/*!\\n * Font Awesome Free 5.13.1 by @fontawesome - https://fontawesome.com\\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\\n */.fa,.fas,.glyphicon,.far,.fal,.fad,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid 0.08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fas.fa-pull-left,.fa-pull-left.glyphicon,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fas.fa-pull-right,.fa-pull-right.glyphicon,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";transform:scale(1, -1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-ms-filter:\\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";transform:scale(-1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-flip-both{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:\\\"\\\\f26e\\\"}.fa-accessible-icon:before{content:\\\"\\\\f368\\\"}.fa-accusoft:before{content:\\\"\\\\f369\\\"}.fa-acquisitions-incorporated:before{content:\\\"\\\\f6af\\\"}.fa-ad:before{content:\\\"\\\\f641\\\"}.fa-address-book:before{content:\\\"\\\\f2b9\\\"}.fa-address-card:before{content:\\\"\\\\f2bb\\\"}.fa-adjust:before{content:\\\"\\\\f042\\\"}.fa-adn:before{content:\\\"\\\\f170\\\"}.fa-adobe:before{content:\\\"\\\\f778\\\"}.fa-adversal:before{content:\\\"\\\\f36a\\\"}.fa-affiliatetheme:before{content:\\\"\\\\f36b\\\"}.fa-air-freshener:before{content:\\\"\\\\f5d0\\\"}.fa-airbnb:before{content:\\\"\\\\f834\\\"}.fa-algolia:before{content:\\\"\\\\f36c\\\"}.fa-align-center:before{content:\\\"\\\\f037\\\"}.fa-align-justify:before{content:\\\"\\\\f039\\\"}.fa-align-left:before{content:\\\"\\\\f036\\\"}.fa-align-right:before{content:\\\"\\\\f038\\\"}.fa-alipay:before{content:\\\"\\\\f642\\\"}.fa-allergies:before{content:\\\"\\\\f461\\\"}.fa-amazon:before{content:\\\"\\\\f270\\\"}.fa-amazon-pay:before{content:\\\"\\\\f42c\\\"}.fa-ambulance:before{content:\\\"\\\\f0f9\\\"}.fa-american-sign-language-interpreting:before{content:\\\"\\\\f2a3\\\"}.fa-amilia:before{content:\\\"\\\\f36d\\\"}.fa-anchor:before{content:\\\"\\\\f13d\\\"}.fa-android:before{content:\\\"\\\\f17b\\\"}.fa-angellist:before{content:\\\"\\\\f209\\\"}.fa-angle-double-down:before{content:\\\"\\\\f103\\\"}.fa-angle-double-left:before{content:\\\"\\\\f100\\\"}.fa-angle-double-right:before{content:\\\"\\\\f101\\\"}.fa-angle-double-up:before{content:\\\"\\\\f102\\\"}.fa-angle-down:before{content:\\\"\\\\f107\\\"}.fa-angle-left:before{content:\\\"\\\\f104\\\"}.fa-angle-right:before{content:\\\"\\\\f105\\\"}.fa-angle-up:before{content:\\\"\\\\f106\\\"}.fa-angry:before{content:\\\"\\\\f556\\\"}.fa-angrycreative:before{content:\\\"\\\\f36e\\\"}.fa-angular:before{content:\\\"\\\\f420\\\"}.fa-ankh:before{content:\\\"\\\\f644\\\"}.fa-app-store:before{content:\\\"\\\\f36f\\\"}.fa-app-store-ios:before{content:\\\"\\\\f370\\\"}.fa-apper:before{content:\\\"\\\\f371\\\"}.fa-apple:before{content:\\\"\\\\f179\\\"}.fa-apple-alt:before{content:\\\"\\\\f5d1\\\"}.fa-apple-pay:before{content:\\\"\\\\f415\\\"}.fa-archive:before{content:\\\"\\\\f187\\\"}.fa-archway:before{content:\\\"\\\\f557\\\"}.fa-arrow-alt-circle-down:before{content:\\\"\\\\f358\\\"}.fa-arrow-alt-circle-left:before{content:\\\"\\\\f359\\\"}.fa-arrow-alt-circle-right:before{content:\\\"\\\\f35a\\\"}.fa-arrow-alt-circle-up:before{content:\\\"\\\\f35b\\\"}.fa-arrow-circle-down:before{content:\\\"\\\\f0ab\\\"}.fa-arrow-circle-left:before{content:\\\"\\\\f0a8\\\"}.fa-arrow-circle-right:before{content:\\\"\\\\f0a9\\\"}.fa-arrow-circle-up:before{content:\\\"\\\\f0aa\\\"}.fa-arrow-down:before{content:\\\"\\\\f063\\\"}.fa-arrow-left:before{content:\\\"\\\\f060\\\"}.fa-arrow-right:before{content:\\\"\\\\f061\\\"}.fa-arrow-up:before{content:\\\"\\\\f062\\\"}.fa-arrows-alt:before{content:\\\"\\\\f0b2\\\"}.fa-arrows-alt-h:before{content:\\\"\\\\f337\\\"}.fa-arrows-alt-v:before{content:\\\"\\\\f338\\\"}.fa-artstation:before{content:\\\"\\\\f77a\\\"}.fa-assistive-listening-systems:before{content:\\\"\\\\f2a2\\\"}.fa-asterisk:before{content:\\\"\\\\f069\\\"}.fa-asymmetrik:before{content:\\\"\\\\f372\\\"}.fa-at:before{content:\\\"\\\\f1fa\\\"}.fa-atlas:before{content:\\\"\\\\f558\\\"}.fa-atlassian:before{content:\\\"\\\\f77b\\\"}.fa-atom:before{content:\\\"\\\\f5d2\\\"}.fa-audible:before{content:\\\"\\\\f373\\\"}.fa-audio-description:before{content:\\\"\\\\f29e\\\"}.fa-autoprefixer:before{content:\\\"\\\\f41c\\\"}.fa-avianex:before{content:\\\"\\\\f374\\\"}.fa-aviato:before{content:\\\"\\\\f421\\\"}.fa-award:before{content:\\\"\\\\f559\\\"}.fa-aws:before{content:\\\"\\\\f375\\\"}.fa-baby:before{content:\\\"\\\\f77c\\\"}.fa-baby-carriage:before{content:\\\"\\\\f77d\\\"}.fa-backspace:before{content:\\\"\\\\f55a\\\"}.fa-backward:before{content:\\\"\\\\f04a\\\"}.fa-bacon:before{content:\\\"\\\\f7e5\\\"}.fa-bacteria:before{content:\\\"\\\\f959\\\"}.fa-bacterium:before{content:\\\"\\\\f95a\\\"}.fa-bahai:before{content:\\\"\\\\f666\\\"}.fa-balance-scale:before{content:\\\"\\\\f24e\\\"}.fa-balance-scale-left:before{content:\\\"\\\\f515\\\"}.fa-balance-scale-right:before{content:\\\"\\\\f516\\\"}.fa-ban:before{content:\\\"\\\\f05e\\\"}.fa-band-aid:before{content:\\\"\\\\f462\\\"}.fa-bandcamp:before{content:\\\"\\\\f2d5\\\"}.fa-barcode:before{content:\\\"\\\\f02a\\\"}.fa-bars:before{content:\\\"\\\\f0c9\\\"}.fa-baseball-ball:before{content:\\\"\\\\f433\\\"}.fa-basketball-ball:before{content:\\\"\\\\f434\\\"}.fa-bath:before{content:\\\"\\\\f2cd\\\"}.fa-battery-empty:before{content:\\\"\\\\f244\\\"}.fa-battery-full:before{content:\\\"\\\\f240\\\"}.fa-battery-half:before{content:\\\"\\\\f242\\\"}.fa-battery-quarter:before{content:\\\"\\\\f243\\\"}.fa-battery-three-quarters:before{content:\\\"\\\\f241\\\"}.fa-battle-net:before{content:\\\"\\\\f835\\\"}.fa-bed:before{content:\\\"\\\\f236\\\"}.fa-beer:before{content:\\\"\\\\f0fc\\\"}.fa-behance:before{content:\\\"\\\\f1b4\\\"}.fa-behance-square:before{content:\\\"\\\\f1b5\\\"}.fa-bell:before{content:\\\"\\\\f0f3\\\"}.fa-bell-slash:before{content:\\\"\\\\f1f6\\\"}.fa-bezier-curve:before{content:\\\"\\\\f55b\\\"}.fa-bible:before{content:\\\"\\\\f647\\\"}.fa-bicycle:before{content:\\\"\\\\f206\\\"}.fa-biking:before{content:\\\"\\\\f84a\\\"}.fa-bimobject:before{content:\\\"\\\\f378\\\"}.fa-binoculars:before{content:\\\"\\\\f1e5\\\"}.fa-biohazard:before{content:\\\"\\\\f780\\\"}.fa-birthday-cake:before{content:\\\"\\\\f1fd\\\"}.fa-bitbucket:before{content:\\\"\\\\f171\\\"}.fa-bitcoin:before{content:\\\"\\\\f379\\\"}.fa-bity:before{content:\\\"\\\\f37a\\\"}.fa-black-tie:before{content:\\\"\\\\f27e\\\"}.fa-blackberry:before{content:\\\"\\\\f37b\\\"}.fa-blender:before{content:\\\"\\\\f517\\\"}.fa-blender-phone:before{content:\\\"\\\\f6b6\\\"}.fa-blind:before{content:\\\"\\\\f29d\\\"}.fa-blog:before{content:\\\"\\\\f781\\\"}.fa-blogger:before{content:\\\"\\\\f37c\\\"}.fa-blogger-b:before{content:\\\"\\\\f37d\\\"}.fa-bluetooth:before{content:\\\"\\\\f293\\\"}.fa-bluetooth-b:before{content:\\\"\\\\f294\\\"}.fa-bold:before{content:\\\"\\\\f032\\\"}.fa-bolt:before{content:\\\"\\\\f0e7\\\"}.fa-bomb:before{content:\\\"\\\\f1e2\\\"}.fa-bone:before{content:\\\"\\\\f5d7\\\"}.fa-bong:before{content:\\\"\\\\f55c\\\"}.fa-book:before{content:\\\"\\\\f02d\\\"}.fa-book-dead:before{content:\\\"\\\\f6b7\\\"}.fa-book-medical:before{content:\\\"\\\\f7e6\\\"}.fa-book-open:before{content:\\\"\\\\f518\\\"}.fa-book-reader:before{content:\\\"\\\\f5da\\\"}.fa-bookmark:before{content:\\\"\\\\f02e\\\"}.fa-bootstrap:before{content:\\\"\\\\f836\\\"}.fa-border-all:before{content:\\\"\\\\f84c\\\"}.fa-border-none:before{content:\\\"\\\\f850\\\"}.fa-border-style:before{content:\\\"\\\\f853\\\"}.fa-bowling-ball:before{content:\\\"\\\\f436\\\"}.fa-box:before{content:\\\"\\\\f466\\\"}.fa-box-open:before{content:\\\"\\\\f49e\\\"}.fa-box-tissue:before{content:\\\"\\\\f95b\\\"}.fa-boxes:before{content:\\\"\\\\f468\\\"}.fa-braille:before{content:\\\"\\\\f2a1\\\"}.fa-brain:before{content:\\\"\\\\f5dc\\\"}.fa-bread-slice:before{content:\\\"\\\\f7ec\\\"}.fa-briefcase:before{content:\\\"\\\\f0b1\\\"}.fa-briefcase-medical:before{content:\\\"\\\\f469\\\"}.fa-broadcast-tower:before{content:\\\"\\\\f519\\\"}.fa-broom:before{content:\\\"\\\\f51a\\\"}.fa-brush:before{content:\\\"\\\\f55d\\\"}.fa-btc:before{content:\\\"\\\\f15a\\\"}.fa-buffer:before{content:\\\"\\\\f837\\\"}.fa-bug:before{content:\\\"\\\\f188\\\"}.fa-building:before{content:\\\"\\\\f1ad\\\"}.fa-bullhorn:before{content:\\\"\\\\f0a1\\\"}.fa-bullseye:before{content:\\\"\\\\f140\\\"}.fa-burn:before{content:\\\"\\\\f46a\\\"}.fa-buromobelexperte:before{content:\\\"\\\\f37f\\\"}.fa-bus:before{content:\\\"\\\\f207\\\"}.fa-bus-alt:before{content:\\\"\\\\f55e\\\"}.fa-business-time:before{content:\\\"\\\\f64a\\\"}.fa-buy-n-large:before{content:\\\"\\\\f8a6\\\"}.fa-buysellads:before{content:\\\"\\\\f20d\\\"}.fa-calculator:before{content:\\\"\\\\f1ec\\\"}.fa-calendar:before{content:\\\"\\\\f133\\\"}.fa-calendar-alt:before{content:\\\"\\\\f073\\\"}.fa-calendar-check:before{content:\\\"\\\\f274\\\"}.fa-calendar-day:before{content:\\\"\\\\f783\\\"}.fa-calendar-minus:before{content:\\\"\\\\f272\\\"}.fa-calendar-plus:before{content:\\\"\\\\f271\\\"}.fa-calendar-times:before{content:\\\"\\\\f273\\\"}.fa-calendar-week:before{content:\\\"\\\\f784\\\"}.fa-camera:before{content:\\\"\\\\f030\\\"}.fa-camera-retro:before{content:\\\"\\\\f083\\\"}.fa-campground:before{content:\\\"\\\\f6bb\\\"}.fa-canadian-maple-leaf:before{content:\\\"\\\\f785\\\"}.fa-candy-cane:before{content:\\\"\\\\f786\\\"}.fa-cannabis:before{content:\\\"\\\\f55f\\\"}.fa-capsules:before{content:\\\"\\\\f46b\\\"}.fa-car:before{content:\\\"\\\\f1b9\\\"}.fa-car-alt:before{content:\\\"\\\\f5de\\\"}.fa-car-battery:before{content:\\\"\\\\f5df\\\"}.fa-car-crash:before{content:\\\"\\\\f5e1\\\"}.fa-car-side:before{content:\\\"\\\\f5e4\\\"}.fa-caravan:before{content:\\\"\\\\f8ff\\\"}.fa-caret-down:before{content:\\\"\\\\f0d7\\\"}.fa-caret-left:before{content:\\\"\\\\f0d9\\\"}.fa-caret-right:before{content:\\\"\\\\f0da\\\"}.fa-caret-square-down:before{content:\\\"\\\\f150\\\"}.fa-caret-square-left:before{content:\\\"\\\\f191\\\"}.fa-caret-square-right:before{content:\\\"\\\\f152\\\"}.fa-caret-square-up:before{content:\\\"\\\\f151\\\"}.fa-caret-up:before{content:\\\"\\\\f0d8\\\"}.fa-carrot:before{content:\\\"\\\\f787\\\"}.fa-cart-arrow-down:before{content:\\\"\\\\f218\\\"}.fa-cart-plus:before{content:\\\"\\\\f217\\\"}.fa-cash-register:before{content:\\\"\\\\f788\\\"}.fa-cat:before{content:\\\"\\\\f6be\\\"}.fa-cc-amazon-pay:before{content:\\\"\\\\f42d\\\"}.fa-cc-amex:before{content:\\\"\\\\f1f3\\\"}.fa-cc-apple-pay:before{content:\\\"\\\\f416\\\"}.fa-cc-diners-club:before{content:\\\"\\\\f24c\\\"}.fa-cc-discover:before{content:\\\"\\\\f1f2\\\"}.fa-cc-jcb:before{content:\\\"\\\\f24b\\\"}.fa-cc-mastercard:before{content:\\\"\\\\f1f1\\\"}.fa-cc-paypal:before{content:\\\"\\\\f1f4\\\"}.fa-cc-stripe:before{content:\\\"\\\\f1f5\\\"}.fa-cc-visa:before{content:\\\"\\\\f1f0\\\"}.fa-centercode:before{content:\\\"\\\\f380\\\"}.fa-centos:before{content:\\\"\\\\f789\\\"}.fa-certificate:before{content:\\\"\\\\f0a3\\\"}.fa-chair:before{content:\\\"\\\\f6c0\\\"}.fa-chalkboard:before{content:\\\"\\\\f51b\\\"}.fa-chalkboard-teacher:before{content:\\\"\\\\f51c\\\"}.fa-charging-station:before{content:\\\"\\\\f5e7\\\"}.fa-chart-area:before{content:\\\"\\\\f1fe\\\"}.fa-chart-bar:before{content:\\\"\\\\f080\\\"}.fa-chart-line:before{content:\\\"\\\\f201\\\"}.fa-chart-pie:before{content:\\\"\\\\f200\\\"}.fa-check:before,.glyphicon.glyphicon-ok:before{content:\\\"\\\\f00c\\\"}.fa-check-circle:before{content:\\\"\\\\f058\\\"}.fa-check-double:before{content:\\\"\\\\f560\\\"}.fa-check-square:before{content:\\\"\\\\f14a\\\"}.fa-cheese:before{content:\\\"\\\\f7ef\\\"}.fa-chess:before{content:\\\"\\\\f439\\\"}.fa-chess-bishop:before{content:\\\"\\\\f43a\\\"}.fa-chess-board:before{content:\\\"\\\\f43c\\\"}.fa-chess-king:before{content:\\\"\\\\f43f\\\"}.fa-chess-knight:before{content:\\\"\\\\f441\\\"}.fa-chess-pawn:before{content:\\\"\\\\f443\\\"}.fa-chess-queen:before{content:\\\"\\\\f445\\\"}.fa-chess-rook:before{content:\\\"\\\\f447\\\"}.fa-chevron-circle-down:before{content:\\\"\\\\f13a\\\"}.fa-chevron-circle-left:before{content:\\\"\\\\f137\\\"}.fa-chevron-circle-right:before{content:\\\"\\\\f138\\\"}.fa-chevron-circle-up:before{content:\\\"\\\\f139\\\"}.fa-chevron-down:before{content:\\\"\\\\f078\\\"}.fa-chevron-left:before{content:\\\"\\\\f053\\\"}.fa-chevron-right:before{content:\\\"\\\\f054\\\"}.fa-chevron-up:before{content:\\\"\\\\f077\\\"}.fa-child:before{content:\\\"\\\\f1ae\\\"}.fa-chrome:before{content:\\\"\\\\f268\\\"}.fa-chromecast:before{content:\\\"\\\\f838\\\"}.fa-church:before{content:\\\"\\\\f51d\\\"}.fa-circle:before{content:\\\"\\\\f111\\\"}.fa-circle-notch:before{content:\\\"\\\\f1ce\\\"}.fa-city:before{content:\\\"\\\\f64f\\\"}.fa-clinic-medical:before{content:\\\"\\\\f7f2\\\"}.fa-clipboard:before{content:\\\"\\\\f328\\\"}.fa-clipboard-check:before{content:\\\"\\\\f46c\\\"}.fa-clipboard-list:before{content:\\\"\\\\f46d\\\"}.fa-clock:before{content:\\\"\\\\f017\\\"}.fa-clone:before{content:\\\"\\\\f24d\\\"}.fa-closed-captioning:before{content:\\\"\\\\f20a\\\"}.fa-cloud:before{content:\\\"\\\\f0c2\\\"}.fa-cloud-download-alt:before{content:\\\"\\\\f381\\\"}.fa-cloud-meatball:before{content:\\\"\\\\f73b\\\"}.fa-cloud-moon:before{content:\\\"\\\\f6c3\\\"}.fa-cloud-moon-rain:before{content:\\\"\\\\f73c\\\"}.fa-cloud-rain:before{content:\\\"\\\\f73d\\\"}.fa-cloud-showers-heavy:before{content:\\\"\\\\f740\\\"}.fa-cloud-sun:before{content:\\\"\\\\f6c4\\\"}.fa-cloud-sun-rain:before{content:\\\"\\\\f743\\\"}.fa-cloud-upload-alt:before{content:\\\"\\\\f382\\\"}.fa-cloudscale:before{content:\\\"\\\\f383\\\"}.fa-cloudsmith:before{content:\\\"\\\\f384\\\"}.fa-cloudversify:before{content:\\\"\\\\f385\\\"}.fa-cocktail:before{content:\\\"\\\\f561\\\"}.fa-code:before{content:\\\"\\\\f121\\\"}.fa-code-branch:before{content:\\\"\\\\f126\\\"}.fa-codepen:before{content:\\\"\\\\f1cb\\\"}.fa-codiepie:before{content:\\\"\\\\f284\\\"}.fa-coffee:before{content:\\\"\\\\f0f4\\\"}.fa-cog:before{content:\\\"\\\\f013\\\"}.fa-cogs:before{content:\\\"\\\\f085\\\"}.fa-coins:before{content:\\\"\\\\f51e\\\"}.fa-columns:before{content:\\\"\\\\f0db\\\"}.fa-comment:before{content:\\\"\\\\f075\\\"}.fa-comment-alt:before{content:\\\"\\\\f27a\\\"}.fa-comment-dollar:before{content:\\\"\\\\f651\\\"}.fa-comment-dots:before{content:\\\"\\\\f4ad\\\"}.fa-comment-medical:before{content:\\\"\\\\f7f5\\\"}.fa-comment-slash:before{content:\\\"\\\\f4b3\\\"}.fa-comments:before{content:\\\"\\\\f086\\\"}.fa-comments-dollar:before{content:\\\"\\\\f653\\\"}.fa-compact-disc:before{content:\\\"\\\\f51f\\\"}.fa-compass:before{content:\\\"\\\\f14e\\\"}.fa-compress:before{content:\\\"\\\\f066\\\"}.fa-compress-alt:before{content:\\\"\\\\f422\\\"}.fa-compress-arrows-alt:before{content:\\\"\\\\f78c\\\"}.fa-concierge-bell:before{content:\\\"\\\\f562\\\"}.fa-confluence:before{content:\\\"\\\\f78d\\\"}.fa-connectdevelop:before{content:\\\"\\\\f20e\\\"}.fa-contao:before{content:\\\"\\\\f26d\\\"}.fa-cookie:before{content:\\\"\\\\f563\\\"}.fa-cookie-bite:before{content:\\\"\\\\f564\\\"}.fa-copy:before{content:\\\"\\\\f0c5\\\"}.fa-copyright:before{content:\\\"\\\\f1f9\\\"}.fa-cotton-bureau:before{content:\\\"\\\\f89e\\\"}.fa-couch:before{content:\\\"\\\\f4b8\\\"}.fa-cpanel:before{content:\\\"\\\\f388\\\"}.fa-creative-commons:before{content:\\\"\\\\f25e\\\"}.fa-creative-commons-by:before{content:\\\"\\\\f4e7\\\"}.fa-creative-commons-nc:before{content:\\\"\\\\f4e8\\\"}.fa-creative-commons-nc-eu:before{content:\\\"\\\\f4e9\\\"}.fa-creative-commons-nc-jp:before{content:\\\"\\\\f4ea\\\"}.fa-creative-commons-nd:before{content:\\\"\\\\f4eb\\\"}.fa-creative-commons-pd:before{content:\\\"\\\\f4ec\\\"}.fa-creative-commons-pd-alt:before{content:\\\"\\\\f4ed\\\"}.fa-creative-commons-remix:before{content:\\\"\\\\f4ee\\\"}.fa-creative-commons-sa:before{content:\\\"\\\\f4ef\\\"}.fa-creative-commons-sampling:before{content:\\\"\\\\f4f0\\\"}.fa-creative-commons-sampling-plus:before{content:\\\"\\\\f4f1\\\"}.fa-creative-commons-share:before{content:\\\"\\\\f4f2\\\"}.fa-creative-commons-zero:before{content:\\\"\\\\f4f3\\\"}.fa-credit-card:before{content:\\\"\\\\f09d\\\"}.fa-critical-role:before{content:\\\"\\\\f6c9\\\"}.fa-crop:before{content:\\\"\\\\f125\\\"}.fa-crop-alt:before{content:\\\"\\\\f565\\\"}.fa-cross:before{content:\\\"\\\\f654\\\"}.fa-crosshairs:before{content:\\\"\\\\f05b\\\"}.fa-crow:before{content:\\\"\\\\f520\\\"}.fa-crown:before{content:\\\"\\\\f521\\\"}.fa-crutch:before{content:\\\"\\\\f7f7\\\"}.fa-css3:before{content:\\\"\\\\f13c\\\"}.fa-css3-alt:before{content:\\\"\\\\f38b\\\"}.fa-cube:before{content:\\\"\\\\f1b2\\\"}.fa-cubes:before{content:\\\"\\\\f1b3\\\"}.fa-cut:before{content:\\\"\\\\f0c4\\\"}.fa-cuttlefish:before{content:\\\"\\\\f38c\\\"}.fa-d-and-d:before{content:\\\"\\\\f38d\\\"}.fa-d-and-d-beyond:before{content:\\\"\\\\f6ca\\\"}.fa-dailymotion:before{content:\\\"\\\\f952\\\"}.fa-dashcube:before{content:\\\"\\\\f210\\\"}.fa-database:before{content:\\\"\\\\f1c0\\\"}.fa-deaf:before{content:\\\"\\\\f2a4\\\"}.fa-deezer:before{content:\\\"\\\\f977\\\"}.fa-delicious:before{content:\\\"\\\\f1a5\\\"}.fa-democrat:before{content:\\\"\\\\f747\\\"}.fa-deploydog:before{content:\\\"\\\\f38e\\\"}.fa-deskpro:before{content:\\\"\\\\f38f\\\"}.fa-desktop:before{content:\\\"\\\\f108\\\"}.fa-dev:before{content:\\\"\\\\f6cc\\\"}.fa-deviantart:before{content:\\\"\\\\f1bd\\\"}.fa-dharmachakra:before{content:\\\"\\\\f655\\\"}.fa-dhl:before{content:\\\"\\\\f790\\\"}.fa-diagnoses:before{content:\\\"\\\\f470\\\"}.fa-diaspora:before{content:\\\"\\\\f791\\\"}.fa-dice:before{content:\\\"\\\\f522\\\"}.fa-dice-d20:before{content:\\\"\\\\f6cf\\\"}.fa-dice-d6:before{content:\\\"\\\\f6d1\\\"}.fa-dice-five:before{content:\\\"\\\\f523\\\"}.fa-dice-four:before{content:\\\"\\\\f524\\\"}.fa-dice-one:before{content:\\\"\\\\f525\\\"}.fa-dice-six:before{content:\\\"\\\\f526\\\"}.fa-dice-three:before{content:\\\"\\\\f527\\\"}.fa-dice-two:before{content:\\\"\\\\f528\\\"}.fa-digg:before{content:\\\"\\\\f1a6\\\"}.fa-digital-ocean:before{content:\\\"\\\\f391\\\"}.fa-digital-tachograph:before{content:\\\"\\\\f566\\\"}.fa-directions:before{content:\\\"\\\\f5eb\\\"}.fa-discord:before{content:\\\"\\\\f392\\\"}.fa-discourse:before{content:\\\"\\\\f393\\\"}.fa-disease:before{content:\\\"\\\\f7fa\\\"}.fa-divide:before{content:\\\"\\\\f529\\\"}.fa-dizzy:before{content:\\\"\\\\f567\\\"}.fa-dna:before{content:\\\"\\\\f471\\\"}.fa-dochub:before{content:\\\"\\\\f394\\\"}.fa-docker:before{content:\\\"\\\\f395\\\"}.fa-dog:before{content:\\\"\\\\f6d3\\\"}.fa-dollar-sign:before{content:\\\"\\\\f155\\\"}.fa-dolly:before{content:\\\"\\\\f472\\\"}.fa-dolly-flatbed:before{content:\\\"\\\\f474\\\"}.fa-donate:before{content:\\\"\\\\f4b9\\\"}.fa-door-closed:before{content:\\\"\\\\f52a\\\"}.fa-door-open:before{content:\\\"\\\\f52b\\\"}.fa-dot-circle:before{content:\\\"\\\\f192\\\"}.fa-dove:before{content:\\\"\\\\f4ba\\\"}.fa-download:before{content:\\\"\\\\f019\\\"}.fa-draft2digital:before{content:\\\"\\\\f396\\\"}.fa-drafting-compass:before{content:\\\"\\\\f568\\\"}.fa-dragon:before{content:\\\"\\\\f6d5\\\"}.fa-draw-polygon:before{content:\\\"\\\\f5ee\\\"}.fa-dribbble:before{content:\\\"\\\\f17d\\\"}.fa-dribbble-square:before{content:\\\"\\\\f397\\\"}.fa-dropbox:before{content:\\\"\\\\f16b\\\"}.fa-drum:before{content:\\\"\\\\f569\\\"}.fa-drum-steelpan:before{content:\\\"\\\\f56a\\\"}.fa-drumstick-bite:before{content:\\\"\\\\f6d7\\\"}.fa-drupal:before{content:\\\"\\\\f1a9\\\"}.fa-dumbbell:before{content:\\\"\\\\f44b\\\"}.fa-dumpster:before{content:\\\"\\\\f793\\\"}.fa-dumpster-fire:before{content:\\\"\\\\f794\\\"}.fa-dungeon:before{content:\\\"\\\\f6d9\\\"}.fa-dyalog:before{content:\\\"\\\\f399\\\"}.fa-earlybirds:before{content:\\\"\\\\f39a\\\"}.fa-ebay:before{content:\\\"\\\\f4f4\\\"}.fa-edge:before{content:\\\"\\\\f282\\\"}.fa-edge-legacy:before{content:\\\"\\\\f978\\\"}.fa-edit:before{content:\\\"\\\\f044\\\"}.fa-egg:before{content:\\\"\\\\f7fb\\\"}.fa-eject:before{content:\\\"\\\\f052\\\"}.fa-elementor:before{content:\\\"\\\\f430\\\"}.fa-ellipsis-h:before{content:\\\"\\\\f141\\\"}.fa-ellipsis-v:before{content:\\\"\\\\f142\\\"}.fa-ello:before{content:\\\"\\\\f5f1\\\"}.fa-ember:before{content:\\\"\\\\f423\\\"}.fa-empire:before{content:\\\"\\\\f1d1\\\"}.fa-envelope:before{content:\\\"\\\\f0e0\\\"}.fa-envelope-open:before{content:\\\"\\\\f2b6\\\"}.fa-envelope-open-text:before{content:\\\"\\\\f658\\\"}.fa-envelope-square:before{content:\\\"\\\\f199\\\"}.fa-envira:before{content:\\\"\\\\f299\\\"}.fa-equals:before{content:\\\"\\\\f52c\\\"}.fa-eraser:before{content:\\\"\\\\f12d\\\"}.fa-erlang:before{content:\\\"\\\\f39d\\\"}.fa-ethereum:before{content:\\\"\\\\f42e\\\"}.fa-ethernet:before{content:\\\"\\\\f796\\\"}.fa-etsy:before{content:\\\"\\\\f2d7\\\"}.fa-euro-sign:before{content:\\\"\\\\f153\\\"}.fa-evernote:before{content:\\\"\\\\f839\\\"}.fa-exchange-alt:before{content:\\\"\\\\f362\\\"}.fa-exclamation:before{content:\\\"\\\\f12a\\\"}.fa-exclamation-circle:before{content:\\\"\\\\f06a\\\"}.fa-exclamation-triangle:before{content:\\\"\\\\f071\\\"}.fa-expand:before{content:\\\"\\\\f065\\\"}.fa-expand-alt:before{content:\\\"\\\\f424\\\"}.fa-expand-arrows-alt:before{content:\\\"\\\\f31e\\\"}.fa-expeditedssl:before{content:\\\"\\\\f23e\\\"}.fa-external-link-alt:before{content:\\\"\\\\f35d\\\"}.fa-external-link-square-alt:before{content:\\\"\\\\f360\\\"}.fa-eye:before{content:\\\"\\\\f06e\\\"}.fa-eye-dropper:before{content:\\\"\\\\f1fb\\\"}.fa-eye-slash:before{content:\\\"\\\\f070\\\"}.fa-facebook:before{content:\\\"\\\\f09a\\\"}.fa-facebook-f:before{content:\\\"\\\\f39e\\\"}.fa-facebook-messenger:before{content:\\\"\\\\f39f\\\"}.fa-facebook-square:before{content:\\\"\\\\f082\\\"}.fa-fan:before{content:\\\"\\\\f863\\\"}.fa-fantasy-flight-games:before{content:\\\"\\\\f6dc\\\"}.fa-fast-backward:before{content:\\\"\\\\f049\\\"}.fa-fast-forward:before{content:\\\"\\\\f050\\\"}.fa-faucet:before{content:\\\"\\\\f905\\\"}.fa-fax:before{content:\\\"\\\\f1ac\\\"}.fa-feather:before{content:\\\"\\\\f52d\\\"}.fa-feather-alt:before{content:\\\"\\\\f56b\\\"}.fa-fedex:before{content:\\\"\\\\f797\\\"}.fa-fedora:before{content:\\\"\\\\f798\\\"}.fa-female:before{content:\\\"\\\\f182\\\"}.fa-fighter-jet:before{content:\\\"\\\\f0fb\\\"}.fa-figma:before{content:\\\"\\\\f799\\\"}.fa-file:before{content:\\\"\\\\f15b\\\"}.fa-file-alt:before{content:\\\"\\\\f15c\\\"}.fa-file-archive:before{content:\\\"\\\\f1c6\\\"}.fa-file-audio:before{content:\\\"\\\\f1c7\\\"}.fa-file-code:before{content:\\\"\\\\f1c9\\\"}.fa-file-contract:before{content:\\\"\\\\f56c\\\"}.fa-file-csv:before{content:\\\"\\\\f6dd\\\"}.fa-file-download:before{content:\\\"\\\\f56d\\\"}.fa-file-excel:before{content:\\\"\\\\f1c3\\\"}.fa-file-export:before{content:\\\"\\\\f56e\\\"}.fa-file-image:before{content:\\\"\\\\f1c5\\\"}.fa-file-import:before{content:\\\"\\\\f56f\\\"}.fa-file-invoice:before{content:\\\"\\\\f570\\\"}.fa-file-invoice-dollar:before{content:\\\"\\\\f571\\\"}.fa-file-medical:before{content:\\\"\\\\f477\\\"}.fa-file-medical-alt:before{content:\\\"\\\\f478\\\"}.fa-file-pdf:before{content:\\\"\\\\f1c1\\\"}.fa-file-powerpoint:before{content:\\\"\\\\f1c4\\\"}.fa-file-prescription:before{content:\\\"\\\\f572\\\"}.fa-file-signature:before{content:\\\"\\\\f573\\\"}.fa-file-upload:before{content:\\\"\\\\f574\\\"}.fa-file-video:before{content:\\\"\\\\f1c8\\\"}.fa-file-word:before{content:\\\"\\\\f1c2\\\"}.fa-fill:before{content:\\\"\\\\f575\\\"}.fa-fill-drip:before{content:\\\"\\\\f576\\\"}.fa-film:before{content:\\\"\\\\f008\\\"}.fa-filter:before{content:\\\"\\\\f0b0\\\"}.fa-fingerprint:before{content:\\\"\\\\f577\\\"}.fa-fire:before{content:\\\"\\\\f06d\\\"}.fa-fire-alt:before{content:\\\"\\\\f7e4\\\"}.fa-fire-extinguisher:before{content:\\\"\\\\f134\\\"}.fa-firefox:before{content:\\\"\\\\f269\\\"}.fa-firefox-browser:before{content:\\\"\\\\f907\\\"}.fa-first-aid:before{content:\\\"\\\\f479\\\"}.fa-first-order:before{content:\\\"\\\\f2b0\\\"}.fa-first-order-alt:before{content:\\\"\\\\f50a\\\"}.fa-firstdraft:before{content:\\\"\\\\f3a1\\\"}.fa-fish:before{content:\\\"\\\\f578\\\"}.fa-fist-raised:before{content:\\\"\\\\f6de\\\"}.fa-flag:before{content:\\\"\\\\f024\\\"}.fa-flag-checkered:before{content:\\\"\\\\f11e\\\"}.fa-flag-usa:before{content:\\\"\\\\f74d\\\"}.fa-flask:before{content:\\\"\\\\f0c3\\\"}.fa-flickr:before{content:\\\"\\\\f16e\\\"}.fa-flipboard:before{content:\\\"\\\\f44d\\\"}.fa-flushed:before{content:\\\"\\\\f579\\\"}.fa-fly:before{content:\\\"\\\\f417\\\"}.fa-folder:before{content:\\\"\\\\f07b\\\"}.fa-folder-minus:before{content:\\\"\\\\f65d\\\"}.fa-folder-open:before{content:\\\"\\\\f07c\\\"}.fa-folder-plus:before{content:\\\"\\\\f65e\\\"}.fa-font:before{content:\\\"\\\\f031\\\"}.fa-font-awesome:before{content:\\\"\\\\f2b4\\\"}.fa-font-awesome-alt:before{content:\\\"\\\\f35c\\\"}.fa-font-awesome-flag:before{content:\\\"\\\\f425\\\"}.fa-font-awesome-logo-full:before{content:\\\"\\\\f4e6\\\"}.fa-fonticons:before{content:\\\"\\\\f280\\\"}.fa-fonticons-fi:before{content:\\\"\\\\f3a2\\\"}.fa-football-ball:before{content:\\\"\\\\f44e\\\"}.fa-fort-awesome:before{content:\\\"\\\\f286\\\"}.fa-fort-awesome-alt:before{content:\\\"\\\\f3a3\\\"}.fa-forumbee:before{content:\\\"\\\\f211\\\"}.fa-forward:before{content:\\\"\\\\f04e\\\"}.fa-foursquare:before{content:\\\"\\\\f180\\\"}.fa-free-code-camp:before{content:\\\"\\\\f2c5\\\"}.fa-freebsd:before{content:\\\"\\\\f3a4\\\"}.fa-frog:before{content:\\\"\\\\f52e\\\"}.fa-frown:before{content:\\\"\\\\f119\\\"}.fa-frown-open:before{content:\\\"\\\\f57a\\\"}.fa-fulcrum:before{content:\\\"\\\\f50b\\\"}.fa-funnel-dollar:before{content:\\\"\\\\f662\\\"}.fa-futbol:before{content:\\\"\\\\f1e3\\\"}.fa-galactic-republic:before{content:\\\"\\\\f50c\\\"}.fa-galactic-senate:before{content:\\\"\\\\f50d\\\"}.fa-gamepad:before{content:\\\"\\\\f11b\\\"}.fa-gas-pump:before{content:\\\"\\\\f52f\\\"}.fa-gavel:before{content:\\\"\\\\f0e3\\\"}.fa-gem:before{content:\\\"\\\\f3a5\\\"}.fa-genderless:before{content:\\\"\\\\f22d\\\"}.fa-get-pocket:before{content:\\\"\\\\f265\\\"}.fa-gg:before{content:\\\"\\\\f260\\\"}.fa-gg-circle:before{content:\\\"\\\\f261\\\"}.fa-ghost:before{content:\\\"\\\\f6e2\\\"}.fa-gift:before{content:\\\"\\\\f06b\\\"}.fa-gifts:before{content:\\\"\\\\f79c\\\"}.fa-git:before{content:\\\"\\\\f1d3\\\"}.fa-git-alt:before{content:\\\"\\\\f841\\\"}.fa-git-square:before{content:\\\"\\\\f1d2\\\"}.fa-github:before{content:\\\"\\\\f09b\\\"}.fa-github-alt:before{content:\\\"\\\\f113\\\"}.fa-github-square:before{content:\\\"\\\\f092\\\"}.fa-gitkraken:before{content:\\\"\\\\f3a6\\\"}.fa-gitlab:before{content:\\\"\\\\f296\\\"}.fa-gitter:before{content:\\\"\\\\f426\\\"}.fa-glass-cheers:before{content:\\\"\\\\f79f\\\"}.fa-glass-martini:before{content:\\\"\\\\f000\\\"}.fa-glass-martini-alt:before{content:\\\"\\\\f57b\\\"}.fa-glass-whiskey:before{content:\\\"\\\\f7a0\\\"}.fa-glasses:before{content:\\\"\\\\f530\\\"}.fa-glide:before{content:\\\"\\\\f2a5\\\"}.fa-glide-g:before{content:\\\"\\\\f2a6\\\"}.fa-globe:before{content:\\\"\\\\f0ac\\\"}.fa-globe-africa:before{content:\\\"\\\\f57c\\\"}.fa-globe-americas:before{content:\\\"\\\\f57d\\\"}.fa-globe-asia:before{content:\\\"\\\\f57e\\\"}.fa-globe-europe:before{content:\\\"\\\\f7a2\\\"}.fa-gofore:before{content:\\\"\\\\f3a7\\\"}.fa-golf-ball:before{content:\\\"\\\\f450\\\"}.fa-goodreads:before{content:\\\"\\\\f3a8\\\"}.fa-goodreads-g:before{content:\\\"\\\\f3a9\\\"}.fa-google:before{content:\\\"\\\\f1a0\\\"}.fa-google-drive:before{content:\\\"\\\\f3aa\\\"}.fa-google-pay:before{content:\\\"\\\\f979\\\"}.fa-google-play:before{content:\\\"\\\\f3ab\\\"}.fa-google-plus:before{content:\\\"\\\\f2b3\\\"}.fa-google-plus-g:before{content:\\\"\\\\f0d5\\\"}.fa-google-plus-square:before{content:\\\"\\\\f0d4\\\"}.fa-google-wallet:before{content:\\\"\\\\f1ee\\\"}.fa-gopuram:before{content:\\\"\\\\f664\\\"}.fa-graduation-cap:before{content:\\\"\\\\f19d\\\"}.fa-gratipay:before{content:\\\"\\\\f184\\\"}.fa-grav:before{content:\\\"\\\\f2d6\\\"}.fa-greater-than:before{content:\\\"\\\\f531\\\"}.fa-greater-than-equal:before{content:\\\"\\\\f532\\\"}.fa-grimace:before{content:\\\"\\\\f57f\\\"}.fa-grin:before{content:\\\"\\\\f580\\\"}.fa-grin-alt:before{content:\\\"\\\\f581\\\"}.fa-grin-beam:before{content:\\\"\\\\f582\\\"}.fa-grin-beam-sweat:before{content:\\\"\\\\f583\\\"}.fa-grin-hearts:before{content:\\\"\\\\f584\\\"}.fa-grin-squint:before{content:\\\"\\\\f585\\\"}.fa-grin-squint-tears:before{content:\\\"\\\\f586\\\"}.fa-grin-stars:before{content:\\\"\\\\f587\\\"}.fa-grin-tears:before{content:\\\"\\\\f588\\\"}.fa-grin-tongue:before{content:\\\"\\\\f589\\\"}.fa-grin-tongue-squint:before{content:\\\"\\\\f58a\\\"}.fa-grin-tongue-wink:before{content:\\\"\\\\f58b\\\"}.fa-grin-wink:before{content:\\\"\\\\f58c\\\"}.fa-grip-horizontal:before{content:\\\"\\\\f58d\\\"}.fa-grip-lines:before{content:\\\"\\\\f7a4\\\"}.fa-grip-lines-vertical:before{content:\\\"\\\\f7a5\\\"}.fa-grip-vertical:before{content:\\\"\\\\f58e\\\"}.fa-gripfire:before{content:\\\"\\\\f3ac\\\"}.fa-grunt:before{content:\\\"\\\\f3ad\\\"}.fa-guitar:before{content:\\\"\\\\f7a6\\\"}.fa-gulp:before{content:\\\"\\\\f3ae\\\"}.fa-h-square:before{content:\\\"\\\\f0fd\\\"}.fa-hacker-news:before{content:\\\"\\\\f1d4\\\"}.fa-hacker-news-square:before{content:\\\"\\\\f3af\\\"}.fa-hackerrank:before{content:\\\"\\\\f5f7\\\"}.fa-hamburger:before{content:\\\"\\\\f805\\\"}.fa-hammer:before{content:\\\"\\\\f6e3\\\"}.fa-hamsa:before{content:\\\"\\\\f665\\\"}.fa-hand-holding:before{content:\\\"\\\\f4bd\\\"}.fa-hand-holding-heart:before{content:\\\"\\\\f4be\\\"}.fa-hand-holding-medical:before{content:\\\"\\\\f95c\\\"}.fa-hand-holding-usd:before{content:\\\"\\\\f4c0\\\"}.fa-hand-holding-water:before{content:\\\"\\\\f4c1\\\"}.fa-hand-lizard:before{content:\\\"\\\\f258\\\"}.fa-hand-middle-finger:before{content:\\\"\\\\f806\\\"}.fa-hand-paper:before{content:\\\"\\\\f256\\\"}.fa-hand-peace:before{content:\\\"\\\\f25b\\\"}.fa-hand-point-down:before{content:\\\"\\\\f0a7\\\"}.fa-hand-point-left:before{content:\\\"\\\\f0a5\\\"}.fa-hand-point-right:before{content:\\\"\\\\f0a4\\\"}.fa-hand-point-up:before{content:\\\"\\\\f0a6\\\"}.fa-hand-pointer:before{content:\\\"\\\\f25a\\\"}.fa-hand-rock:before{content:\\\"\\\\f255\\\"}.fa-hand-scissors:before{content:\\\"\\\\f257\\\"}.fa-hand-sparkles:before{content:\\\"\\\\f95d\\\"}.fa-hand-spock:before{content:\\\"\\\\f259\\\"}.fa-hands:before{content:\\\"\\\\f4c2\\\"}.fa-hands-helping:before{content:\\\"\\\\f4c4\\\"}.fa-hands-wash:before{content:\\\"\\\\f95e\\\"}.fa-handshake:before{content:\\\"\\\\f2b5\\\"}.fa-handshake-alt-slash:before{content:\\\"\\\\f95f\\\"}.fa-handshake-slash:before{content:\\\"\\\\f960\\\"}.fa-hanukiah:before{content:\\\"\\\\f6e6\\\"}.fa-hard-hat:before{content:\\\"\\\\f807\\\"}.fa-hashtag:before{content:\\\"\\\\f292\\\"}.fa-hat-cowboy:before{content:\\\"\\\\f8c0\\\"}.fa-hat-cowboy-side:before{content:\\\"\\\\f8c1\\\"}.fa-hat-wizard:before{content:\\\"\\\\f6e8\\\"}.fa-hdd:before{content:\\\"\\\\f0a0\\\"}.fa-head-side-cough:before{content:\\\"\\\\f961\\\"}.fa-head-side-cough-slash:before{content:\\\"\\\\f962\\\"}.fa-head-side-mask:before{content:\\\"\\\\f963\\\"}.fa-head-side-virus:before{content:\\\"\\\\f964\\\"}.fa-heading:before{content:\\\"\\\\f1dc\\\"}.fa-headphones:before{content:\\\"\\\\f025\\\"}.fa-headphones-alt:before{content:\\\"\\\\f58f\\\"}.fa-headset:before{content:\\\"\\\\f590\\\"}.fa-heart:before{content:\\\"\\\\f004\\\"}.fa-heart-broken:before{content:\\\"\\\\f7a9\\\"}.fa-heartbeat:before{content:\\\"\\\\f21e\\\"}.fa-helicopter:before{content:\\\"\\\\f533\\\"}.fa-highlighter:before{content:\\\"\\\\f591\\\"}.fa-hiking:before{content:\\\"\\\\f6ec\\\"}.fa-hippo:before{content:\\\"\\\\f6ed\\\"}.fa-hips:before{content:\\\"\\\\f452\\\"}.fa-hire-a-helper:before{content:\\\"\\\\f3b0\\\"}.fa-history:before{content:\\\"\\\\f1da\\\"}.fa-hockey-puck:before{content:\\\"\\\\f453\\\"}.fa-holly-berry:before{content:\\\"\\\\f7aa\\\"}.fa-home:before{content:\\\"\\\\f015\\\"}.fa-hooli:before{content:\\\"\\\\f427\\\"}.fa-hornbill:before{content:\\\"\\\\f592\\\"}.fa-horse:before{content:\\\"\\\\f6f0\\\"}.fa-horse-head:before{content:\\\"\\\\f7ab\\\"}.fa-hospital:before{content:\\\"\\\\f0f8\\\"}.fa-hospital-alt:before{content:\\\"\\\\f47d\\\"}.fa-hospital-symbol:before{content:\\\"\\\\f47e\\\"}.fa-hospital-user:before{content:\\\"\\\\f80d\\\"}.fa-hot-tub:before{content:\\\"\\\\f593\\\"}.fa-hotdog:before{content:\\\"\\\\f80f\\\"}.fa-hotel:before{content:\\\"\\\\f594\\\"}.fa-hotjar:before{content:\\\"\\\\f3b1\\\"}.fa-hourglass:before{content:\\\"\\\\f254\\\"}.fa-hourglass-end:before{content:\\\"\\\\f253\\\"}.fa-hourglass-half:before{content:\\\"\\\\f252\\\"}.fa-hourglass-start:before{content:\\\"\\\\f251\\\"}.fa-house-damage:before{content:\\\"\\\\f6f1\\\"}.fa-house-user:before{content:\\\"\\\\f965\\\"}.fa-houzz:before{content:\\\"\\\\f27c\\\"}.fa-hryvnia:before{content:\\\"\\\\f6f2\\\"}.fa-html5:before{content:\\\"\\\\f13b\\\"}.fa-hubspot:before{content:\\\"\\\\f3b2\\\"}.fa-i-cursor:before{content:\\\"\\\\f246\\\"}.fa-ice-cream:before{content:\\\"\\\\f810\\\"}.fa-icicles:before{content:\\\"\\\\f7ad\\\"}.fa-icons:before{content:\\\"\\\\f86d\\\"}.fa-id-badge:before{content:\\\"\\\\f2c1\\\"}.fa-id-card:before{content:\\\"\\\\f2c2\\\"}.fa-id-card-alt:before{content:\\\"\\\\f47f\\\"}.fa-ideal:before{content:\\\"\\\\f913\\\"}.fa-igloo:before{content:\\\"\\\\f7ae\\\"}.fa-image:before{content:\\\"\\\\f03e\\\"}.fa-images:before{content:\\\"\\\\f302\\\"}.fa-imdb:before{content:\\\"\\\\f2d8\\\"}.fa-inbox:before{content:\\\"\\\\f01c\\\"}.fa-indent:before{content:\\\"\\\\f03c\\\"}.fa-industry:before{content:\\\"\\\\f275\\\"}.fa-infinity:before{content:\\\"\\\\f534\\\"}.fa-info:before{content:\\\"\\\\f129\\\"}.fa-info-circle:before{content:\\\"\\\\f05a\\\"}.fa-instagram:before{content:\\\"\\\\f16d\\\"}.fa-instagram-square:before{content:\\\"\\\\f955\\\"}.fa-intercom:before{content:\\\"\\\\f7af\\\"}.fa-internet-explorer:before{content:\\\"\\\\f26b\\\"}.fa-invision:before{content:\\\"\\\\f7b0\\\"}.fa-ioxhost:before{content:\\\"\\\\f208\\\"}.fa-italic:before{content:\\\"\\\\f033\\\"}.fa-itch-io:before{content:\\\"\\\\f83a\\\"}.fa-itunes:before{content:\\\"\\\\f3b4\\\"}.fa-itunes-note:before{content:\\\"\\\\f3b5\\\"}.fa-java:before{content:\\\"\\\\f4e4\\\"}.fa-jedi:before{content:\\\"\\\\f669\\\"}.fa-jedi-order:before{content:\\\"\\\\f50e\\\"}.fa-jenkins:before{content:\\\"\\\\f3b6\\\"}.fa-jira:before{content:\\\"\\\\f7b1\\\"}.fa-joget:before{content:\\\"\\\\f3b7\\\"}.fa-joint:before{content:\\\"\\\\f595\\\"}.fa-joomla:before{content:\\\"\\\\f1aa\\\"}.fa-journal-whills:before{content:\\\"\\\\f66a\\\"}.fa-js:before{content:\\\"\\\\f3b8\\\"}.fa-js-square:before{content:\\\"\\\\f3b9\\\"}.fa-jsfiddle:before{content:\\\"\\\\f1cc\\\"}.fa-kaaba:before{content:\\\"\\\\f66b\\\"}.fa-kaggle:before{content:\\\"\\\\f5fa\\\"}.fa-key:before{content:\\\"\\\\f084\\\"}.fa-keybase:before{content:\\\"\\\\f4f5\\\"}.fa-keyboard:before{content:\\\"\\\\f11c\\\"}.fa-keycdn:before{content:\\\"\\\\f3ba\\\"}.fa-khanda:before{content:\\\"\\\\f66d\\\"}.fa-kickstarter:before{content:\\\"\\\\f3bb\\\"}.fa-kickstarter-k:before{content:\\\"\\\\f3bc\\\"}.fa-kiss:before{content:\\\"\\\\f596\\\"}.fa-kiss-beam:before{content:\\\"\\\\f597\\\"}.fa-kiss-wink-heart:before{content:\\\"\\\\f598\\\"}.fa-kiwi-bird:before{content:\\\"\\\\f535\\\"}.fa-korvue:before{content:\\\"\\\\f42f\\\"}.fa-landmark:before{content:\\\"\\\\f66f\\\"}.fa-language:before{content:\\\"\\\\f1ab\\\"}.fa-laptop:before{content:\\\"\\\\f109\\\"}.fa-laptop-code:before{content:\\\"\\\\f5fc\\\"}.fa-laptop-house:before{content:\\\"\\\\f966\\\"}.fa-laptop-medical:before{content:\\\"\\\\f812\\\"}.fa-laravel:before{content:\\\"\\\\f3bd\\\"}.fa-lastfm:before{content:\\\"\\\\f202\\\"}.fa-lastfm-square:before{content:\\\"\\\\f203\\\"}.fa-laugh:before{content:\\\"\\\\f599\\\"}.fa-laugh-beam:before{content:\\\"\\\\f59a\\\"}.fa-laugh-squint:before{content:\\\"\\\\f59b\\\"}.fa-laugh-wink:before{content:\\\"\\\\f59c\\\"}.fa-layer-group:before{content:\\\"\\\\f5fd\\\"}.fa-leaf:before{content:\\\"\\\\f06c\\\"}.fa-leanpub:before{content:\\\"\\\\f212\\\"}.fa-lemon:before{content:\\\"\\\\f094\\\"}.fa-less:before{content:\\\"\\\\f41d\\\"}.fa-less-than:before{content:\\\"\\\\f536\\\"}.fa-less-than-equal:before{content:\\\"\\\\f537\\\"}.fa-level-down-alt:before{content:\\\"\\\\f3be\\\"}.fa-level-up-alt:before{content:\\\"\\\\f3bf\\\"}.fa-life-ring:before{content:\\\"\\\\f1cd\\\"}.fa-lightbulb:before{content:\\\"\\\\f0eb\\\"}.fa-line:before{content:\\\"\\\\f3c0\\\"}.fa-link:before{content:\\\"\\\\f0c1\\\"}.fa-linkedin:before{content:\\\"\\\\f08c\\\"}.fa-linkedin-in:before{content:\\\"\\\\f0e1\\\"}.fa-linode:before{content:\\\"\\\\f2b8\\\"}.fa-linux:before{content:\\\"\\\\f17c\\\"}.fa-lira-sign:before{content:\\\"\\\\f195\\\"}.fa-list:before{content:\\\"\\\\f03a\\\"}.fa-list-alt:before{content:\\\"\\\\f022\\\"}.fa-list-ol:before{content:\\\"\\\\f0cb\\\"}.fa-list-ul:before{content:\\\"\\\\f0ca\\\"}.fa-location-arrow:before{content:\\\"\\\\f124\\\"}.fa-lock:before{content:\\\"\\\\f023\\\"}.fa-lock-open:before{content:\\\"\\\\f3c1\\\"}.fa-long-arrow-alt-down:before{content:\\\"\\\\f309\\\"}.fa-long-arrow-alt-left:before{content:\\\"\\\\f30a\\\"}.fa-long-arrow-alt-right:before{content:\\\"\\\\f30b\\\"}.fa-long-arrow-alt-up:before{content:\\\"\\\\f30c\\\"}.fa-low-vision:before{content:\\\"\\\\f2a8\\\"}.fa-luggage-cart:before{content:\\\"\\\\f59d\\\"}.fa-lungs:before{content:\\\"\\\\f604\\\"}.fa-lungs-virus:before{content:\\\"\\\\f967\\\"}.fa-lyft:before{content:\\\"\\\\f3c3\\\"}.fa-magento:before{content:\\\"\\\\f3c4\\\"}.fa-magic:before{content:\\\"\\\\f0d0\\\"}.fa-magnet:before{content:\\\"\\\\f076\\\"}.fa-mail-bulk:before{content:\\\"\\\\f674\\\"}.fa-mailchimp:before{content:\\\"\\\\f59e\\\"}.fa-male:before{content:\\\"\\\\f183\\\"}.fa-mandalorian:before{content:\\\"\\\\f50f\\\"}.fa-map:before{content:\\\"\\\\f279\\\"}.fa-map-marked:before{content:\\\"\\\\f59f\\\"}.fa-map-marked-alt:before{content:\\\"\\\\f5a0\\\"}.fa-map-marker:before{content:\\\"\\\\f041\\\"}.fa-map-marker-alt:before{content:\\\"\\\\f3c5\\\"}.fa-map-pin:before{content:\\\"\\\\f276\\\"}.fa-map-signs:before{content:\\\"\\\\f277\\\"}.fa-markdown:before{content:\\\"\\\\f60f\\\"}.fa-marker:before{content:\\\"\\\\f5a1\\\"}.fa-mars:before{content:\\\"\\\\f222\\\"}.fa-mars-double:before{content:\\\"\\\\f227\\\"}.fa-mars-stroke:before{content:\\\"\\\\f229\\\"}.fa-mars-stroke-h:before{content:\\\"\\\\f22b\\\"}.fa-mars-stroke-v:before{content:\\\"\\\\f22a\\\"}.fa-mask:before{content:\\\"\\\\f6fa\\\"}.fa-mastodon:before{content:\\\"\\\\f4f6\\\"}.fa-maxcdn:before{content:\\\"\\\\f136\\\"}.fa-mdb:before{content:\\\"\\\\f8ca\\\"}.fa-medal:before{content:\\\"\\\\f5a2\\\"}.fa-medapps:before{content:\\\"\\\\f3c6\\\"}.fa-medium:before{content:\\\"\\\\f23a\\\"}.fa-medium-m:before{content:\\\"\\\\f3c7\\\"}.fa-medkit:before{content:\\\"\\\\f0fa\\\"}.fa-medrt:before{content:\\\"\\\\f3c8\\\"}.fa-meetup:before{content:\\\"\\\\f2e0\\\"}.fa-megaport:before{content:\\\"\\\\f5a3\\\"}.fa-meh:before{content:\\\"\\\\f11a\\\"}.fa-meh-blank:before{content:\\\"\\\\f5a4\\\"}.fa-meh-rolling-eyes:before{content:\\\"\\\\f5a5\\\"}.fa-memory:before{content:\\\"\\\\f538\\\"}.fa-mendeley:before{content:\\\"\\\\f7b3\\\"}.fa-menorah:before{content:\\\"\\\\f676\\\"}.fa-mercury:before{content:\\\"\\\\f223\\\"}.fa-meteor:before{content:\\\"\\\\f753\\\"}.fa-microblog:before{content:\\\"\\\\f91a\\\"}.fa-microchip:before{content:\\\"\\\\f2db\\\"}.fa-microphone:before{content:\\\"\\\\f130\\\"}.fa-microphone-alt:before{content:\\\"\\\\f3c9\\\"}.fa-microphone-alt-slash:before{content:\\\"\\\\f539\\\"}.fa-microphone-slash:before{content:\\\"\\\\f131\\\"}.fa-microscope:before{content:\\\"\\\\f610\\\"}.fa-microsoft:before{content:\\\"\\\\f3ca\\\"}.fa-minus:before{content:\\\"\\\\f068\\\"}.fa-minus-circle:before{content:\\\"\\\\f056\\\"}.fa-minus-square:before{content:\\\"\\\\f146\\\"}.fa-mitten:before{content:\\\"\\\\f7b5\\\"}.fa-mix:before{content:\\\"\\\\f3cb\\\"}.fa-mixcloud:before{content:\\\"\\\\f289\\\"}.fa-mixer:before{content:\\\"\\\\f956\\\"}.fa-mizuni:before{content:\\\"\\\\f3cc\\\"}.fa-mobile:before{content:\\\"\\\\f10b\\\"}.fa-mobile-alt:before{content:\\\"\\\\f3cd\\\"}.fa-modx:before{content:\\\"\\\\f285\\\"}.fa-monero:before{content:\\\"\\\\f3d0\\\"}.fa-money-bill:before{content:\\\"\\\\f0d6\\\"}.fa-money-bill-alt:before{content:\\\"\\\\f3d1\\\"}.fa-money-bill-wave:before{content:\\\"\\\\f53a\\\"}.fa-money-bill-wave-alt:before{content:\\\"\\\\f53b\\\"}.fa-money-check:before{content:\\\"\\\\f53c\\\"}.fa-money-check-alt:before{content:\\\"\\\\f53d\\\"}.fa-monument:before{content:\\\"\\\\f5a6\\\"}.fa-moon:before{content:\\\"\\\\f186\\\"}.fa-mortar-pestle:before{content:\\\"\\\\f5a7\\\"}.fa-mosque:before{content:\\\"\\\\f678\\\"}.fa-motorcycle:before{content:\\\"\\\\f21c\\\"}.fa-mountain:before{content:\\\"\\\\f6fc\\\"}.fa-mouse:before{content:\\\"\\\\f8cc\\\"}.fa-mouse-pointer:before{content:\\\"\\\\f245\\\"}.fa-mug-hot:before{content:\\\"\\\\f7b6\\\"}.fa-music:before{content:\\\"\\\\f001\\\"}.fa-napster:before{content:\\\"\\\\f3d2\\\"}.fa-neos:before{content:\\\"\\\\f612\\\"}.fa-network-wired:before{content:\\\"\\\\f6ff\\\"}.fa-neuter:before{content:\\\"\\\\f22c\\\"}.fa-newspaper:before{content:\\\"\\\\f1ea\\\"}.fa-nimblr:before{content:\\\"\\\\f5a8\\\"}.fa-node:before{content:\\\"\\\\f419\\\"}.fa-node-js:before{content:\\\"\\\\f3d3\\\"}.fa-not-equal:before{content:\\\"\\\\f53e\\\"}.fa-notes-medical:before{content:\\\"\\\\f481\\\"}.fa-npm:before{content:\\\"\\\\f3d4\\\"}.fa-ns8:before{content:\\\"\\\\f3d5\\\"}.fa-nutritionix:before{content:\\\"\\\\f3d6\\\"}.fa-object-group:before{content:\\\"\\\\f247\\\"}.fa-object-ungroup:before{content:\\\"\\\\f248\\\"}.fa-odnoklassniki:before{content:\\\"\\\\f263\\\"}.fa-odnoklassniki-square:before{content:\\\"\\\\f264\\\"}.fa-oil-can:before{content:\\\"\\\\f613\\\"}.fa-old-republic:before{content:\\\"\\\\f510\\\"}.fa-om:before{content:\\\"\\\\f679\\\"}.fa-opencart:before{content:\\\"\\\\f23d\\\"}.fa-openid:before{content:\\\"\\\\f19b\\\"}.fa-opera:before{content:\\\"\\\\f26a\\\"}.fa-optin-monster:before{content:\\\"\\\\f23c\\\"}.fa-orcid:before{content:\\\"\\\\f8d2\\\"}.fa-osi:before{content:\\\"\\\\f41a\\\"}.fa-otter:before{content:\\\"\\\\f700\\\"}.fa-outdent:before{content:\\\"\\\\f03b\\\"}.fa-page4:before{content:\\\"\\\\f3d7\\\"}.fa-pagelines:before{content:\\\"\\\\f18c\\\"}.fa-pager:before{content:\\\"\\\\f815\\\"}.fa-paint-brush:before{content:\\\"\\\\f1fc\\\"}.fa-paint-roller:before{content:\\\"\\\\f5aa\\\"}.fa-palette:before{content:\\\"\\\\f53f\\\"}.fa-palfed:before{content:\\\"\\\\f3d8\\\"}.fa-pallet:before{content:\\\"\\\\f482\\\"}.fa-paper-plane:before{content:\\\"\\\\f1d8\\\"}.fa-paperclip:before{content:\\\"\\\\f0c6\\\"}.fa-parachute-box:before{content:\\\"\\\\f4cd\\\"}.fa-paragraph:before{content:\\\"\\\\f1dd\\\"}.fa-parking:before{content:\\\"\\\\f540\\\"}.fa-passport:before{content:\\\"\\\\f5ab\\\"}.fa-pastafarianism:before{content:\\\"\\\\f67b\\\"}.fa-paste:before{content:\\\"\\\\f0ea\\\"}.fa-patreon:before{content:\\\"\\\\f3d9\\\"}.fa-pause:before{content:\\\"\\\\f04c\\\"}.fa-pause-circle:before{content:\\\"\\\\f28b\\\"}.fa-paw:before{content:\\\"\\\\f1b0\\\"}.fa-paypal:before{content:\\\"\\\\f1ed\\\"}.fa-peace:before{content:\\\"\\\\f67c\\\"}.fa-pen:before{content:\\\"\\\\f304\\\"}.fa-pen-alt:before{content:\\\"\\\\f305\\\"}.fa-pen-fancy:before{content:\\\"\\\\f5ac\\\"}.fa-pen-nib:before{content:\\\"\\\\f5ad\\\"}.fa-pen-square:before{content:\\\"\\\\f14b\\\"}.fa-pencil-alt:before{content:\\\"\\\\f303\\\"}.fa-pencil-ruler:before{content:\\\"\\\\f5ae\\\"}.fa-penny-arcade:before{content:\\\"\\\\f704\\\"}.fa-people-arrows:before{content:\\\"\\\\f968\\\"}.fa-people-carry:before{content:\\\"\\\\f4ce\\\"}.fa-pepper-hot:before{content:\\\"\\\\f816\\\"}.fa-percent:before{content:\\\"\\\\f295\\\"}.fa-percentage:before{content:\\\"\\\\f541\\\"}.fa-periscope:before{content:\\\"\\\\f3da\\\"}.fa-person-booth:before{content:\\\"\\\\f756\\\"}.fa-phabricator:before{content:\\\"\\\\f3db\\\"}.fa-phoenix-framework:before{content:\\\"\\\\f3dc\\\"}.fa-phoenix-squadron:before{content:\\\"\\\\f511\\\"}.fa-phone:before{content:\\\"\\\\f095\\\"}.fa-phone-alt:before{content:\\\"\\\\f879\\\"}.fa-phone-slash:before{content:\\\"\\\\f3dd\\\"}.fa-phone-square:before{content:\\\"\\\\f098\\\"}.fa-phone-square-alt:before{content:\\\"\\\\f87b\\\"}.fa-phone-volume:before{content:\\\"\\\\f2a0\\\"}.fa-photo-video:before{content:\\\"\\\\f87c\\\"}.fa-php:before{content:\\\"\\\\f457\\\"}.fa-pied-piper:before{content:\\\"\\\\f2ae\\\"}.fa-pied-piper-alt:before{content:\\\"\\\\f1a8\\\"}.fa-pied-piper-hat:before{content:\\\"\\\\f4e5\\\"}.fa-pied-piper-pp:before{content:\\\"\\\\f1a7\\\"}.fa-pied-piper-square:before{content:\\\"\\\\f91e\\\"}.fa-piggy-bank:before{content:\\\"\\\\f4d3\\\"}.fa-pills:before{content:\\\"\\\\f484\\\"}.fa-pinterest:before{content:\\\"\\\\f0d2\\\"}.fa-pinterest-p:before{content:\\\"\\\\f231\\\"}.fa-pinterest-square:before{content:\\\"\\\\f0d3\\\"}.fa-pizza-slice:before{content:\\\"\\\\f818\\\"}.fa-place-of-worship:before{content:\\\"\\\\f67f\\\"}.fa-plane:before{content:\\\"\\\\f072\\\"}.fa-plane-arrival:before{content:\\\"\\\\f5af\\\"}.fa-plane-departure:before{content:\\\"\\\\f5b0\\\"}.fa-plane-slash:before{content:\\\"\\\\f969\\\"}.fa-play:before{content:\\\"\\\\f04b\\\"}.fa-play-circle:before{content:\\\"\\\\f144\\\"}.fa-playstation:before{content:\\\"\\\\f3df\\\"}.fa-plug:before{content:\\\"\\\\f1e6\\\"}.fa-plus:before{content:\\\"\\\\f067\\\"}.fa-plus-circle:before{content:\\\"\\\\f055\\\"}.fa-plus-square:before{content:\\\"\\\\f0fe\\\"}.fa-podcast:before{content:\\\"\\\\f2ce\\\"}.fa-poll:before{content:\\\"\\\\f681\\\"}.fa-poll-h:before{content:\\\"\\\\f682\\\"}.fa-poo:before{content:\\\"\\\\f2fe\\\"}.fa-poo-storm:before{content:\\\"\\\\f75a\\\"}.fa-poop:before{content:\\\"\\\\f619\\\"}.fa-portrait:before{content:\\\"\\\\f3e0\\\"}.fa-pound-sign:before{content:\\\"\\\\f154\\\"}.fa-power-off:before{content:\\\"\\\\f011\\\"}.fa-pray:before{content:\\\"\\\\f683\\\"}.fa-praying-hands:before{content:\\\"\\\\f684\\\"}.fa-prescription:before{content:\\\"\\\\f5b1\\\"}.fa-prescription-bottle:before{content:\\\"\\\\f485\\\"}.fa-prescription-bottle-alt:before{content:\\\"\\\\f486\\\"}.fa-print:before{content:\\\"\\\\f02f\\\"}.fa-procedures:before{content:\\\"\\\\f487\\\"}.fa-product-hunt:before{content:\\\"\\\\f288\\\"}.fa-project-diagram:before{content:\\\"\\\\f542\\\"}.fa-pump-medical:before{content:\\\"\\\\f96a\\\"}.fa-pump-soap:before{content:\\\"\\\\f96b\\\"}.fa-pushed:before{content:\\\"\\\\f3e1\\\"}.fa-puzzle-piece:before{content:\\\"\\\\f12e\\\"}.fa-python:before{content:\\\"\\\\f3e2\\\"}.fa-qq:before{content:\\\"\\\\f1d6\\\"}.fa-qrcode:before{content:\\\"\\\\f029\\\"}.fa-question:before{content:\\\"\\\\f128\\\"}.fa-question-circle:before{content:\\\"\\\\f059\\\"}.fa-quidditch:before{content:\\\"\\\\f458\\\"}.fa-quinscape:before{content:\\\"\\\\f459\\\"}.fa-quora:before{content:\\\"\\\\f2c4\\\"}.fa-quote-left:before{content:\\\"\\\\f10d\\\"}.fa-quote-right:before{content:\\\"\\\\f10e\\\"}.fa-quran:before{content:\\\"\\\\f687\\\"}.fa-r-project:before{content:\\\"\\\\f4f7\\\"}.fa-radiation:before{content:\\\"\\\\f7b9\\\"}.fa-radiation-alt:before{content:\\\"\\\\f7ba\\\"}.fa-rainbow:before{content:\\\"\\\\f75b\\\"}.fa-random:before{content:\\\"\\\\f074\\\"}.fa-raspberry-pi:before{content:\\\"\\\\f7bb\\\"}.fa-ravelry:before{content:\\\"\\\\f2d9\\\"}.fa-react:before{content:\\\"\\\\f41b\\\"}.fa-reacteurope:before{content:\\\"\\\\f75d\\\"}.fa-readme:before{content:\\\"\\\\f4d5\\\"}.fa-rebel:before{content:\\\"\\\\f1d0\\\"}.fa-receipt:before{content:\\\"\\\\f543\\\"}.fa-record-vinyl:before{content:\\\"\\\\f8d9\\\"}.fa-recycle:before{content:\\\"\\\\f1b8\\\"}.fa-red-river:before{content:\\\"\\\\f3e3\\\"}.fa-reddit:before{content:\\\"\\\\f1a1\\\"}.fa-reddit-alien:before{content:\\\"\\\\f281\\\"}.fa-reddit-square:before{content:\\\"\\\\f1a2\\\"}.fa-redhat:before{content:\\\"\\\\f7bc\\\"}.fa-redo:before{content:\\\"\\\\f01e\\\"}.fa-redo-alt:before{content:\\\"\\\\f2f9\\\"}.fa-registered:before{content:\\\"\\\\f25d\\\"}.fa-remove-format:before{content:\\\"\\\\f87d\\\"}.fa-renren:before{content:\\\"\\\\f18b\\\"}.fa-reply:before{content:\\\"\\\\f3e5\\\"}.fa-reply-all:before{content:\\\"\\\\f122\\\"}.fa-replyd:before{content:\\\"\\\\f3e6\\\"}.fa-republican:before{content:\\\"\\\\f75e\\\"}.fa-researchgate:before{content:\\\"\\\\f4f8\\\"}.fa-resolving:before{content:\\\"\\\\f3e7\\\"}.fa-restroom:before{content:\\\"\\\\f7bd\\\"}.fa-retweet:before{content:\\\"\\\\f079\\\"}.fa-rev:before{content:\\\"\\\\f5b2\\\"}.fa-ribbon:before{content:\\\"\\\\f4d6\\\"}.fa-ring:before{content:\\\"\\\\f70b\\\"}.fa-road:before{content:\\\"\\\\f018\\\"}.fa-robot:before{content:\\\"\\\\f544\\\"}.fa-rocket:before{content:\\\"\\\\f135\\\"}.fa-rocketchat:before{content:\\\"\\\\f3e8\\\"}.fa-rockrms:before{content:\\\"\\\\f3e9\\\"}.fa-route:before{content:\\\"\\\\f4d7\\\"}.fa-rss:before{content:\\\"\\\\f09e\\\"}.fa-rss-square:before{content:\\\"\\\\f143\\\"}.fa-ruble-sign:before{content:\\\"\\\\f158\\\"}.fa-ruler:before{content:\\\"\\\\f545\\\"}.fa-ruler-combined:before{content:\\\"\\\\f546\\\"}.fa-ruler-horizontal:before{content:\\\"\\\\f547\\\"}.fa-ruler-vertical:before{content:\\\"\\\\f548\\\"}.fa-running:before{content:\\\"\\\\f70c\\\"}.fa-rupee-sign:before{content:\\\"\\\\f156\\\"}.fa-rust:before{content:\\\"\\\\f97a\\\"}.fa-sad-cry:before{content:\\\"\\\\f5b3\\\"}.fa-sad-tear:before{content:\\\"\\\\f5b4\\\"}.fa-safari:before{content:\\\"\\\\f267\\\"}.fa-salesforce:before{content:\\\"\\\\f83b\\\"}.fa-sass:before{content:\\\"\\\\f41e\\\"}.fa-satellite:before{content:\\\"\\\\f7bf\\\"}.fa-satellite-dish:before{content:\\\"\\\\f7c0\\\"}.fa-save:before{content:\\\"\\\\f0c7\\\"}.fa-schlix:before{content:\\\"\\\\f3ea\\\"}.fa-school:before{content:\\\"\\\\f549\\\"}.fa-screwdriver:before{content:\\\"\\\\f54a\\\"}.fa-scribd:before{content:\\\"\\\\f28a\\\"}.fa-scroll:before{content:\\\"\\\\f70e\\\"}.fa-sd-card:before{content:\\\"\\\\f7c2\\\"}.fa-search:before{content:\\\"\\\\f002\\\"}.fa-search-dollar:before{content:\\\"\\\\f688\\\"}.fa-search-location:before{content:\\\"\\\\f689\\\"}.fa-search-minus:before{content:\\\"\\\\f010\\\"}.fa-search-plus:before{content:\\\"\\\\f00e\\\"}.fa-searchengin:before{content:\\\"\\\\f3eb\\\"}.fa-seedling:before{content:\\\"\\\\f4d8\\\"}.fa-sellcast:before{content:\\\"\\\\f2da\\\"}.fa-sellsy:before{content:\\\"\\\\f213\\\"}.fa-server:before{content:\\\"\\\\f233\\\"}.fa-servicestack:before{content:\\\"\\\\f3ec\\\"}.fa-shapes:before{content:\\\"\\\\f61f\\\"}.fa-share:before{content:\\\"\\\\f064\\\"}.fa-share-alt:before{content:\\\"\\\\f1e0\\\"}.fa-share-alt-square:before{content:\\\"\\\\f1e1\\\"}.fa-share-square:before{content:\\\"\\\\f14d\\\"}.fa-shekel-sign:before{content:\\\"\\\\f20b\\\"}.fa-shield-alt:before{content:\\\"\\\\f3ed\\\"}.fa-shield-virus:before{content:\\\"\\\\f96c\\\"}.fa-ship:before{content:\\\"\\\\f21a\\\"}.fa-shipping-fast:before{content:\\\"\\\\f48b\\\"}.fa-shirtsinbulk:before{content:\\\"\\\\f214\\\"}.fa-shoe-prints:before{content:\\\"\\\\f54b\\\"}.fa-shopify:before{content:\\\"\\\\f957\\\"}.fa-shopping-bag:before{content:\\\"\\\\f290\\\"}.fa-shopping-basket:before{content:\\\"\\\\f291\\\"}.fa-shopping-cart:before{content:\\\"\\\\f07a\\\"}.fa-shopware:before{content:\\\"\\\\f5b5\\\"}.fa-shower:before{content:\\\"\\\\f2cc\\\"}.fa-shuttle-van:before{content:\\\"\\\\f5b6\\\"}.fa-sign:before{content:\\\"\\\\f4d9\\\"}.fa-sign-in-alt:before{content:\\\"\\\\f2f6\\\"}.fa-sign-language:before{content:\\\"\\\\f2a7\\\"}.fa-sign-out-alt:before{content:\\\"\\\\f2f5\\\"}.fa-signal:before{content:\\\"\\\\f012\\\"}.fa-signature:before{content:\\\"\\\\f5b7\\\"}.fa-sim-card:before{content:\\\"\\\\f7c4\\\"}.fa-simplybuilt:before{content:\\\"\\\\f215\\\"}.fa-sink:before{content:\\\"\\\\f96d\\\"}.fa-sistrix:before{content:\\\"\\\\f3ee\\\"}.fa-sitemap:before{content:\\\"\\\\f0e8\\\"}.fa-sith:before{content:\\\"\\\\f512\\\"}.fa-skating:before{content:\\\"\\\\f7c5\\\"}.fa-sketch:before{content:\\\"\\\\f7c6\\\"}.fa-skiing:before{content:\\\"\\\\f7c9\\\"}.fa-skiing-nordic:before{content:\\\"\\\\f7ca\\\"}.fa-skull:before{content:\\\"\\\\f54c\\\"}.fa-skull-crossbones:before{content:\\\"\\\\f714\\\"}.fa-skyatlas:before{content:\\\"\\\\f216\\\"}.fa-skype:before{content:\\\"\\\\f17e\\\"}.fa-slack:before{content:\\\"\\\\f198\\\"}.fa-slack-hash:before{content:\\\"\\\\f3ef\\\"}.fa-slash:before{content:\\\"\\\\f715\\\"}.fa-sleigh:before{content:\\\"\\\\f7cc\\\"}.fa-sliders-h:before{content:\\\"\\\\f1de\\\"}.fa-slideshare:before{content:\\\"\\\\f1e7\\\"}.fa-smile:before{content:\\\"\\\\f118\\\"}.fa-smile-beam:before{content:\\\"\\\\f5b8\\\"}.fa-smile-wink:before{content:\\\"\\\\f4da\\\"}.fa-smog:before{content:\\\"\\\\f75f\\\"}.fa-smoking:before{content:\\\"\\\\f48d\\\"}.fa-smoking-ban:before{content:\\\"\\\\f54d\\\"}.fa-sms:before{content:\\\"\\\\f7cd\\\"}.fa-snapchat:before{content:\\\"\\\\f2ab\\\"}.fa-snapchat-ghost:before{content:\\\"\\\\f2ac\\\"}.fa-snapchat-square:before{content:\\\"\\\\f2ad\\\"}.fa-snowboarding:before{content:\\\"\\\\f7ce\\\"}.fa-snowflake:before{content:\\\"\\\\f2dc\\\"}.fa-snowman:before{content:\\\"\\\\f7d0\\\"}.fa-snowplow:before{content:\\\"\\\\f7d2\\\"}.fa-soap:before{content:\\\"\\\\f96e\\\"}.fa-socks:before{content:\\\"\\\\f696\\\"}.fa-solar-panel:before{content:\\\"\\\\f5ba\\\"}.fa-sort:before{content:\\\"\\\\f0dc\\\"}.fa-sort-alpha-down:before{content:\\\"\\\\f15d\\\"}.fa-sort-alpha-down-alt:before{content:\\\"\\\\f881\\\"}.fa-sort-alpha-up:before{content:\\\"\\\\f15e\\\"}.fa-sort-alpha-up-alt:before{content:\\\"\\\\f882\\\"}.fa-sort-amount-down:before{content:\\\"\\\\f160\\\"}.fa-sort-amount-down-alt:before{content:\\\"\\\\f884\\\"}.fa-sort-amount-up:before{content:\\\"\\\\f161\\\"}.fa-sort-amount-up-alt:before{content:\\\"\\\\f885\\\"}.fa-sort-down:before{content:\\\"\\\\f0dd\\\"}.fa-sort-numeric-down:before{content:\\\"\\\\f162\\\"}.fa-sort-numeric-down-alt:before{content:\\\"\\\\f886\\\"}.fa-sort-numeric-up:before{content:\\\"\\\\f163\\\"}.fa-sort-numeric-up-alt:before{content:\\\"\\\\f887\\\"}.fa-sort-up:before{content:\\\"\\\\f0de\\\"}.fa-soundcloud:before{content:\\\"\\\\f1be\\\"}.fa-sourcetree:before{content:\\\"\\\\f7d3\\\"}.fa-spa:before{content:\\\"\\\\f5bb\\\"}.fa-space-shuttle:before{content:\\\"\\\\f197\\\"}.fa-speakap:before{content:\\\"\\\\f3f3\\\"}.fa-speaker-deck:before{content:\\\"\\\\f83c\\\"}.fa-spell-check:before{content:\\\"\\\\f891\\\"}.fa-spider:before{content:\\\"\\\\f717\\\"}.fa-spinner:before{content:\\\"\\\\f110\\\"}.fa-splotch:before{content:\\\"\\\\f5bc\\\"}.fa-spotify:before{content:\\\"\\\\f1bc\\\"}.fa-spray-can:before{content:\\\"\\\\f5bd\\\"}.fa-square:before{content:\\\"\\\\f0c8\\\"}.fa-square-full:before{content:\\\"\\\\f45c\\\"}.fa-square-root-alt:before{content:\\\"\\\\f698\\\"}.fa-squarespace:before{content:\\\"\\\\f5be\\\"}.fa-stack-exchange:before{content:\\\"\\\\f18d\\\"}.fa-stack-overflow:before{content:\\\"\\\\f16c\\\"}.fa-stackpath:before{content:\\\"\\\\f842\\\"}.fa-stamp:before{content:\\\"\\\\f5bf\\\"}.fa-star:before{content:\\\"\\\\f005\\\"}.fa-star-and-crescent:before{content:\\\"\\\\f699\\\"}.fa-star-half:before{content:\\\"\\\\f089\\\"}.fa-star-half-alt:before{content:\\\"\\\\f5c0\\\"}.fa-star-of-david:before{content:\\\"\\\\f69a\\\"}.fa-star-of-life:before{content:\\\"\\\\f621\\\"}.fa-staylinked:before{content:\\\"\\\\f3f5\\\"}.fa-steam:before{content:\\\"\\\\f1b6\\\"}.fa-steam-square:before{content:\\\"\\\\f1b7\\\"}.fa-steam-symbol:before{content:\\\"\\\\f3f6\\\"}.fa-step-backward:before{content:\\\"\\\\f048\\\"}.fa-step-forward:before{content:\\\"\\\\f051\\\"}.fa-stethoscope:before{content:\\\"\\\\f0f1\\\"}.fa-sticker-mule:before{content:\\\"\\\\f3f7\\\"}.fa-sticky-note:before{content:\\\"\\\\f249\\\"}.fa-stop:before{content:\\\"\\\\f04d\\\"}.fa-stop-circle:before{content:\\\"\\\\f28d\\\"}.fa-stopwatch:before{content:\\\"\\\\f2f2\\\"}.fa-stopwatch-20:before{content:\\\"\\\\f96f\\\"}.fa-store:before{content:\\\"\\\\f54e\\\"}.fa-store-alt:before{content:\\\"\\\\f54f\\\"}.fa-store-alt-slash:before{content:\\\"\\\\f970\\\"}.fa-store-slash:before{content:\\\"\\\\f971\\\"}.fa-strava:before{content:\\\"\\\\f428\\\"}.fa-stream:before{content:\\\"\\\\f550\\\"}.fa-street-view:before{content:\\\"\\\\f21d\\\"}.fa-strikethrough:before{content:\\\"\\\\f0cc\\\"}.fa-stripe:before{content:\\\"\\\\f429\\\"}.fa-stripe-s:before{content:\\\"\\\\f42a\\\"}.fa-stroopwafel:before{content:\\\"\\\\f551\\\"}.fa-studiovinari:before{content:\\\"\\\\f3f8\\\"}.fa-stumbleupon:before{content:\\\"\\\\f1a4\\\"}.fa-stumbleupon-circle:before{content:\\\"\\\\f1a3\\\"}.fa-subscript:before{content:\\\"\\\\f12c\\\"}.fa-subway:before{content:\\\"\\\\f239\\\"}.fa-suitcase:before{content:\\\"\\\\f0f2\\\"}.fa-suitcase-rolling:before{content:\\\"\\\\f5c1\\\"}.fa-sun:before{content:\\\"\\\\f185\\\"}.fa-superpowers:before{content:\\\"\\\\f2dd\\\"}.fa-superscript:before{content:\\\"\\\\f12b\\\"}.fa-supple:before{content:\\\"\\\\f3f9\\\"}.fa-surprise:before{content:\\\"\\\\f5c2\\\"}.fa-suse:before{content:\\\"\\\\f7d6\\\"}.fa-swatchbook:before{content:\\\"\\\\f5c3\\\"}.fa-swift:before{content:\\\"\\\\f8e1\\\"}.fa-swimmer:before{content:\\\"\\\\f5c4\\\"}.fa-swimming-pool:before{content:\\\"\\\\f5c5\\\"}.fa-symfony:before{content:\\\"\\\\f83d\\\"}.fa-synagogue:before{content:\\\"\\\\f69b\\\"}.fa-sync:before{content:\\\"\\\\f021\\\"}.fa-sync-alt:before{content:\\\"\\\\f2f1\\\"}.fa-syringe:before{content:\\\"\\\\f48e\\\"}.fa-table:before{content:\\\"\\\\f0ce\\\"}.fa-table-tennis:before{content:\\\"\\\\f45d\\\"}.fa-tablet:before{content:\\\"\\\\f10a\\\"}.fa-tablet-alt:before{content:\\\"\\\\f3fa\\\"}.fa-tablets:before{content:\\\"\\\\f490\\\"}.fa-tachometer-alt:before{content:\\\"\\\\f3fd\\\"}.fa-tag:before{content:\\\"\\\\f02b\\\"}.fa-tags:before{content:\\\"\\\\f02c\\\"}.fa-tape:before{content:\\\"\\\\f4db\\\"}.fa-tasks:before{content:\\\"\\\\f0ae\\\"}.fa-taxi:before{content:\\\"\\\\f1ba\\\"}.fa-teamspeak:before{content:\\\"\\\\f4f9\\\"}.fa-teeth:before{content:\\\"\\\\f62e\\\"}.fa-teeth-open:before{content:\\\"\\\\f62f\\\"}.fa-telegram:before{content:\\\"\\\\f2c6\\\"}.fa-telegram-plane:before{content:\\\"\\\\f3fe\\\"}.fa-temperature-high:before{content:\\\"\\\\f769\\\"}.fa-temperature-low:before{content:\\\"\\\\f76b\\\"}.fa-tencent-weibo:before{content:\\\"\\\\f1d5\\\"}.fa-tenge:before{content:\\\"\\\\f7d7\\\"}.fa-terminal:before{content:\\\"\\\\f120\\\"}.fa-text-height:before{content:\\\"\\\\f034\\\"}.fa-text-width:before{content:\\\"\\\\f035\\\"}.fa-th:before{content:\\\"\\\\f00a\\\"}.fa-th-large:before{content:\\\"\\\\f009\\\"}.fa-th-list:before{content:\\\"\\\\f00b\\\"}.fa-the-red-yeti:before{content:\\\"\\\\f69d\\\"}.fa-theater-masks:before{content:\\\"\\\\f630\\\"}.fa-themeco:before{content:\\\"\\\\f5c6\\\"}.fa-themeisle:before{content:\\\"\\\\f2b2\\\"}.fa-thermometer:before{content:\\\"\\\\f491\\\"}.fa-thermometer-empty:before{content:\\\"\\\\f2cb\\\"}.fa-thermometer-full:before{content:\\\"\\\\f2c7\\\"}.fa-thermometer-half:before{content:\\\"\\\\f2c9\\\"}.fa-thermometer-quarter:before{content:\\\"\\\\f2ca\\\"}.fa-thermometer-three-quarters:before{content:\\\"\\\\f2c8\\\"}.fa-think-peaks:before{content:\\\"\\\\f731\\\"}.fa-thumbs-down:before{content:\\\"\\\\f165\\\"}.fa-thumbs-up:before{content:\\\"\\\\f164\\\"}.fa-thumbtack:before{content:\\\"\\\\f08d\\\"}.fa-ticket-alt:before{content:\\\"\\\\f3ff\\\"}.fa-tiktok:before{content:\\\"\\\\f97b\\\"}.fa-times:before,.glyphicon.glyphicon-remove:before{content:\\\"\\\\f00d\\\"}.fa-times-circle:before{content:\\\"\\\\f057\\\"}.fa-tint:before{content:\\\"\\\\f043\\\"}.fa-tint-slash:before{content:\\\"\\\\f5c7\\\"}.fa-tired:before{content:\\\"\\\\f5c8\\\"}.fa-toggle-off:before{content:\\\"\\\\f204\\\"}.fa-toggle-on:before{content:\\\"\\\\f205\\\"}.fa-toilet:before{content:\\\"\\\\f7d8\\\"}.fa-toilet-paper:before{content:\\\"\\\\f71e\\\"}.fa-toilet-paper-slash:before{content:\\\"\\\\f972\\\"}.fa-toolbox:before{content:\\\"\\\\f552\\\"}.fa-tools:before{content:\\\"\\\\f7d9\\\"}.fa-tooth:before{content:\\\"\\\\f5c9\\\"}.fa-torah:before{content:\\\"\\\\f6a0\\\"}.fa-torii-gate:before{content:\\\"\\\\f6a1\\\"}.fa-tractor:before{content:\\\"\\\\f722\\\"}.fa-trade-federation:before{content:\\\"\\\\f513\\\"}.fa-trademark:before{content:\\\"\\\\f25c\\\"}.fa-traffic-light:before{content:\\\"\\\\f637\\\"}.fa-trailer:before{content:\\\"\\\\f941\\\"}.fa-train:before{content:\\\"\\\\f238\\\"}.fa-tram:before{content:\\\"\\\\f7da\\\"}.fa-transgender:before{content:\\\"\\\\f224\\\"}.fa-transgender-alt:before{content:\\\"\\\\f225\\\"}.fa-trash:before{content:\\\"\\\\f1f8\\\"}.fa-trash-alt:before{content:\\\"\\\\f2ed\\\"}.fa-trash-restore:before{content:\\\"\\\\f829\\\"}.fa-trash-restore-alt:before{content:\\\"\\\\f82a\\\"}.fa-tree:before{content:\\\"\\\\f1bb\\\"}.fa-trello:before{content:\\\"\\\\f181\\\"}.fa-tripadvisor:before{content:\\\"\\\\f262\\\"}.fa-trophy:before{content:\\\"\\\\f091\\\"}.fa-truck:before{content:\\\"\\\\f0d1\\\"}.fa-truck-loading:before{content:\\\"\\\\f4de\\\"}.fa-truck-monster:before{content:\\\"\\\\f63b\\\"}.fa-truck-moving:before{content:\\\"\\\\f4df\\\"}.fa-truck-pickup:before{content:\\\"\\\\f63c\\\"}.fa-tshirt:before{content:\\\"\\\\f553\\\"}.fa-tty:before{content:\\\"\\\\f1e4\\\"}.fa-tumblr:before{content:\\\"\\\\f173\\\"}.fa-tumblr-square:before{content:\\\"\\\\f174\\\"}.fa-tv:before{content:\\\"\\\\f26c\\\"}.fa-twitch:before{content:\\\"\\\\f1e8\\\"}.fa-twitter:before{content:\\\"\\\\f099\\\"}.fa-twitter-square:before{content:\\\"\\\\f081\\\"}.fa-typo3:before{content:\\\"\\\\f42b\\\"}.fa-uber:before{content:\\\"\\\\f402\\\"}.fa-ubuntu:before{content:\\\"\\\\f7df\\\"}.fa-uikit:before{content:\\\"\\\\f403\\\"}.fa-umbraco:before{content:\\\"\\\\f8e8\\\"}.fa-umbrella:before{content:\\\"\\\\f0e9\\\"}.fa-umbrella-beach:before{content:\\\"\\\\f5ca\\\"}.fa-underline:before{content:\\\"\\\\f0cd\\\"}.fa-undo:before{content:\\\"\\\\f0e2\\\"}.fa-undo-alt:before{content:\\\"\\\\f2ea\\\"}.fa-uniregistry:before{content:\\\"\\\\f404\\\"}.fa-unity:before{content:\\\"\\\\f949\\\"}.fa-universal-access:before{content:\\\"\\\\f29a\\\"}.fa-university:before{content:\\\"\\\\f19c\\\"}.fa-unlink:before{content:\\\"\\\\f127\\\"}.fa-unlock:before{content:\\\"\\\\f09c\\\"}.fa-unlock-alt:before{content:\\\"\\\\f13e\\\"}.fa-unsplash:before{content:\\\"\\\\f97c\\\"}.fa-untappd:before{content:\\\"\\\\f405\\\"}.fa-upload:before{content:\\\"\\\\f093\\\"}.fa-ups:before{content:\\\"\\\\f7e0\\\"}.fa-usb:before{content:\\\"\\\\f287\\\"}.fa-user:before{content:\\\"\\\\f007\\\"}.fa-user-alt:before{content:\\\"\\\\f406\\\"}.fa-user-alt-slash:before{content:\\\"\\\\f4fa\\\"}.fa-user-astronaut:before{content:\\\"\\\\f4fb\\\"}.fa-user-check:before{content:\\\"\\\\f4fc\\\"}.fa-user-circle:before{content:\\\"\\\\f2bd\\\"}.fa-user-clock:before{content:\\\"\\\\f4fd\\\"}.fa-user-cog:before{content:\\\"\\\\f4fe\\\"}.fa-user-edit:before{content:\\\"\\\\f4ff\\\"}.fa-user-friends:before{content:\\\"\\\\f500\\\"}.fa-user-graduate:before{content:\\\"\\\\f501\\\"}.fa-user-injured:before{content:\\\"\\\\f728\\\"}.fa-user-lock:before{content:\\\"\\\\f502\\\"}.fa-user-md:before{content:\\\"\\\\f0f0\\\"}.fa-user-minus:before{content:\\\"\\\\f503\\\"}.fa-user-ninja:before{content:\\\"\\\\f504\\\"}.fa-user-nurse:before{content:\\\"\\\\f82f\\\"}.fa-user-plus:before{content:\\\"\\\\f234\\\"}.fa-user-secret:before{content:\\\"\\\\f21b\\\"}.fa-user-shield:before{content:\\\"\\\\f505\\\"}.fa-user-slash:before{content:\\\"\\\\f506\\\"}.fa-user-tag:before{content:\\\"\\\\f507\\\"}.fa-user-tie:before{content:\\\"\\\\f508\\\"}.fa-user-times:before{content:\\\"\\\\f235\\\"}.fa-users:before{content:\\\"\\\\f0c0\\\"}.fa-users-cog:before{content:\\\"\\\\f509\\\"}.fa-users-slash:before{content:\\\"\\\\f973\\\"}.fa-usps:before{content:\\\"\\\\f7e1\\\"}.fa-ussunnah:before{content:\\\"\\\\f407\\\"}.fa-utensil-spoon:before{content:\\\"\\\\f2e5\\\"}.fa-utensils:before{content:\\\"\\\\f2e7\\\"}.fa-vaadin:before{content:\\\"\\\\f408\\\"}.fa-vector-square:before{content:\\\"\\\\f5cb\\\"}.fa-venus:before{content:\\\"\\\\f221\\\"}.fa-venus-double:before{content:\\\"\\\\f226\\\"}.fa-venus-mars:before{content:\\\"\\\\f228\\\"}.fa-viacoin:before{content:\\\"\\\\f237\\\"}.fa-viadeo:before{content:\\\"\\\\f2a9\\\"}.fa-viadeo-square:before{content:\\\"\\\\f2aa\\\"}.fa-vial:before{content:\\\"\\\\f492\\\"}.fa-vials:before{content:\\\"\\\\f493\\\"}.fa-viber:before{content:\\\"\\\\f409\\\"}.fa-video:before{content:\\\"\\\\f03d\\\"}.fa-video-slash:before{content:\\\"\\\\f4e2\\\"}.fa-vihara:before{content:\\\"\\\\f6a7\\\"}.fa-vimeo:before{content:\\\"\\\\f40a\\\"}.fa-vimeo-square:before{content:\\\"\\\\f194\\\"}.fa-vimeo-v:before{content:\\\"\\\\f27d\\\"}.fa-vine:before{content:\\\"\\\\f1ca\\\"}.fa-virus:before{content:\\\"\\\\f974\\\"}.fa-virus-slash:before{content:\\\"\\\\f975\\\"}.fa-viruses:before{content:\\\"\\\\f976\\\"}.fa-vk:before{content:\\\"\\\\f189\\\"}.fa-vnv:before{content:\\\"\\\\f40b\\\"}.fa-voicemail:before{content:\\\"\\\\f897\\\"}.fa-volleyball-ball:before{content:\\\"\\\\f45f\\\"}.fa-volume-down:before{content:\\\"\\\\f027\\\"}.fa-volume-mute:before{content:\\\"\\\\f6a9\\\"}.fa-volume-off:before{content:\\\"\\\\f026\\\"}.fa-volume-up:before{content:\\\"\\\\f028\\\"}.fa-vote-yea:before{content:\\\"\\\\f772\\\"}.fa-vr-cardboard:before{content:\\\"\\\\f729\\\"}.fa-vuejs:before{content:\\\"\\\\f41f\\\"}.fa-walking:before{content:\\\"\\\\f554\\\"}.fa-wallet:before{content:\\\"\\\\f555\\\"}.fa-warehouse:before{content:\\\"\\\\f494\\\"}.fa-water:before{content:\\\"\\\\f773\\\"}.fa-wave-square:before{content:\\\"\\\\f83e\\\"}.fa-waze:before{content:\\\"\\\\f83f\\\"}.fa-weebly:before{content:\\\"\\\\f5cc\\\"}.fa-weibo:before{content:\\\"\\\\f18a\\\"}.fa-weight:before{content:\\\"\\\\f496\\\"}.fa-weight-hanging:before{content:\\\"\\\\f5cd\\\"}.fa-weixin:before{content:\\\"\\\\f1d7\\\"}.fa-whatsapp:before{content:\\\"\\\\f232\\\"}.fa-whatsapp-square:before{content:\\\"\\\\f40c\\\"}.fa-wheelchair:before{content:\\\"\\\\f193\\\"}.fa-whmcs:before{content:\\\"\\\\f40d\\\"}.fa-wifi:before{content:\\\"\\\\f1eb\\\"}.fa-wikipedia-w:before{content:\\\"\\\\f266\\\"}.fa-wind:before{content:\\\"\\\\f72e\\\"}.fa-window-close:before{content:\\\"\\\\f410\\\"}.fa-window-maximize:before{content:\\\"\\\\f2d0\\\"}.fa-window-minimize:before{content:\\\"\\\\f2d1\\\"}.fa-window-restore:before{content:\\\"\\\\f2d2\\\"}.fa-windows:before{content:\\\"\\\\f17a\\\"}.fa-wine-bottle:before{content:\\\"\\\\f72f\\\"}.fa-wine-glass:before{content:\\\"\\\\f4e3\\\"}.fa-wine-glass-alt:before{content:\\\"\\\\f5ce\\\"}.fa-wix:before{content:\\\"\\\\f5cf\\\"}.fa-wizards-of-the-coast:before{content:\\\"\\\\f730\\\"}.fa-wolf-pack-battalion:before{content:\\\"\\\\f514\\\"}.fa-won-sign:before{content:\\\"\\\\f159\\\"}.fa-wordpress:before{content:\\\"\\\\f19a\\\"}.fa-wordpress-simple:before{content:\\\"\\\\f411\\\"}.fa-wpbeginner:before{content:\\\"\\\\f297\\\"}.fa-wpexplorer:before{content:\\\"\\\\f2de\\\"}.fa-wpforms:before{content:\\\"\\\\f298\\\"}.fa-wpressr:before{content:\\\"\\\\f3e4\\\"}.fa-wrench:before{content:\\\"\\\\f0ad\\\"}.fa-x-ray:before{content:\\\"\\\\f497\\\"}.fa-xbox:before{content:\\\"\\\\f412\\\"}.fa-xing:before{content:\\\"\\\\f168\\\"}.fa-xing-square:before{content:\\\"\\\\f169\\\"}.fa-y-combinator:before{content:\\\"\\\\f23b\\\"}.fa-yahoo:before{content:\\\"\\\\f19e\\\"}.fa-yammer:before{content:\\\"\\\\f840\\\"}.fa-yandex:before{content:\\\"\\\\f413\\\"}.fa-yandex-international:before{content:\\\"\\\\f414\\\"}.fa-yarn:before{content:\\\"\\\\f7e3\\\"}.fa-yelp:before{content:\\\"\\\\f1e9\\\"}.fa-yen-sign:before{content:\\\"\\\\f157\\\"}.fa-yin-yang:before{content:\\\"\\\\f6ad\\\"}.fa-yoast:before{content:\\\"\\\\f2b1\\\"}.fa-youtube:before{content:\\\"\\\\f167\\\"}.fa-youtube-square:before{content:\\\"\\\\f431\\\"}.fa-zhihu:before{content:\\\"\\\\f63f\\\"}.sr-only{border:0;clip:rect(0, 0, 0, 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}/*!\\n * Font Awesome Free 5.13.1 by @fontawesome - https://fontawesome.com\\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\\n */@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900;font-display:block;src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \");src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \") format(\\\"woff2\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_3___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_4___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_5___ + \") format(\\\"svg\\\")}.fa,.fas,.glyphicon{font-family:'Font Awesome 5 Free';font-weight:900}/*!\\n * Font Awesome Free 5.13.1 by @fontawesome - https://fontawesome.com\\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\\n */@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:400;font-display:block;src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_6___ + \");src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_7___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_8___ + \") format(\\\"woff2\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_9___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_10___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_11___ + \") format(\\\"svg\\\")}.far{font-family:'Font Awesome 5 Free';font-weight:400}/*!\\n * Font Awesome Free 5.13.1 by @fontawesome - https://fontawesome.com\\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\\n */@font-face{font-family:'Font Awesome 5 Brands';font-style:normal;font-weight:400;font-display:block;src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_12___ + \");src:url(\" + ___CSS_LOADER_URL_REPLACEMENT_13___ + \") format(\\\"embedded-opentype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_14___ + \") format(\\\"woff2\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_15___ + \") format(\\\"woff\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_16___ + \") format(\\\"truetype\\\"),url(\" + ___CSS_LOADER_URL_REPLACEMENT_17___ + \") format(\\\"svg\\\")}.fab{font-family:'Font Awesome 5 Brands';font-weight:400}.fa-folder-open,.fa-file-powerpoint-o{color:#f58025}.fa-file-excel-o{color:#679146}.fa-file-word-o{color:#79bde8}.fa-file-pdf-o{color:#c60c46}.ks-guidelineContainer{padding-right:3rem}.ks-guidelineContainer .ks-listHeader{background-color:white;padding:0.5rem 1rem 0.5rem 1rem}.ks-guidelineContainer .ks-listHeader i{float:right;font-size:1rem;margin-top:3px}.ks-guidelineContainer .ks-listContainer{list-style:none}.ks-guidelineContainer .ks-listContainer li{padding-bottom:8px}.ks-guidelineContainer .ks-listContainer li:hover{background-color:#e9e9e9}.ks-guidelineContainer .ks-listContainer li:before{content:\\\"•\\\";color:#a02361;margin-right:0.3rem;font-size:1.8rem;position:relative;top:0.3rem}.ks-guidelineContainer .ks-listContainer li a:hover{color:#a02361;cursor:pointer;text-decoration:none}.ks-guidelineContainer .ks-listContainer li i{margin-left:0.5rem}.ks-guidelineContainer .ks-listContainer li ul{list-style:none}.ks-guidelineContainer .ks-listContainer li ul li:before{content:\\\"-\\\";color:#3c4883;margin-right:0.3rem;font-size:1.8rem;position:relative;top:0.1rem}.ksDivider:after{content:\\\"\\\";width:3px;height:60vh;background-color:#f0f0f0;position:absolute;top:0;left:45%}.ks-btn-primary.move-select{border:2px dotted;font-weight:bolder}.ks-tableLvl1 .borderHide{border-color:transparent !important}.ks-tableLvl1 td{position:relative;height:65px;border:6px solid white !important}.ks-tableLvl1 .ks-tableBtn{border-radius:0;padding:10px 30px 10px 25px;position:absolute !important;top:-45%;left:5%;font-weight:400;color:white;text-align:center}.ks-tableLvl1 .ks-btn-green,.ks-tableLvl1 .ks-btn-yellow,.ks-tableLvl1 .ks-btn-darkBlue{width:85%}.ks-tableLvl1 .ks-btn-primary{left:15%;width:60% !important}.ks-info-text{background-color:#e6e6e6;padding:1rem}.ks-tableContainer .tableTopTxt{display:flex}.ks-tableContainer .tableTopTxt h4{display:inline-block;text-transform:uppercase;color:#3c4883}.ks-tableContainer .tableTopTxt span{flex:1 1 auto;align-self:center;height:2px;background-image:linear-gradient(to right, black 33%, rgba(255,255,255,0) 0%);background-position:bottom;background-size:7px 5px;background-repeat:repeat-x;margin:0 1rem 0 1rem}.ks-tableContainer .ks-table{border-top:5px solid white;position:relative;margin:auto}.ks-tableContainer .ks-table tr td{border:5px solid white;padding:0.7rem 1rem !important;text-align:center;position:relative;vertical-align:middle}.ks-tableContainer .ks-table tr td .ks-tableBtn{padding:0.5rem 0.7rem;color:white;display:inline-block}.ks-tableContainer .ks-table tr td .ks-tableBtn:hover{text-decoration:none}.ks-tableContainer .ks-table tr .td-arrow:before{content:\\\"\\\\f30b\\\";font-family:\\\"Font Awesome 5 Free\\\";font-weight:900;font-size:2rem;position:absolute;top:0;bottom:0;left:-4%;display:flex;flex-direction:column;justify-content:center;color:#a02361}.ks-tableContainer .ks-btn{display:block;color:white;text-align:center;padding:10px 30px 10px 25px;margin-bottom:1rem}.ks-tableContainer .ks-btn:hover{text-decoration:none}.ks-tableContainer .ks-btn:before{opacity:0}.ks-tableBtn:hover{text-decoration:none}.btn-arrow-right{position:relative;width:calc(100% - 22px)}.btn-arrow-right:before{content:\\\"\\\";position:absolute;top:40%;left:-5px;width:13px;height:13px;border-radius:50%;background-color:white}.btn-arrow-right:after{content:\\\"\\\";position:absolute;top:0px;right:-22px;width:0;height:0;border-top:22px solid transparent;border-bottom:22px solid transparent;border-left:22px solid}.ks-btn-darkBlue{background-color:#3c4883;color:white !important}.ks-btn-darkBlue:hover{background-color:#5464b3}.ks-btn-darkBlue:hover:after{border-left-color:#5464b3}.ks-btn-darkBlue:after{border-left-color:#3c4883}.ks-btn-primary{background-color:#a02361;color:white}.ks-btn-primary:hover{background-color:#dd175e}.ks-btn-primary:hover:after{border-left-color:#dd175e}.ks-btn-primary:after{border-left-color:#a02361}.ks-btn-green{background-color:#28a745;color:white !important}.ks-btn-green:hover{background-color:#74bc5b}.ks-btn-green:hover:after{border-left-color:#74bc5b}.ks-btn-green:after{border-left-color:#28a745}.ks-btn-yellow{background-color:#fdb913;color:white !important}.ks-btn-yellow:hover{background-color:#fed130}.ks-btn-yellow:hover:after{border-left-color:#fed130}.ks-btn-yellow:after{border-left-color:#fdb913}.ks-btnBorder{border:2px solid #3c4883;color:#3c4883;padding:10px 40px 10px 40px;margin-top:10px;margin-right:10px;-webkit-transition:.3s ease-in-out;-moz-transition:.3s ease-in-out;-o-transition:.3s ease-in-out;transition:.3s ease-in-out;display:inline-block}.ks-btnBorder:hover{text-decoration:none;background-color:#3c4883;color:white !important}.ks-btnBorderActive{color:#a02361 !important}@media screen and (min-width: 300px) and (max-width: 1200px){.ks-table tr td:last-child:before{opacity:0}.td-arrow:before{left:-13% !important}}@media screen and (min-width: 300px) and (max-width: 767px){.tableTopTxt h4{font-size:1rem}.tableTopTxt span{margin:0 0.5rem 0 0.5rem !important}.btn-arrow-right{width:96%}.td-arrow:before{left:-11% !important}.ks-btnBorder-primary,.ks-btnBorder-darkBlue{display:block;text-align:center;margin-bottom:1rem;padding-top:0.5rem;padding-bottom:0.5rem}}@media screen and (min-width: 768px) and (max-width: 991px){.ks-guidelineContainer{padding-right:15px}}@media screen and (min-width: 1892px){.ks-guidelineContainer{margin-left:2rem}}.processContent .processTxtBox div{display:block}.processContent .processTxtBox div h3{background-color:white;padding:0.6rem 2rem;margin-bottom:2px}.processContent .processTxtBox div p{background-color:white;padding:2rem;min-height:80px;white-space:pre-wrap}.processContent .processInlineBox{display:-webkit-flex;display:flex;-webkit-flex-wrap:nowrap;flex-wrap:nowrap;margin-bottom:20px}.processContent .processInlineBox p{font-size:1rem;margin-bottom:0;padding:0.5rem 1rem}.processContent .processInlineBox .titleBox{background-color:#f5f5f5;display:inline-flex;flex-direction:column;justify-content:center;flex:1;flex-grow:1;max-width:30%;border:1px solid #e6e6e6}.processContent .processInlineBox .titleBox p{font-weight:bold}.processContent .processInlineBox .contentBox{background-color:white;display:inline-flex;flex-direction:column;justify-content:center;flex:1;flex-grow:1;border:1px solid #e6e6e6;border-left:none}.processContent .processInlineBox .contentBox p{margin-left:1rem}.processContent .activityList ul{list-style:none}.processContent .activityList ul li{padding:0.5rem 1rem;background-color:#f0f0f0;border-bottom:1px solid #e6e6e6}.processContent .activityList ul li:nth-child(odd){background-color:white}.processContent .activityList ul li p{margin:0}.processContent .activityList ul li p i{float:right}.processContent .activityList ul li .subactivityContainer:nth-child(odd){background-color:#e6e6e6}.processContent .activityList ul li .ctrlContainer{border-bottom:1px solid #e6e6e6}.processContent .activityList ul li .subactivityContainer{padding:0.8rem 0rem 0.8rem 0rem}.processContent .activityList ul li .subactivityContainer .subactivity{display:inline-block;padding:0.2rem 1rem 0.2rem 1rem;font-size:0.9rem}.processContent .activityList ul li .subactivityContainer .subactivityLinks{padding:0.4rem 0rem 0.4rem 0rem}.processContent .activityList ul li .subactivityContainer .subactivityLinks h5{padding-left:1rem;margin-top:0;margin-bottom:0.3rem;font-size:0.8rem;font-weight:bold}.processContent .activityList ul li .subactivityContainer .subactivityLinks a{color:white;margin-left:1rem;text-transform:none}.processContent .activityList ul li .subactivityContainer .subactivityLinks .label{display:inline-block}.processContent .activityList ul li .subactivityContainer .subactivityLinks .list-editable-group li{border:none;display:inline-block;padding:.3em .6em;font-size:75%;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em;background-color:#28a745;margin-left:1rem}.processContent .activityList ul li .subactivityContainer .subactivityLinks .list-editable-group li a{color:white;margin:0}.processContent .activityList ul li .subactivityContainer .subactivityLinks button{display:none}.processContent .activity-required{opacity:1;color:red}.processContent .fullWidthBtn{display:block;text-align:left;line-height:normal}.processContent .fullWidthBtn i{float:right}@media screen and (max-width: 992px){.processContent .activityList .fa-chevron-right{float:none}}@media (max-width: 768px){.processInlineBox{display:block !important}.processInlineBox .titleBox{display:block !important;width:100%;max-width:100% !important;padding:0.5rem 0rem}.processInlineBox .titleBox h5{margin:0;margin-left:1rem !important}.processInlineBox .contentBox{display:block !important;width:100%;padding:0.5rem 0rem}.processInlineBox .contentBox h5{margin:0;margin-left:1rem !important}}.navbar{padding-top:calc(0.5rem + env(safe-area-inset-top)) !important;border-top:4px solid #3c4883}.navbar .navbar-brand{margin-right:0.5rem}.navbar .navbar-brand img{width:30px;height:30px}.navbar .nav-link{cursor:pointer}.navbar .nav-taskbar .dropdown-toggle:after{display:none}.navbar .nav-taskbar .dropdown-toggle .badge{border-radius:50%;padding:0.2rem 0.35rem;font-size:0.8rem;margin-left:0.2rem}.headerBreadCrums{padding-top:calc(0px + env(safe-area-inset-top)) !important;height:calc(136px + env(safe-area-inset-top)) !important}.headerNoBreadCrums{padding-top:calc(0px + env(safe-area-inset-top)) !important;height:calc(83px + env(safe-area-inset-top)) !important}.searchbar{flex:1}.searchbar .ui-select-container{flex:1;border:1px solid #999;border-top-left-radius:3px;border-bottom-left-radius:3px}.searchbar .ui-select-container .badge{margin-top:0.4rem;margin-bottom:0.4rem}.searchbar .ui-select-container .ui-select-toggle .btn-link{padding:0}.searchbar .ui-select-bootstrap .ui-select-choices-row.active>span{background-color:#3c4883}.bars-dropdown .dropdown-toggle{text-align:left;padding-left:2rem}.bars-dropdown .dropdown-toggle:after{display:none}.bars-dropdown .dropdown-toggle:before{content:\\\"\\\\f0c9\\\" !important;font-family:\\\"Font Awesome 5 Free\\\";font-weight:900;position:absolute;left:80%}.bars-dropdown .dropdown-menu{width:93%}.dropdown-min-width{min-width:280px}.subitem{padding-left:2.5rem;color:gray !important}.dropdown-item:active{color:white !important}@media screen and (min-width: 300px) and (max-width: 768px){.navbar{overflow-y:scroll;max-height:100%}}.breadcrumb-bg{background-image:url(\\\"/img/breadcrumb_bg.svg\\\");background-position:center center;background-repeat:repeat;min-height:48px}.breadcrumb-bg-test{background-image:url(\\\"/img/breadcrumb_test_bg.svg\\\");background-position:center center;background-repeat:repeat;min-height:48px}.breadcrumb-bg-dev{background-image:url(\\\"/img/breadcrumb_dev_bg.svg\\\");background-position:center center;background-repeat:repeat;min-height:48px}.breadcrumb-item+.breadcrumb-item::before{color:#ced4da !important}.breadcrumb .breadcrumb-item a{color:#ced4da !important;cursor:pointer !important}.breadcrumb .breadcrumb-item span{cursor:pointer !important}@media screen and (max-width: 991px){.breadcrumb-bg{background-repeat:no-repeat !important;background-size:cover !important}}.proj-header .proj-headline{display:inline-block;background-color:white;margin:1rem;padding:0.8rem 2rem}.proj-header .proj-headline h1{text-transform:uppercase;margin-bottom:0;font-weight:400;line-height:1;font-size:3.5rem}.proj-header .proj-headline p{margin-bottom:0;font-size:0.95rem}.proj-header .proj-headline p i{font-size:0.9rem}.proj-footer-top{padding:1rem;background-color:white;display:flex}.proj-footer-top .progress{width:100%}.proj-footer-top a,.proj-footer-top p{white-space:nowrap;margin:auto}.proj-footer-top .btn{white-space:nowrap !important}.trysilhusBG{background:url(\\\"/img/project_imgs/trysilhus_bilde.jpg\\\") center center fixed;background-position:50% 5%}.omniboBG{background:url(\\\"/img/project_imgs/omnibo_bilde.jpg\\\") center center fixed;background-position:50% 5%}.omnihusBG{background:url(\\\"/img/project_imgs/omnihus_bilde.jpg\\\") center center fixed;background-position:50% 5%}.miscBG{background:url(\\\"/img/project_imgs/trysilhus.svg\\\") fixed;background-size:cover;background-size:40% 60%}.proj-bld-wrapper{margin-bottom:1.4rem;position:relative;min-height:130px}.proj-bld-wrapper .proj-bld-container{position:relative;z-index:1;box-shadow:0px 5px 15px rgba(0,0,0,0.3)}.proj-bld-wrapper .proj-bld-container:hover .building-bg{opacity:0.6}.proj-bld-wrapper .proj-bld-container .proj-bld-content{padding:1rem;overflow:hidden;text-overflow:ellipsis}.proj-bld-wrapper .proj-bld-container .proj-bld-content h2{font-size:1.8rem}.proj-bld-wrapper .proj-bld-container .proj-bld-content h2 a{transition:color 0.5s}.proj-bld-wrapper .proj-bld-container .proj-bld-content a{font-family:\\\"Quicksand\\\",\\\"sans-serif\\\"}.proj-bld-wrapper .proj-bld-container .proj-bld-content .btn-group{display:flex}.proj-bld-wrapper .proj-bld-container .proj-bld-content .btn-group a{flex:1}.proj-bld-wrapper .proj-bld-container .proj-bld-content .btn-group p{flex:0.5}.proj-bld-wrapper .proj-bld-container .proj-bld-content .btn-group p:hover{color:#3c4883 !important}.proj-bld-wrapper .proj-bld-container .proj-bld-content .progressContainer{display:flex}.proj-bld-wrapper .proj-bld-container .proj-bld-content .progressContainer .progress{position:relative;flex:1;line-height:unset !important}.proj-bld-wrapper .proj-bld-container .proj-bld-content .progressContainer .progress small{position:absolute;width:100%;text-align:center}.proj-bld-wrapper .proj-bld-container .proj-bld-content .progressContainer .progress .bg-soldstatus{background-color:#a02361}.proj-bld-wrapper .proj-bld-container .building-bg{position:absolute;top:0;z-index:-1;width:100%;height:100%;background-size:100%;background-position:50% 50%;opacity:0.4;transition:all 0.3s}.proj-bld-wrapper .proj-bld-container .bg-flerfamilie{background-image:url(\\\"/img/project_imgs/bld_flerfamilie_bg.jpg\\\")}.proj-bld-wrapper .proj-bld-container .bg-omnibo{background-image:url(\\\"/img/project_imgs/bld_omnibo_bg.jpg\\\")}.proj-bld-wrapper .proj-bld-container .bg-omnihus{background-image:url(\\\"/img/project_imgs/bld_omnihus_bg.jpg\\\")}.proj-bld-wrapper .proj-bld-container .bg-unknown{background-image:url(\\\"/img/project_imgs/bld_unknown_bg.jpg\\\")}.proj-bld-wrapper .crown{position:absolute;top:-23px;right:-8px;background-image:url(\\\"/img/project_imgs/crown.png\\\");width:54px;height:50px;z-index:2}.proj-new-bld div{background-color:#c8c8c8;box-shadow:0px 5px 15px rgba(0,0,0,0.3);min-height:130px;display:flex}.proj-new-bld div:hover{background-color:#bebebe}.proj-new-bld div i{font-size:5rem;color:#e6e6e6;text-align:center;align-self:center;width:100%}@media screen and (max-width: 767px){.proj-header{background-position:50% 25%}.proj-header .proj-headline{margin-bottom:2rem;position:relative;width:-webkit-fill-available}.proj-header .proj-headline #proj-info-sm{text-align:center}.proj-header .proj-headline #proj-info-sm .badge{text-transform:capitalize;font-size:0.7rem}.proj-header .proj-headline #proj-infoBtn{position:absolute;left:0;right:0;margin:auto;width:150px;bottom:-20px;border:3px solid white;box-shadow:none}.proj-header .proj-headline h1{font-size:1.8rem !important;text-align:center;margin-bottom:0.3rem}}@media screen and (max-width: 992px){.proj-header .proj-headline{padding:1rem 0.8rem}.proj-header .proj-headline h1{padding:0;font-size:2rem;font-weight:bold}.proj-header .proj-headline p{font-size:0.75rem}.proj-footer{display:block}.proj-footer .progress{margin-top:1rem !important;height:25px}.proj-footer p{margin-left:0;display:inline-block;margin-top:1rem}.miscBG{background-size:cover}}@media screen and (max-width: 500px){.proj-header h1{word-break:break-all;font-size:2rem;font-weight:bold}}.dashboard-project .card .header{height:90px;background-repeat:repeat-x;background-size:contain;background-position:15% 50%}.dashboard-project .card .header .header-title{font-size:1.7rem;font-weight:700;margin:1rem;background-color:white;padding:0.2rem 0.4rem;display:inline-block}.dashboard-project .card-body{padding:0.4rem 1rem 1rem 1rem}.dashboard-project .card-body a{font-size:0.9rem}.dashboard-project .card-body .divider{color:#e6e6e6}.dashboard-project .card-body .btn-sm,.dashboard-project .card-body .btn-group-sm>.btn{font-size:0.7rem;padding:0.2rem}.card-header .activeCategory{color:#28a745 !important}.blogTxt h1{font-size:1.6rem}.blogTxt h2{font-size:1.3rem}.blogTxt h4{margin:0}.blogTxt p{white-space:normal;font-size:0.8rem}.dashboard-popover{padding:0.5rem}.dashboard-popover h5{font-size:1rem;color:#3c4883;margin-bottom:0.5rem}.dashboard-popover ul{list-style:none;padding:0;margin-bottom:0}.dashboard-popover ul li{border-top:1px solid #e6e6e6;padding:0.4rem 0;font-size:0.8rem}.dashboard-manager .card-header{display:flex}.dashboard-manager .card-header .nav{display:flex;flex:1;text-align:center}.dashboard-manager .card-header .nav .nav-item{flex-grow:1}.dashboard-manager .card-header .nav .nav-item:nth-last-child(1) .nav-link{border-right:none}.dashboard-manager .card-header .nav .nav-item .nav-link{border-right:1px solid #c8c8c8;padding:0.5rem}.dashboard-manager .card-header .nav .nav-item .active{background-color:#3c4883;color:white}.album-update-modal .modal-header{position:relative}.album-update-modal .modal-header img{position:absolute;top:-25%;left:50%;transform:translate(-50%, -50%);width:90px}.album-update-modal .modal-header h3{text-transform:uppercase;margin-top:1rem}.album-update-modal .modal-body{background:repeating-linear-gradient(-45deg, transparent, transparent 8px, #f5f5f5 8px, #f5f5f5 16px);background-size:136px 136px}.album-update-modal .modal-body ul li{margin-bottom:0.5rem}@media (max-width: 991px){.dashboard-manager .card-header{padding:inherit}}@media (min-width: 768px) and (max-width: 991px){.dashboard-project .card .header{background-size:42%;background-position:20% 75%}.dashboard-project .card .header .header-title{font-size:2.2rem}}@media (max-width: 450px){.album-update-modal .modal-header img{top:-15%;width:80px}.album-update-modal .modal-header h3{font-size:1.5rem}.album-update-modal .modal-body ul li{font-size:0.9rem}}#infoscreen-stats h1{font-size:14rem;font-weight:400;color:#272727;font-family:'Quicksand', sans-serif;margin:0}#infoscreen-stats h1 i{color:#4aa771;font-size:7rem;vertical-align:top;margin-top:1rem}#infoscreen-stats h3{font-weight:700;font-size:3rem;color:#272727;text-transform:uppercase;font-family:'Quicksand', sans-serif;margin:0}#infoscreen-stats h3 .fa-star{color:#ffda17}#infoscreen-stats .row{width:100%;height:100vh;display:-ms-flexbox;display:-webkit-flex;display:flex;justify-content:center;align-items:center;text-align:center;-ms-flex-pack:center;position:relative}#infoscreen-stats .row #soldToday{align-self:flex-start}#infoscreen-stats .row .time{position:absolute;bottom:5%;left:0;right:0;font-weight:500}.infoscreen-map{padding:0}.infoscreen-map .col-12{padding:0;position:relative}.infoscreen-map .col-12 .textContainer{position:absolute;top:5%;right:2%;background-color:white;width:500px;padding:4rem 3rem;z-index:1;text-align:center}.infoscreen-map .col-12 .textContainer h1{color:#272727;font-family:'Quicksand', sans-serif;margin:1rem 0 0 0;font-size:6rem}.infoscreen-map .col-12 .textContainer h4{color:#272727;font-family:'Quicksand', sans-serif;margin:0;font-size:2rem;text-transform:uppercase}.infoscreen-map .col-12 #overviewMap{width:100%;height:100vh}.infoscreen-map .txt-built{color:#28a745 !important}.infoscreen-map .txt-building{color:#4f82e8 !important}.infoscreen-map .txt-planned{color:#a02361 !important}.infoscreen-projects .col-12{height:100vh;position:relative}.infoscreen-projects .col-12 .proj-box{background-color:#a02361;width:780px;height:440px;position:absolute;left:10%;bottom:0;z-index:2;text-align:center}.infoscreen-projects .col-12 .proj-box h1{margin-top:3rem;color:white;font-weight:bold;font-size:4.5rem}.infoscreen-projects .col-12 .proj-box h2{display:inline-block;font-size:2.5rem;font-weight:600}.infoscreen-projects .col-12 .proj-box .houses{color:#a5ff89;margin-right:2rem}.infoscreen-projects .col-12 .proj-box .contracts{color:#f6a300}.infoscreen-projects .col-12 .proj-box .salesNumbers{display:flex;justify-content:center}.infoscreen-projects .col-12 .proj-box .salesNumbers h3{color:white;font-size:2.5rem;font-weight:400}.infoscreen-projects .col-12 .footer{background-color:white;position:absolute;left:0;bottom:0;width:100%;height:80px}.infoscreen-projects .col-12 .footer p,.infoscreen-projects .col-12 .footer .logo{position:absolute;top:50%;transform:translateY(-50%)}.infoscreen-projects .col-12 .footer p{right:27%;font-size:1.5rem}.infoscreen-projects .col-12 .footer .logo{width:180px;right:10%}.sidemenu{top:10%;height:fit-content;position:-webkit-sticky;height:100%}.btn-menu{background-color:transparent;border:1px solid #e6e6e6;transition:all 0.3s;border-radius:0;margin-bottom:1rem;display:block;text-align:start;overflow:hidden;text-overflow:ellipsis}.btn-menu:hover{background-color:#3c4883;border-color:white;color:white !important}.btn-menu-collapse{background-color:transparent;border:1px solid #e6e6e6;transition:all 0.3s;border-radius:0;margin-bottom:1rem;display:block;text-align:start}.btn-menu-collapse ul{list-style:none;padding-left:0;margin-top:0.5rem;margin-bottom:0}.btn-menu-collapse ul li{border-top:1px solid #ced4da;padding:0.4rem 0 0.4rem 1rem;font-size:0.9rem;overflow:hidden;text-overflow:ellipsis}.menu-btn-active{background-color:#3c4883;color:white !important}.sidemenu-links{width:100%}.sidemenu-links .btn-menu-link{font-size:0.9rem;width:100%;text-align:left;padding-top:0.5rem;padding-bottom:0.5rem;overflow:hidden;text-overflow:ellipsis}.sidemenu-links .btn-menu-link:nth-child(odd){background-color:#f7f7f7}.sidemenu-links .btn-menu-link:hover{text-decoration:underline}@media screen and (max-width: 991px){.mobile-menu-btn{position:fixed;bottom:7%;right:5%;background-color:#333;border-radius:50%;z-index:99;width:60px;height:60px;display:block;z-index:30;border:2px solid #666;background-image:-webkit-linear-gradient(30deg, #3f3f3f 50%, #333 50%);transition:border 0.5s}.mobile-menu-btn i{color:white}.mobile-menu-btn:focus{outline:none;border:4px solid #3c4883}.mobile-activated{left:0 !important;z-index:20}#album-breadcrumb,.page-content{transition:0.5s -webkit-filter linear}.blur-content{filter:blur(12px);-webkit-filter:blur(12px)}.sidemenu{display:flex;flex-direction:column;align-items:center;overflow-y:auto;position:fixed;top:0;padding-top:calc(0px + env(safe-area-inset-top));left:-100%;width:85%;height:100%;background-color:rgba(255,255,255,0.5);transition:left 0.7s;border-right:3px solid rgba(255,255,255,0.7);z-index:29}.sidemenu .btn-menu{border:none;width:100%;text-align:left;margin:0;border-bottom:1px solid rgba(60,72,131,0.3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidemenu .btn-menu:nth-child(1){margin-top:5rem}.sidemenu .menu-btn-active{background-color:#3c4883 !important}.sidemenu .btn-menu-collapse{width:100%;text-align:left;border:none;border-bottom:1px solid #c8c8c8;margin:0}.sidemenu .btn-menu-link{background:transparent;border-radius:0;padding-left:24px}.sidemenu .btn-menu-link:nth-child(odd){background-color:rgba(0,0,0,0.1)}.sidemenu-links .task{max-width:100vw}}@media screen and (min-width: 992px) and (max-width: 1500px){.sidemenu{max-width:15%;flex:0 0 15%}.page-content{max-width:85%;flex:0 0 85%}}@media screen and (min-width: 1500px){.sidemenu{max-width:10%;flex:0 0 10%}.page-content{max-width:90%;flex:0 0 90%}}.reg .reg-topbar{box-shadow:0px 1px 3px rgba(0,0,0,0.2)}.reg .reg-topbar .reg-headline-bar{position:relative;padding:0.5rem 0.5rem 0.5rem 1.5rem}.reg .reg-topbar .reg-headline-bar h3{font-size:2rem;margin:0}.reg .reg-topbar .reg-headline-bar a{white-space:nowrap}.reg .reg-topbar .reg-buttons-bar{display:flex;align-items:center}.reg .reg-topbar .reg-buttons-bar button,.reg .reg-topbar .reg-buttons-bar a{background-color:transparent;border:none;padding:0 0.7rem;color:#3c4883;position:relative}.reg .reg-topbar .reg-buttons-bar button i,.reg .reg-topbar .reg-buttons-bar a i{font-size:1.1rem}.reg .reg-topbar .reg-buttons-bar button:after,.reg .reg-topbar .reg-buttons-bar a:after{content:\\\"\\\";width:2px;height:100%;background-color:#ced4da;position:absolute;top:0;left:0;border-right:1px solid white}.reg .reg-topbar .reg-head{position:absolute;left:30px;top:102%;width:87%;min-height:300px;background-color:white;z-index:10;box-shadow:0px 2px 4px rgba(0,0,0,0.2)}.regCommentModal{position:relative;cursor:pointer}.regCommentModal:before{content:'';position:absolute;top:0;right:0;width:0;height:0;border-top:55px solid #e6e6e6;border-left:55px solid transparent}.regCommentModal:after{font-family:\\\"Font Awesome 5 Free\\\";content:\\\"\\\\f0b2\\\";font-weight:900;z-index:1;position:absolute;top:5px;right:5px}@media screen and (min-width: 1200px){.reg .reg-topbar{display:flex;justify-content:space-between}.reg .reg-topbar .reg-headline-bar{display:flex;flex:1;justify-content:space-between;align-items:center}}@media screen and (max-width: 1200px){.reg .reg-topbar .reg-headline-bar{padding:0.5rem}.reg .reg-topbar .reg-headline-bar h3{font-size:1.7rem}.reg .reg-topbar .reg-head{width:92%}.reg .reg-topbar .reg-head.show{box-shadow:0px 4px 28px rgba(0,0,0,0.4)}.reg .reg-buttons-bar{padding-top:0.3rem;padding-bottom:0.5rem}.reg .input-group .input-group-text{min-width:100px}}.optionsList .categoryBanner{height:125px;background-color:#666;overflow:hidden;position:relative;margin-bottom:1.5rem}.optionsList .categoryBanner h2{font-weight:400;position:absolute;top:50%;transform:translateY(-50%);background-color:white;padding:1rem;margin-left:2rem;text-transform:uppercase;z-index:1}.optionsList .categoryBanner img{position:absolute;top:50%;transform:translateY(-50%);width:100%}.optionsList .option .option-img{width:100%;position:relative;overflow:hidden;height:155px}.optionsList .option .option-img img{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.optionsList .option p{font-size:0.85rem}@media screen and (min-width: 300px) and (max-width: 1199px){.optionsList .categoryBanner{height:auto;overflow:initial;margin:0 0 0.5rem 0;background:none}.optionsList .categoryBanner h2{font-size:1.5rem;font-weight:bold;margin:0;padding:0;background:none;position:relative;transform:initial}.optionsList .categoryBanner img{display:none}.optionsList .option h3{font-size:1.3rem}}.searchResults .list-group-item h5{margin-bottom:0.3rem;font-weight:bold}.searchResults .list-group-item h5 em{color:#fdb913;text-decoration:underline}.searchResults .list-group-item p{margin:0;display:inline-block;font-size:0.9rem;text-transform:uppercase}.searchResults .list-group-item p span em{color:#fdb913;text-decoration:underline}.searchResults .list-group-item .badge{font-weight:600;font-size:0.8rem;margin-right:3px}.searchResults .list-group-item .divider{margin-right:12px;position:relative}.searchResults .list-group-item .divider:after{content:'';position:absolute;right:-8px;width:1px;top:0px;height:100%;background-color:#ced4da}.searchResults .searchComment{max-height:280px;overflow:auto}.searchResults .searchComment .commentTxt{white-space:pre-line}span.searchtitle em{color:#fdb913}.login-container{display:flex;height:100vh;align-items:center;justify-content:center}.login-container #login-bg{position:fixed;top:50%;left:50%;transform:translate(-50%, -50%);width:100%;z-index:-9}.login-container div{width:100%;margin-bottom:10rem}.login-container div img{display:flex;width:128px;margin:auto;margin-bottom:1.5rem}.login-container div label{color:white}.login-container div input{margin-bottom:1rem}.login-container div button{width:100%}@media (max-width: 776px){.login-container #login-bg{width:unset !important;height:100%}.login-container div{margin-bottom:6rem}}@media (min-width: 600px) and (max-height: 450px){.login-container #login-bg{height:unset !important}.login-container div{margin-bottom:0rem}}@media (min-width: 768px) and (max-width: 1446px){.login-container #login-bg{width:unset !important;height:100%}}.loading{position:fixed;top:0;z-index:9999;width:100%;height:100%;overflow:hidden}.loading:before{content:'';display:block;position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,0.3)}.loading:not(:required){font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.loading:not(:required):after{content:'';display:block;border:16px solid #e6e6e6;border-top:16px solid #3c4883;border-radius:50%;width:80px;height:80px;animation:spin 1.5s linear infinite;position:absolute;margin:auto;top:0;bottom:0;left:0;right:0}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}body{background-color:#f0f0f0}h1{font-size:4rem;font-weight:bold;color:#3c4883;font-family:\\\"Quicksand\\\",\\\"sans-serif\\\"}h2{font-size:3rem;font-weight:bold;color:#3c4883;font-family:\\\"Quicksand\\\",\\\"sans-serif\\\"}h3{font-size:2rem;font-weight:600;color:#3c4883;font-family:\\\"Quicksand\\\",\\\"sans-serif\\\"}h4{font-size:1.5rem;font-family:\\\"Quicksand\\\",\\\"sans-serif\\\"}h5{font-size:1.2rem;font-family:\\\"Quicksand\\\",\\\"sans-serif\\\"}h4,h5,p,li{color:#666}.badge{padding:0.25rem 0.6rem;text-transform:uppercase}body.modal-open mentio-menu{z-index:20000 !important}.modal{top:calc(0px + env(safe-area-inset-top))}.toast{opacity:1 !important}.toast-success{background-color:#51a351 !important}.toast-info{background-color:#17a2b8 !important}.toast-warning{background-color:#f89406 !important}.toast-error{background-color:#dc3545 !important}@media screen and (min-width: 300px) and (max-width: 768px){h1{font-size:3rem}h2{font-size:2.5rem}}.word-defined{color:#5464b3;text-decoration-line:underline;text-decoration-style:dotted;cursor:help}footer{position:fixed;bottom:0;width:100%;left:0;right:0;background-color:#f8f9fa;padding:0.5rem 1rem 0.5rem;z-index:1021;display:none}.page-content{padding-bottom:50px}.calendarTitel{padding-bottom:3px}.profile-img{margin-right:0.5rem;border-radius:50%;background-color:transparent;margin-bottom:0px !important;margin-top:-5px !important}.profile-img.medium{width:38px;height:38px}.bg-none{background-color:transparent}.mt-6{margin-top:4rem}.b-radius-l-0{border-top-left-radius:0 !important;border-bottom-left-radius:0 !important}.b-radius-r-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.b-radius-t-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.b-radius-b-0{border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important}.hr-alt{border:none;height:3px;background-color:#e6e6e6}.whitespace-nowrap{white-space:nowrap}.cursorPointer{cursor:pointer}.text-link{color:#5464b3 !important;cursor:pointer}.text-link:hover{text-decoration:underline !important}.halfOpacity{opacity:0.5}.grey-hover:hover{background-color:#e6e6e6}.dotted-border{border:dotted}.invalid-pnum{border:dotted;color:red !important}.clickpointer:hover{color:#3c4883;text-decoration:underline;cursor:pointer}th[st-sort]{cursor:pointer}.movehandle{cursor:move;opacity:0.7}.overflow-hidden{overflow:hidden}.text-sm{font-size:0.75rem}.required{border:2px solid #fed130 !important}album-rating .fa-star{color:#fed130}album-rating .fa-star:hover{color:#fdb913}.flex-1{flex:1}.pdfviewer{min-width:670px;min-height:670px}.album-contact-person-picker-no-choice,.album-contact-picker-no-choice{position:absolute;z-index:2;background:papayawhip;color:red;width:100%;border-top:solid;border-bottom:solid;border-right:solid;border-left:solid;display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}album-activity-list .completed-text{position:absolute;bottom:0;right:0;padding:5px;color:#28a745;font-size:smaller}.form-control .ui-select-toggle>a.btn,.form-control .ui-select-search>a.btn{padding-bottom:0;padding-top:0}.glyphicon.glyphicon-remove{font-size:0.8rem;margin-right:-30px}.glyphicon.glyphicon-ok{font-size:0.8rem;color:green;font-weight:900}a.disabled{cursor:not-allowed !important;color:grey !important}a.disabled:hover{text-decoration:none !important}a[pdfref]{display:block}.margin-top-5{margin-top:5px}.form-control{height:auto}.form-control .ui-select-toggle,.form-control .ui-select-search{border:none;width:100%;position:relative}.form-control .ui-select-toggle>a.btn,.form-control .ui-select-search>a.btn{margin:0;height:initial;top:50%;transform:translateY(-50%)}.form-control .checkboxBtn{margin-top:0;margin-bottom:0}.form-control .checkboxBtn span{border:none;font-size:0.9rem;margin-top:0.2rem}.form-control input[type=\\\"file\\\"]:disabled{cursor:not-allowed}.form-control .ui-select-container[disabled=\\\"disabled\\\"]{background-color:#ebedef;pointer-events:none}.form-control.readonly{background-color:whitesmoke}.form-num{background-color:whitesmoke;border:1px solid #ced4da;border-radius:0.25rem;border-right:none;border-top-right-radius:0;border-bottom-right-radius:0;padding-left:0.6rem;padding-right:0.6rem;color:#666;display:flex;align-items:center;height:auto}.form-attachment{background-color:white;border-left:none !important;padding-left:1rem !important;padding-right:1rem !important}.custom-textarea label{background-color:whitesmoke;color:#495057;width:100%;margin:0;padding:0.375rem 0.75rem;border:1px solid #ced4da;border-radius:0.25rem;border-bottom-left-radius:0;border-bottom-right-radius:0;flex:1}.custom-textarea label small{font-size:0.7rem;color:gray;margin-top:0.25rem;float:right}.custom-textarea button{border-color:#ced4da}.custom-textarea textarea{border-top-left-radius:0;border-top-right-radius:0}.custom-textarea .form-num{padding-top:0.35rem;padding-bottom:0.35rem;border-bottom:none}album-post-code{padding:0 !important}album-phone,album-date-picker{display:flex;flex-grow:1;flex:1}album-phone .btn,album-date-picker .btn{border-radius:0}.card .text-muted{font-size:0.9rem}.card album-date-picker>div{display:flex}.card album-date-picker>div input{border-top-right-radius:0;border-bottom-right-radius:0}.card album-date-picker>div button{border-top-left-radius:0;border-bottom-left-radius:0}.custom-select{-webkit-appearance:none;-moz-appearance:none}.custom-input{position:relative}.custom-input input{box-shadow:none !important}.custom-input input:focus{outline-width:0}.custom-input label{position:absolute;top:50%;left:3%;transform:translateY(-50%);transition:all 0.4s;-webkit-transition:all 0.4s;padding:0 0.3rem;margin:0;pointer-events:none;color:#999}.custom-input input:focus+label{top:0;font-size:0.7rem;z-index:1;color:#3c4883 !important;background-color:white;border-radius:6px}.custom-input .custom-input-label-active{top:0;font-size:0.7rem;z-index:1;color:#3c4883 !important;background-color:white}.uib-datepicker-popup{padding:0}.uib-datepicker-popup .uib-daypicker{padding:1rem}.uib-datepicker-popup thead button{background-color:#3c4883}.uib-datepicker-popup .uib-day button{background-color:white !important;color:gray;border-color:#ced4da}.uib-datepicker-popup .uib-day button:active{color:gray !important}.uib-datepicker-popup tr .h6{padding-right:0.5rem !important}.uib-datepicker-popup tr td .active{background-color:#3c4883 !important;font-weight:600}.ui-select-container,.ui-select-toggle,.ui-select-search{height:100%}.ui-select-dropdown{display:block}.ui-select-search{height:auto;position:relative}.ui-select-choices{top:auto}.ui-select-bootstrap .ui-select-match-text{white-space:normal}.ui-select-bootstrap .ui-select-choices-row.active>span{background-color:#F58025}.ui-select-bootstrap>.ui-select-choices{max-height:300px}#regCategory .ui-select-choices{max-height:500px}#regCategory .dropdown-header{background-color:#ced4da;color:#3c4883;font-size:1rem;margin-bottom:0.5rem}mentio-menu .active,mentio-menu .menu-highlighted{background-color:#f6a300;color:white}mentio-menu .scrollable-menu{min-width:450px}mentio-menu .scrollable-menu li{padding-left:0.5rem}.btn-file{position:relative;overflow:hidden}.btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;filter:alpha(opacity=0);opacity:0;outline:none;background:white;cursor:inherit;display:block}.input-group-append .dropdown button{border-top-left-radius:0;border-bottom-left-radius:0}.input-group .input-group-text{background-color:whitesmoke;min-width:150px;text-align:left}input[type=\\\"color\\\"]{height:auto}album-attachments{display:flex}.time-input{position:relative;flex:1}.time-input:before{content:\\\"\\\\f017\\\";font-family:\\\"Font Awesome 5 Free\\\";font-weight:900;font-size:1.2rem;position:absolute;top:50%;transform:translateY(-50%);left:8px;color:gray}.time-input input{padding-left:2rem}.strike:disabled{text-decoration:line-through}.strike:disabled input{text-decoration:line-through}.strike .form-control:disabled{text-decoration:line-through}@media screen and (min-width: 300px) and (max-width: 767px){.input-group{flex-wrap:initial}}@media screen and (min-width: 1500px){.labels-lg .input-group label{min-width:250px}.txt-group-lg .input-group-text{min-width:250px !important}}button,a{cursor:pointer}.btn-outline{background-color:transparent;border:1px solid #f5f5f5}.btn-outline:hover{background-color:#f5f5f5;border-color:#e6e6e6}.bg-primary,.bg-info,.bg-success,.bg-secondary,.bg-danger,.btn-primary{color:white !important}.bg-primary:active,.bg-info:active,.bg-success:active,.bg-secondary:active,.bg-danger:active,.btn-primary:active{color:white}.btn-outline-primary.active{color:white !important}.btn-outline-primary:hover{color:white !important}.show>.btn-outline-primary.dropdown-toggle{color:white}.btn-outline-primary:active{color:white !important}.btn-danger{color:white !important}.btn-viewing{background-color:#a02361;color:white}.btn-viewing:hover{background-color:#dd175e}.btn-trysilhus-red{background-color:#a02361;color:white !important}.btn-trysilhus-red:focus{box-shadow:0 0 0 0.2rem rgba(160,35,97,0.25)}.btn-trysilhus-red:hover{background-color:#901853}.btn-warning{color:white}.bg-primary-no-hover{background-color:#3c4883 !important;color:white}.bg-primary-no-hover:hover{color:white}.circleBtn{position:absolute;z-index:1;top:6%;right:5%;border-radius:50%;padding:0.4rem 0.64rem 0.2rem 0.64rem}.circleBtn i{font-size:1.5rem}.checkboxBtn{white-space:pre;display:inline-flex;flex-direction:column;justify-content:center;padding:0;margin-right:1rem;margin-bottom:0.3rem;margin-top:0.3rem;position:relative}.checkboxBtn input{width:100%;height:100% !important;margin-top:0;-webkit-appearance:checkbox;-moz-appearance:checkbox;-ms-appearance:checkbox;cursor:pointer;position:absolute;z-index:1;opacity:0;filter:alpha(opacity=0);-ms-filter:\\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\\\"}.checkboxBtn input[type=\\\"checkbox\\\"]{-ms-box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;width:100%}.checkboxBtn input[type=\\\"checkbox\\\"]:checked+span{background-color:#28a745}.checkboxBtn input[type=\\\"checkbox\\\"]:checked+span i{font-size:0.9rem}.checkboxBtn input[type=\\\"checkbox\\\"]:checked+span i:after{font-family:\\\"Font Awesome 5 Free\\\";font-weight:900;content:\\\"\\\\f00c\\\"}.checkboxBtn input[type=\\\"checkbox\\\"]:disabled+span{opacity:0.6}.checkboxBtn input[type=\\\"checkbox\\\"]:disabled+span i{font-size:0.9rem}.checkboxBtn input[type=\\\"checkbox\\\"]:disabled+span i:after{font-family:\\\"Font Awesome 5 Free\\\";font-weight:900;content:\\\"\\\\f023\\\"}.checkboxBtn input[type=\\\"checkbox\\\"]:disabled{cursor:not-allowed}.checkboxBtn .redCheck:checked+span{background-color:#dc3545 !important}.checkboxBtn .redCheck:checked+span i{font-size:0.9rem}.checkboxBtn .redCheck:checked+span i:after{content:\\\"\\\\f057\\\" !important;position:relative;top:1px}.checkboxBtn .blueCheck:checked+span{background-color:#3c4883 !important}.checkboxBtn .blueCheck:checked+span i{font-size:0.9rem}.checkboxBtn .blueCheck:checked+span i:after{content:\\\"\\\\f00c\\\" !important;position:relative;top:1px}.checkboxBtn span{text-align:center;cursor:pointer;color:white;background-color:#ced4da;border:2px solid white;border-radius:4px;height:100%;padding:0.3rem 0.7rem}.defaultCheckbox{margin-right:1.5rem;margin-top:0.4rem;display:inline-flex}.defaultCheckbox input[type=\\\"checkbox\\\"]{display:none;-webkit-appearance:checkbox !important;-moz-appearance:checkbox !important}.defaultCheckbox input[type=\\\"checkbox\\\"]+label{color:#999;font-weight:normal}.defaultCheckbox input[type=\\\"checkbox\\\"]+label span{display:inline-block;width:19px;height:19px;margin:-2px 8px 0 0;vertical-align:middle;border:2px solid #3c4883;cursor:pointer;transition:background-color 0.2s}.defaultCheckbox input[type=\\\"checkbox\\\"]:checked+label span{background-color:#3c4883}.defaultCheckbox input[type=\\\"checkbox\\\"]:checked+label span:after{font-family:\\\"Font Awesome 5 Free\\\";font-weight:900;content:\\\"\\\\f00c\\\";color:white;font-size:0.7rem;position:relative;left:1.5px;bottom:6px}.defaultCheckbox input[type=\\\"checkbox\\\"]:disabled+label{cursor:not-allowed}.defaultCheckbox input[type=\\\"checkbox\\\"]:disabled+label span{background-color:#999;border:1px solid #999;cursor:not-allowed}.defaultCheckbox input[type=\\\"checkbox\\\"]:disabled+label span:after{left:2px;bottom:4px}.radioCheckbox{display:inline-flex;margin-top:0.4rem}.radioCheckbox label{margin-right:0.7rem}.radioCheckbox input[type=\\\"radio\\\"]{display:none;-webkit-appearance:radio !important;-moz-appearance:radio !important}.radioCheckbox input[type=\\\"radio\\\"]+label{color:#999;font-weight:normal}.radioCheckbox input[type=\\\"radio\\\"]+label span{display:inline-block;width:19px;height:19px;margin:-2px 8px 0 0;vertical-align:middle;border:2px solid #3c4883;border-radius:50%;cursor:pointer;transition:background-color 0.2s}.radioCheckbox input[type=\\\"radio\\\"]:checked+label span{background-color:#3c4883;position:relative}.radioCheckbox input[type=\\\"radio\\\"]:checked+label span:after{font-family:\\\"Font Awesome 5 Free\\\";font-weight:900;content:\\\"\\\\f00c\\\";color:white;font-size:0.7rem;position:relative;bottom:5px;left:2px}.radioCheckbox input[type=\\\"radio\\\"]:disabled+label{cursor:not-allowed}.radioCheckbox input[type=\\\"radio\\\"]:disabled+label span{background-color:#999;border:1px solid #999;cursor:not-allowed}.outsideContainerFixBtn{position:absolute;right:0;margin-right:15px;z-index:99}.custom-control .custom-control-label:before{background-color:#dc3545;border-color:#dc3545}.custom-control .custom-control-label:after{background-color:white}.custom-control .custom-control-input:checked+.custom-control-label:before{background-color:#28a745;border-color:#28a745}.hover-circle{position:relative;cursor:pointer}.hover-circle:after{content:\\\"\\\";transition:padding 0.2s, background-color 0.2s;-webkit-transition:padding 0.2s, background-color 0.2s;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);border-radius:50%;padding:0}.hover-circle:hover:after{content:\\\"\\\";background-color:rgba(70,70,70,0.1);padding:1rem}.hover-circle:active:after{padding:1.2rem}@media screen and (min-width: 300px) and (max-width: 1200px){.checkboxBtn{margin:0}}@media screen and (min-width: 300px) and (max-width: 767px){.btn-sm-fullWidth{width:100%;margin-bottom:0.5rem}.outsideContainerFixBtn{position:relative;margin-right:0}}.calendarDropdawn{position:absolute;right:1rem;color:#3c4883}.commentSection #noComments{background-color:#f5f5f5;padding:1rem}.commentSection #noComments p{margin-top:0.5rem;margin-bottom:0}.commentSection #noComments p,.commentSection #noComments button{display:inline-block}.commentSection .commentInfo{display:inline-flex;align-items:center}.commentSection .commentInfo .user-img{height:30px;width:30px;margin-right:0.5rem;border-radius:50%;background-color:transparent}.commentSection .commentInfo p{display:inline-block;margin-bottom:0}.commentSection .commentInfo .username{margin-right:0.5rem}.commentSection .commentInfo .userdate,.commentSection .commentInfo .commentStatus{color:#999;font-size:0.9rem;padding-left:0.7rem;border-left:1px solid #ced4da}.commentSection .commentContainer{padding-top:0.5rem;padding-bottom:0.5rem;background-color:white;border:1px solid #e6e6e6;border-radius:3px;position:relative;z-index:2}.commentSection .commentContainer p{margin-left:1rem;margin-bottom:0;padding:0.5rem;white-space:pre-wrap}.commentSection .commentContainer hr{border-top:1px solid #e6e6e6;width:97%;display:block;margin:0.6rem auto 0.4rem auto}.commentSection .commentContainer .commentAttachmentTxt{display:inline-block;white-space:normal}.commentSection .commentContainer .label{display:inline-block;margin-right:1rem}.commentSection .commentContainer .label a{color:white !important}.commentSection .visible{background-color:#d8dae0}@media (max-width: 768px){.commentContainer:before{display:none}.commentContainer:after{display:none}}.bs-callout{padding:20px;margin:20px 0;border:1px solid #e6e6e6;border-left-width:5px;border-radius:3px;background-color:white}.bs-callout p:last-child{margin-bottom:0}.bs-callout+.bs-callout{margin-top:-5px}.bs-callout-primary{border-left-color:#3c4883}.bs-callout-primary h4{color:#3c4883}.table-md th{padding:0.3rem 1rem;font-size:0.9rem}.table-md .nowrap{white-space:nowrap}.table-md td{padding:0.3rem 1rem;font-size:0.9rem}.table-md td a{color:#5464b3}.table-md .success{color:#28a745}.table-md .success a{color:#28a745}.table-md .danger{color:#f6a300}.table-md .danger a{color:#f6a300}.table-md a{cursor:pointer !important}td.nowrap{white-space:nowrap}td>a[ng-click]{cursor:pointer !important;color:#5464b3 !important}td>a[ng-click]:hover{text-decoration:underline !important}.postpone-order-line td{text-decoration:line-through;font-weight:lighter;background:#dddddd;cursor:not-allowed;opacity:0.35}.added-order-line td{font-weight:bolder;background:#c1d6ab}.tran-deleted td input,.tran-deleted td{text-decoration:line-through;font-weight:lighter}.st-sort-ascent:before{content:\\\"\\\\25B2\\\"}.st-sort-descent:before{content:\\\"\\\\25BC\\\"}tr.notFollowUp{opacity:0.5}td.notFollowUp{text-decoration-line:line-through}.table-scroller{padding-left:385px;overflow-x:scroll}.table-scroller .sticky{position:absolute;top:auto;left:0;background-color:#f0f0f0}.table-scroller .sticky-col{width:200px}.table-scroller .sticky-col2{width:200px;left:200px}.table-scroller .sticky-col-double{width:400px}@media (max-width: 768px){.table-md td select{padding:0}.activityTable th,.activityTable td{font-size:0.9rem}}[ng-click]{cursor:pointer !important}.scheduleActivityList{background-color:white;padding-top:0.5rem;padding-bottom:0.5rem;margin-bottom:8px}.scheduleActivityList .aberrationInfo{font-size:0.8rem;color:#dc3545;margin-bottom:0}.scheduleActivityList .checkbox{margin:0;display:inline-block;position:relative}.scheduleActivityList .checkbox input{width:100%;height:100%;margin-top:0;-webkit-appearance:checkbox;-moz-appearance:checkbox;-ms-appearance:checkbox;cursor:pointer;position:absolute;right:0;z-index:1;opacity:0;filter:alpha(opacity=0);-ms-filter:\\\"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\\\"}.scheduleActivityList .checkbox input[type=\\\"checkbox\\\"]{-ms-box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;width:100%}.scheduleActivityList .checkbox input[type=\\\"checkbox\\\"]:checked+span{background-color:#28a745}.scheduleActivityList .checkbox input[type=\\\"checkbox\\\"]:disabled{cursor:not-allowed}.scheduleActivityList .checkbox .avvik:checked+span{background-color:#dc3545 !important}.scheduleActivityList .checkbox span{text-align:center;color:white;background-color:#ced4da;height:100%}.scheduleActivityList .checkbox span i{margin-left:0.3rem}.scheduleActivityList .checkbox .aberrationLink{position:absolute;width:100%;height:100%;cursor:pointer;z-index:2}.scheduleActivityList .subctrl{padding-top:0.5rem;padding-bottom:0.5rem;border-top:2px solid #f5f5f5;background-color:#ebebeb}.scheduleActivityList .subctrl p{margin-bottom:0}.checklistContainer .input-group-text{white-space:pre-line}.checklistContainer .labelGroup{flex-direction:initial !important;justify-content:left !important;white-space:pre;white-space:normal}.checklistContainer p{margin-bottom:0}.checklistContainer p a{background-color:transparent}.chk{border:1px solid #e6e6e6;margin-bottom:1rem;margin-top:1rem;padding:1rem}.chk-reg{background-color:#e1e4e8}.chk-reg .defaultCheckbox input[type=\\\"checkbox\\\"]+label{color:#999;font-weight:normal}.chk-reg .defaultCheckbox input[type=\\\"checkbox\\\"]+label span{border:2px solid #3c4883}.chk-reg .defaultCheckbox input[type=\\\"checkbox\\\"]:checked+label span{background-color:#3c4883}.chk-reg .defaultCheckbox input[type=\\\"checkbox\\\"]:checked+label span:after{color:white}.chk-reg .defaultCheckbox input[type=\\\"checkbox\\\"]:disabled+label span{background-color:#999;border:1px solid #999}.chk-abr{background-color:#fff3e4}.chk-abr .defaultCheckbox input[type=\\\"checkbox\\\"]+label{color:#999;font-weight:normal}.chk-abr .defaultCheckbox input[type=\\\"checkbox\\\"]+label span{border:2px solid #3c4883}.chk-abr .defaultCheckbox input[type=\\\"checkbox\\\"]:checked+label span{background-color:#3c4883}.chk-abr .defaultCheckbox input[type=\\\"checkbox\\\"]:checked+label span:after{color:white}.chk-abr .defaultCheckbox input[type=\\\"checkbox\\\"]:disabled+label span{background-color:#999;border:1px solid #999}.chkLabelLink{background-color:transparent !important;color:#3c4883 !important;cursor:pointer !important}.chkLabelLink:hover{text-decoration:underline !important}.checklist .input-group-prepend{width:100%}.checklist .input-group-prepend label{width:100%}.checklist album-date-picker .input-group-prepend{min-width:unset;max-width:unset;width:auto}.checklist album-date-picker .form-control{width:100%;max-width:100%}.checklist .custom-textarea .input-group-prepend{max-width:100%;min-width:100%}.checklist .custom-textarea .form-control{max-width:100%;width:100%}@media screen and (min-width: 300px) and (max-width: 1200px){.checklistContainer .labelGroup{white-space:initial}}@media screen and (min-width: 300px) and (max-width: 767px){.checklist .input-group{flex-wrap:wrap}.checklist .form-control{max-width:100%;width:100%}.checklist .input-group-prepend{max-width:100%;width:100%}.checklist .input-group-append{display:block;width:100%}.checklist .input-group-append .btn{width:100%;border-radius:0;margin:0}}.option-img{width:100%;position:relative;overflow:hidden;height:500px;background-color:#ced4da}.option-img img{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%}.profile-img{width:40px;border-radius:50%;display:inline-block;margin-bottom:1rem;margin-right:0.4rem;cursor:pointer}@media screen and (min-width: 300px) and (max-width: 767px){.option-img{height:300px}}.option-img-project{width:100%;position:relative;overflow:hidden}.option-img-project img{width:100%}.album-card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,0.125);border-radius:0.25rem}.album-card .album-card-body{padding:0;flex:1 1 auto}.album-card .album-card-body .album-card-content{font-family:\\\"Quicksand\\\",\\\"sans-serif\\\";display:block;position:relative;padding:0.8rem 1.25rem;border-bottom:1px solid #e6e6e6}.album-card .album-card-body .album-card-content:nth-child(even){background-color:#fafafa}.album-card .album-card-body .album-card-content:hover{background-color:#eee;text-decoration:none}.album-card .album-card-body .album-card-content img{vertical-align:top}.album-card .album-card-body .album-card-content h3{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:1rem;margin-bottom:0}.album-card .album-card-body .album-card-content h3 span{color:#999}.album-card .album-card-body .album-card-content p{text-transform:capitalize}.album-card .album-card-body .album-card-content small{color:#3c4883;font-weight:500}.album-card .album-card-body .album-card-content .badge{text-transform:capitalize;font-weight:500;color:#3f3f3f}.album-card .album-card-body .album-card-content .badge-primary{background-color:rgba(60,72,131,0.3)}.album-card .album-card-body .album-card-content .badge-success{background-color:rgba(40,167,69,0.3)}.album-card .album-card-body .album-card-content .badge-warning{background-color:rgba(255,193,7,0.3)}.album-card .album-card-body .album-card-content .badge-info{background-color:rgba(23,162,184,0.2)}.album-card .album-card-body .album-card-content .badge-secondary{background-color:rgba(110,0,255,0.2)}.album-card .album-card-body .album-card-content .badge-viewing{background-color:rgba(160,35,97,0.3)}.album-card .album-card-body .album-card-content .badge-unknown{background-color:dimgray}.album-card .album-card-body .overdue h3,.album-card .album-card-body .overdue small{color:#dc3545}.album-card .info-popover{padding:0 0 0 0.8rem;line-height:1.1;font-size:1rem;color:#3c4883;position:relative}.album-card .info-popover:after{content:'';position:absolute;top:0;right:90%;width:1px;height:100%;background-color:#ced4da}.album-card .meeting-info{display:flex;justify-content:space-between;flex-wrap:wrap}.stats-card{position:relative}.stats-card button{position:absolute;bottom:-10px;left:-10px;z-index:2;background-color:white;border:none;box-shadow:0px 1px 4px #999;border-radius:50%;font-size:1.3rem;padding:0.27rem 0.7rem;background-color:white}.carouselViewer .carousel-arrow{background-color:rgba(0,0,0,0.4);border-radius:50%;padding:0.4rem 0.7rem;font-size:1.7rem;color:white}.carousel-indicators{bottom:-5%}.carousel-indicators li{background-color:#666565}@media (min-width: 992px){.carouselViewer{max-width:1000px}.carouselViewer .modal-content{min-width:992px;min-height:90vh}}@media (max-width: 991px){.carouselViewer{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%) !important;width:90%;margin:0}.carouselViewer .carousel-indicators{bottom:-15%}.carouselViewer .modal-content{min-height:50vh}}@media (min-width: 400px) and (max-width: 768px){.carouselViewer{max-width:700px}.carouselViewer .carousel-indicators{bottom:-10%}.carouselViewer .modal-content{min-height:60vh}}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","const navigation = (pageURL, target) => {\n let vueAddress = albumAddress;\n let useAppRouting = (useMultipleAppRouting).toString();\n if (env === \"dev\") {\n vueAddress = albumAddress.replace(\"9005\", \"9006\");\n }\n var openIn = target ? \"_blank\" : \"_self\";\n\n var v2 = [\n \"arshjul\",\n \"prosesskalender\",\n \"support\",\n \"management\",\n \"agreements\",\n \"production/-1\",\n \"strategy/map\",\n \"rom\",\n \"main\",\n \"forecast\"\n ];\n\n var v3 = [\n \"dashboard\", \n \"objects\", \n \"customers\",\n \"contactpersons\",\n \"contacts\",\n \"processes\",\n \"planned\",\n \"reports\",\n \"budget\",\n \"mytasks\",\n \"tasks\",\n \"options\",\n \"components\",\n \"checklists\",\n \"aberrations\",\n \"registrations\",\n \"settings/system\",\n \"profil\"\n ];\n\n if (v2.indexOf(pageURL) > -1 && useAppRouting == \"true\") { \n window.open(albumAddress + \"/v2/#/\" + pageURL, openIn);\n }\n else if (v3.indexOf(pageURL) > -1 && useAppRouting == \"true\") {\n window.open(albumAddress + \"/v3/\" + pageURL, openIn);\n }\n else {\n window.open(vueAddress + \"/planning.html#/\" + pageURL, openIn);\n }\n};\n\nexport default navigation;\n","import { map, startsWith } from \"lodash\";\nimport moment from \"moment\";\nimport \"moment/locale/nb\";\nimport * as Sentry from \"@sentry/browser\";\nimport navigation from \"shared/navigation.js\";\n\nexport default [\n \"msalAuthenticationService\",\n \"$http\",\n \"$rootScope\",\n \"store\",\n \"$log\",\n \"uibPaginationConfig\",\n \"$location\",\n \"$transitions\",\n \"$state\",\n \"$interpolate\",\n \"$timeout\",\n \"amMoment\",\n \"toastr\",\n \"albumBrowser\",\n \"$q\",\n \"$confirm\",\n \"userApi\",\n \"albumConfig\",\n function (\n msalService,\n $http,\n $rootScope,\n store,\n $log,\n uibPaginationConfig,\n $location,\n $transitions,\n $state,\n $interpolate,\n $timeout,\n amMoment,\n toastr,\n albumBrowser,\n $q,\n $confirm,\n userApi,\n albumConfig\n ) {\n\n $rootScope.$on(\"unauthenticated\", function () { \n console.info(\"unauthenticated in jwtInterceptor\");\n window.location.href = \"../\";\n });\n\n if (albumConfig.useMultipleAppRouting == \"false\") {\n msalService\n .acquireTokenSilent([window.applicationConfig.userProfileScopes])\n .then((response) => {\n console.info(\"aquireTokenSilent\", response);\n })\n .catch(function (error) {\n if (\n error.indexOf(\"user_login_error\") > -1 ||\n error.indexOf(\"interaction_required\") > -1\n ) {\n msalService.loginRedirect(\n window.applicationConfig.userProfileScopes\n );\n }\n });\n\n var idToken = localStorage.getItem(\"msal.idtoken\");\n if (idToken && idToken.length > 0) {\n // console.info(\"set token from msal.idToken\");\n localStorage.setItem(\"token\", idToken);\n }\n\n if (localStorage.getItem(\"connections-auth-check\") == \"true\") {\n localStorage.removeItem(\"connections-auth-check\");\n userApi\n .getHclConnectionsAuthenticated()\n .then((response) => {\n if (!response.data.authenticated) {\n userApi\n .hclConnectionsLoginModal(response.data.userId)\n .result.then(function (res) {\n if (res) {\n userApi\n .postHclConnectionsAuthentication({\n user: response.data.userId,\n password: res\n })\n .then((r) => {\n if (!r.data) {\n $confirm({\n title: \"Tilkobling mislykket\",\n text: `Tilkobling til Connections mislykket pga. feil oppgitt passord. \n Dette vil medføre manglende tilgang til 'Dokumenter' på prosjektnivå. Logg ut av Album og inn igjen for å forsøke på nytt.`,\n hideCancel: true\n }).then(function () {});\n }\n });\n } else {\n $confirm({\n title: \"Tilkobling avbrutt\",\n text: `Tilkobling til Connections ble avbrutt. \n Dette vil medføre manglende tilgang til 'Dokumenter' på prosjektnivå.`,\n hideCancel: true\n }).then(function () {});\n }\n });\n }\n // console.info(\n // \"hcl-connections-authenticated\",\n // response.data\n // );\n })\n .catch(function (error) {\n if (error && error.status && error.status == 401) {\n msalService.logout();\n }\n });\n }\n }\n\n var cleanSearchInput = (toState) => {\n var searchPageInput = $(\"#searchinput\");\n var headerSearchInput = $(\"#txtAlbumSearchInput\");\n var isSearchState = toState.name === \"main.search\";\n\n switch (isSearchState) {\n case true:\n headerSearchInput.val(searchPageInput.val());\n break;\n case false:\n headerSearchInput.val(\"\");\n break;\n }\n };\n\n var profile = store.get(\"profile\");\n\n // authManager.checkAuthOnRefresh();\n // authManager.redirectWhenUnauthenticated();\n // $rootScope.$on(\"tokenHasExpired\", function () {\n // store.set(\"album-return-url\", $location.path());\n // $log.info(\"Token er utgått på tid, bruker må logge på igjen!\");\n // });\n\n if (profile) {\n Sentry.setUser({\n id: profile.id,\n username: profile.albumUserName,\n email: profile.email,\n fullName: profile.name,\n firstName: profile.firstName\n });\n }\n\n $rootScope.isMsie = albumBrowser.ie;\n\n moment.locale(\"nb\");\n amMoment.changeLocale(\"nb\");\n\n uibPaginationConfig.firstText = \"Første\";\n uibPaginationConfig.previousText = \"Forrige\";\n uibPaginationConfig.nextText = \"Neste\";\n uibPaginationConfig.lastText = \"Siste\";\n\n $state.defaultErrorHandler(function (error) {\n if (\n error.detail &&\n error.detail.status &&\n error.detail.status !== 401\n ) {\n $log.warn(\"Default error handler fired!\");\n }\n });\n $transitions.onError({}, function (transition) {\n var error = transition.error();\n if (error.status && error.msg && error.status === 401) {\n toastr.warning(error.msg);\n }\n if (error.detail && error.detail.msg) {\n toastr.warning(error.detail.msg);\n }\n\n if (error.type !== 5) {\n $log.warn(\"Transition error!\", error);\n\n if (\n error.detail &&\n error.detail.status &&\n error.detail.status !== 401\n ) {\n Sentry.captureException(error);\n }\n\n if (error.detail && error.detail.data) {\n var errorMessageWords = error.detail.data\n .toLowerCase()\n .split(\" \");\n if (\n (errorMessageWords.findIndex((i) => i == \"seamless\") >\n -1 &&\n errorMessageWords.findIndex((i) => i == \"single\") >\n -1 &&\n errorMessageWords.findIndex((i) => i == \"failed\") >\n -1) ||\n (errorMessageWords.findIndex((i) => i == \"token\") >\n -1 &&\n errorMessageWords.findIndex((i) => i == \"renewal\") >\n -1 &&\n errorMessageWords.findIndex((i) => i == \"timeout\") >\n -1)\n ) {\n navigation(\"cookie\");\n } else if (\n error.detail.data.startsWith(\n \"Token renewal operation failed\"\n ) ||\n error.detail.data.startsWith(\"AADSTS50058\")\n ) {\n msalService.loginRedirect(\n window.applicationConfig.userProfileScopes\n );\n }\n }\n } else {\n $log.warn(\"Transition error\", error);\n }\n });\n\n function resolved(trans, fn) {\n var tokens = trans.getResolveTokens();\n var resolves = {};\n var promises = tokens.map(function (token) {\n var resolved = trans.injector().get(token);\n resolves[token] = resolved;\n return resolved;\n });\n $q.all(promises).then(function () {\n fn(resolves);\n });\n }\n\n function getExternalAddress(id, type, path) {\n return albumConfig.useMultipleAppRouting == \"true\" ? \n albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=\" + type + \"&id=\" + id + \"&path=\" + path : undefined;\n }\n\n function updateBreadcrumbsArray(resolves) {\n var title = \"Album\";\n var currentState = $state.$current;\n\n var titleFromData =\n currentState.data && currentState.data.titleText;\n var titleFromAData = currentState.aData && currentState.aData.name;\n var customBreadCrumb =\n currentState.aData && currentState.aData.customBreadCrumb;\n var checkListContext =\n currentState.aData && currentState.aData.checkListContext;\n var titleTextField = titleFromData || titleFromAData;\n\n if (titleTextField) {\n var titleText = $interpolate(titleTextField)(resolves);\n title = \"Album - \" + titleText;\n }\n\n $rootScope.title = title;\n\n if (customBreadCrumb) {\n if (checkListContext) {\n var cbcRaw = $interpolate(customBreadCrumb)(resolves);\n var clcRaw = $interpolate(checkListContext)(resolves);\n\n if (!clcRaw) return;\n\n var cbc = JSON.parse(cbcRaw);\n var clc = JSON.parse(clcRaw);\n\n var breadcrumbs = map(cbc, function (p) {\n return {\n route: p.key,\n displayName: p.value,\n param: clc\n };\n });\n\n console.info(\"breadcrumbs\", breadcrumbs);\n\n if (albumConfig.useMultipleAppRouting == \"true\") { \n\n var b = breadcrumbs.findIndex((b) => b.route === \"main\");\n if (b > -1) { \n breadcrumbs[b].routeExternal = window.location.protocol + \"//\" + window.location.hostname + \"/v3/dashboard\";\n }\n b = breadcrumbs.findIndex((b) => b.route === \"main.projects\");\n if (b > -1) { \n breadcrumbs[b].routeExternal = window.location.protocol + \"//\" + window.location.hostname + \"/v3/objects\";\n }\n b = breadcrumbs.findIndex((b) => b.route === \"main.projects.project.index\");\n if (b > -1) { \n breadcrumbs[b].routeExternal = getExternalAddress(breadcrumbs[b].param.id, 0, \"\");\n }\n b = breadcrumbs.findIndex((b) => b.route === \"main.projects.project.house.index\");\n if (b > -1) { \n breadcrumbs[b].routeExternal = getExternalAddress(breadcrumbs[b].param.ppId, 1, \"\");\n }\n b = breadcrumbs.findIndex((b) => b.route === \"main.projects.project.house.sections\");\n if (b > -1) { \n breadcrumbs[b].routeExternal = getExternalAddress(breadcrumbs[b].param.id, 0, \"/sections\");\n }\n b = breadcrumbs.findIndex((b) => b.route === \"main.projects.project.house.sections.section.index\");\n if (b > -1) { \n breadcrumbs[b].routeExternal = getExternalAddress(breadcrumbs[b].param.sectionId, 2, \"\");\n }\n b = breadcrumbs.findIndex((b) => b.route === \"main.projects.project.house.sections.section.checklists\");\n if (b > -1) { \n breadcrumbs[b].routeExternal = getExternalAddress(breadcrumbs[b].param.sectionId, 2, \"/checklists\");\n }\n b = breadcrumbs.findIndex((b) => b.route === \"main.projects.project.house.checklists\");\n if (b > -1) { \n breadcrumbs[b].routeExternal = getExternalAddress(breadcrumbs[b].param.ppId, 1, \"/checklists\");\n }\n\n console.info(\"breadcrumbs\", breadcrumbs);\n }\n\n $rootScope.customBreadCrumbs = breadcrumbs;\n } else {\n var crumbsRaw = $interpolate(customBreadCrumb)(resolves);\n var crumbs = JSON.parse(crumbsRaw);\n\n $rootScope.customBreadCrumbs = crumbs;\n }\n } else {\n $rootScope.customBreadCrumbs = undefined;\n }\n }\n\n $transitions.onSuccess({}, function (transition) {\n var toState = transition.to();\n // $log.info(`Token utgår ${authManager.tokenExpiresIn()}`);\n\n /* try {\n var statescounter = store.get(\"statescounter\") || {};\n\n var params = transition.params();\n\n var stateRecord = {\n name: toState.name,\n params: params,\n count: 0\n };\n\n var uniq = filter(\n map(params, p => {\n return p;\n }),\n p => {\n return p !== null;\n }\n ).join(\"|\");\n\n var stateRecordUniq = stateRecord.name + \"|\" + uniq;\n\n statescounter[stateRecordUniq] =\n statescounter[stateRecordUniq] || stateRecord;\n statescounter[stateRecordUniq].count++;\n\n store.set(\"statescounter\", statescounter);\n } catch (error) {\n $log.error(\"Someting wrong with statescounter\", error);\n } */\n\n resolved(transition, updateBreadcrumbsArray);\n\n $rootScope.hideBreadCrumb = toState.name === \"main\";\n\n $(\"#mainmenu\").removeClass(\"expanded\");\n $(\".overlay\").removeClass(\"active\");\n $(\"body\").removeClass(\"noscroll\");\n\n $timeout(function () {\n cleanSearchInput(toState);\n\n var showHeader =\n startsWith(toState.name, \"main.tasks\") ||\n toState.name === \"main\";\n\n if (showHeader) {\n $(\"#header\").removeClass(\"collapsed\");\n $(\"#toggle-menu img\").attr(\n \"src\",\n \"/img/icon/menu-collapse.svg\"\n );\n } else {\n $(\"#header\").addClass(\"collapsed\");\n $(\"#toggle-menu img\").attr(\n \"src\",\n \"/img/icon/menu-expand.svg\"\n );\n }\n });\n });\n /*\n $rootScope.$on(\"$locationChangeStart\", function(event, next) {\n var uri = URI(next);\n\n var isAuthenticated = albumAuth.isAuthenticated();\n debugger;\n if (isAuthenticated) return;\n\n $timeout(function() {\n $state.go(\"login\");\n }, 100); */\n /* if (!isAuthenticated) {\n if (isCallback) {\n authService.handleAuthentication();\n } else {\n authService.login();\n return;\n }\n } else {\n //If user is authenticated and callback\n if (isCallback) {\n $state.go(\"main\");\n }\n } \n });*/\n }\n];\n","import angular from \"angular\";\nimport { startsWith } from \"lodash\";\n\nexport default [\n \"$urlRouterProvider\",\n \"$httpProvider\",\n \"dynamicNumberStrategyProvider\",\n \"toastrConfig\",\n \"uiSelectConfig\",\n \"uibDatepickerConfig\",\n \"uibDatepickerPopupConfig\",\n \"stConfig\",\n \"$locationProvider\",\n \"jwtOptionsProvider\",\n \"$qProvider\",\n \"albumBrowser\",\n \"AnalyticsProvider\",\n \"albumConfig\",\n function (\n $urlRouterProvider,\n $httpProvider,\n dynamicNumberStrategyProvider,\n toastrConfig,\n uiSelectConfig,\n uibDatepickerConfig,\n uibDatepickerPopupConfig,\n stConfig,\n $locationProvider,\n jwtOptionsProvider,\n $qProvider,\n albumBrowser,\n AnalyticsProvider,\n albumConfig\n ) {\n $urlRouterProvider.otherwise(function ($injector, $location) {\n var url = $location.url();\n\n if (!startsWith(url, \"/callback\")) {\n return \"/404\";\n }\n });\n\n AnalyticsProvider.setAccount(\"UA-101535229-1\");\n AnalyticsProvider.setPageEvent(\"$stateChangeSuccess\");\n\n uiSelectConfig.theme = \"bootstrap\";\n uiSelectConfig.refreshDelay = 300;\n\n angular.extend(toastrConfig, {\n timeOut: 3500,\n preventOpenDuplicates: true\n });\n\n if (albumBrowser.inputEvent) {\n stConfig.search.inputEvent = albumBrowser.inputEvent;\n }\n\n $qProvider.errorOnUnhandledRejections(false);\n\n stConfig.pagination.template = \"pagination.html\";\n stConfig.sort.skipNatural = true;\n stConfig.sort.delay = 100;\n stConfig.pipe.delay = 200;\n\n uibDatepickerConfig.startingDay = 1;\n uibDatepickerConfig.showWeeks = true;\n //uibDatepickerPopupConfig.appendToBody = true;\n uibDatepickerPopupConfig.showButtonBar = false;\n uibDatepickerPopupConfig.datepickerPopup = \"dd.MM.yyyy\";\n\n jwtOptionsProvider.config({\n unauthenticatedRedirector: [\n \"$state\",\n function($state) {\n console.info(\"unauthenticated\");\n window.location.href = \"../\";\n }\n ],\n whiteListedDomains: [\"api.trysilhus.no\", \"testapi.trysilhus.no\", \"localhost\"],\n tokenGetter: [\n \"store\",\n \"options\",\n function(store, options) {\n var token = getCookieByPrefix(\"msal.\");\n return token;\n }\n ]\n });\n\n if (albumConfig.useMultipleAppRouting == \"true\") {\n $httpProvider.interceptors.push(\"jwtInterceptor\");\n }\n\n $httpProvider.interceptors.push(\"httpLoaderService\");\n $httpProvider.interceptors.push(\"errorService\");\n\n dynamicNumberStrategyProvider.addStrategy(\"kr\", {\n numInt: 10,\n numFract: 0,\n numSep: \" \",\n numPos: true,\n numNeg: true\n });\n\n dynamicNumberStrategyProvider.addStrategy(\"pct\", {\n numInt: 3,\n numFract: 0,\n numSep: \" \",\n numPos: true,\n numNeg: true\n });\n\n $locationProvider.html5Mode(true);\n\n function getCookieByPrefix(prefix) {\n const cookies = document.cookie.split(\"; \");\n for (const cookie of cookies) {\n const [key, value] = cookie.split(\"=\");\n if (key.startsWith(prefix)) {\n return decodeURIComponent(value);\n }\n }\n return null; // Return null if no matching cookie is found\n }\n }\n];\n","import angular from \"angular\";\nexport default [\n \"$log\",\n \"$localForage\",\n \"$timeout\",\n function($log, $localForage, $timeout) {\n return {\n require: \"^stTable\",\n priority: 99999,\n link: function(scope, element, attr, ctrl) {\n var nameSpace = attr.stPersist;\n //save the table state every time it changes\n scope.$watch(\n function() {\n return ctrl.tableState();\n },\n function(newValue, oldValue) {\n if (newValue !== oldValue) {\n $localForage\n .setItem(nameSpace, newValue)\n .catch(err => {\n $log.error(err);\n });\n }\n },\n true\n );\n\n $localForage.getItem(nameSpace).then(savedState => {\n if (savedState) {\n $timeout(() => {\n var tableState = ctrl.tableState();\n angular.extend(tableState, savedState);\n ctrl.pipe();\n }, 50);\n }\n });\n }\n };\n }\n];\n","import {\n map\n} from \"lodash\";\nexport default [\n function () {\n return {\n require: \"^stTable\",\n scope: {\n idArray: \"=\"\n },\n link: function (scope, element, attr, ctrl) {\n var colName = \"id\";\n if (attr.idColumnName) {\n colName = attr.idColumnName;\n }\n\n scope.$watch(ctrl.getFilteredCollection, function (val) {\n var idArray = map(val, colName);\n scope.idArray = idArray;\n });\n }\n };\n }\n];","import { saveAs } from \"file-saver\";\n\nconst saveFile = (response, fileName, applicationType) => {\n applicationType =\n applicationType || response.data.type || response.data.contentType;\n fileName = fileName || response.data.name;\n let blob = response.data.blob || response.data;\n\n var data = new Blob([blob], {\n type: applicationType\n });\n\n if (navigator.userAgent.match(\"CriOS\")) {\n var fileUrl = URL.createObjectURL(data);\n window.open(fileUrl);\n } else {\n saveAs(data, fileName);\n }\n};\n\nexport function saveBlob(blob, fileName) {\n saveAs(blob, fileName);\n}\n\nexport default saveFile;\n","import saveFile from \"shared/saveFile\";\nimport { forEach, map, get } from \"lodash\";\nimport exporthtml from \"shared/export.html\";\nexport default [\n \"$log\",\n \"commonApi\",\n \"toastr\",\n \"$uibModal\",\n function($log, commonApi, toastr, $uibModal) {\n var modalExportWin = function(element, scope) {\n var mi = $uibModal.open({\n template: exporthtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n controller: exportController,\n resolve: {\n linkObj: function() {\n return {\n element: element,\n scope: scope\n };\n }\n }\n });\n\n return mi;\n };\n\n var exportController = [\n \"$uibModalInstance\",\n \"searchApi\",\n \"$log\",\n \"linkObj\",\n function($uibModalInstance, searchApi, $log, linkObj) {\n var modalvm = this;\n\n var element = linkObj.element;\n var scope = linkObj.scope;\n\n var columns = [];\n var header = [];\n\n var columnsfromheader = $(element)\n .closest($(\"[st-table]\"))\n .find(\"table\")\n .find(\"thead tr:first th\");\n\n if (columnsfromheader.length === 0) {\n toastr.warning(\"Export is not configured\");\n return;\n }\n\n var hiddenColumns = scope.hiddenColumns || [];\n\n forEach(columnsfromheader, function(hc) {\n var colName = $(hc).attr(\"st-sort\");\n var formatting = $(hc).attr(\"exportFormat\");\n var width = $(hc).attr(\"width\");\n var breakText = $(hc).attr(\"breakText\");\n\n if (colName) {\n columns.push({\n name: colName\n });\n var headerText = $(hc)\n .text()\n .trim();\n header.push({\n exportCol: true,\n dataKey: colName,\n name: headerText,\n width: width,\n breakText: breakText !== undefined,\n exportFormat: formatting\n });\n }\n });\n\n forEach(hiddenColumns, function(x) {\n columns.push({\n name: x.colName\n });\n\n header.push({\n name: x.header,\n dataKey: x.colName,\n exportCol: false,\n exportFormat: x.exportFormat\n });\n });\n\n var footerRowColumns = map(\n $(element)\n .closest($(\"[st-table]\"))\n .find(\"table\")\n .find(\"tfoot tr:first td\"),\n function(td) {\n return $(td).text();\n }\n );\n\n var footerTemp = [];\n if (footerRowColumns.length) {\n forEach(columns, function(c, i) {\n footerTemp.push({\n key: c.name,\n value: footerRowColumns[i]\n });\n });\n }\n\n var toExport = {\n rows: [],\n columns: header,\n footer: footerTemp\n };\n\n modalvm.toExport = toExport;\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.ok = function() {\n $uibModalInstance.close(modalvm.toExport);\n };\n }\n ];\n\n return {\n require: \"^stTable\",\n scope: {\n hiddenColumns: \"<\",\n fileName: \"<\"\n },\n link: function(scope, element, attr, ctrl) {\n element.bind(\"click\", function() {\n modalExportWin(element, scope).result.then(function(toExport) {\n if (toExport) {\n forEach(ctrl.getFilteredCollection(), function(r) {\n var er = {\n values: []\n };\n forEach(toExport.columns, function(c) {\n if (c.exportCol) {\n er.values.push({\n key: c.name,\n value: get(r, c.dataKey)\n });\n }\n });\n toExport.rows.push(er);\n });\n\n toExport.fileName = scope.fileName;\n\n commonApi.exportTable(toExport).then(saveFile);\n }\n });\n });\n }\n };\n }\n];\n","export default \"\\n\\n\\n\\n
\\n

Eksporter liste

\\n
\\n
\\n\\n

Kolonner som skal eksporteres

\\n \\n
\\n \\n
\\n\\n \\n\\n \\n\\n\\n \\n\\n \\n\\n
\\n
\\n \\n \\n
\\n\\n\\n\\n\\n\";","import angular from \"angular\";\nimport {\n find\n} from \"lodash\";\nexport default [\n function () {\n return {\n restrict: \"A\",\n require: \"^stTable\",\n scope: true,\n replace: true,\n transclude: true,\n template: function (element) {\n var tag;\n tag = element[0].nodeName;\n return \"<\" + tag + \" ng-transclude ng-hide='column.hidden'>\";\n },\n link: function (scope, elem, attr, ctrl) {\n var registerElem = function () {\n var column, tableState;\n tableState = ctrl.tableState();\n column = {\n index: angular.element(elem).index(),\n name: angular.element(elem).text(),\n hidden: attr.stToggleColumn || false\n };\n tableState.hiddenColumns = tableState.hiddenColumns || (tableState.hiddenColumns = []);\n\n if (tableState && tableState.hiddenColumns) {\n var exists = find(tableState.hiddenColumns, c => {\n return c.name === column.name;\n });\n if (!exists) {\n tableState.hiddenColumns.push(column);\n }\n }\n\n ctrl.pipe();\n };\n registerElem();\n scope.column = {};\n scope.$watch(\n function () {\n return ctrl.tableState();\n },\n function (newVal) {\n if (newVal) {\n var newColumn;\n newColumn = find(newVal.hiddenColumns, {\n index: elem.index()\n });\n if (scope.column !== newColumn) {\n return angular.extend(scope.column, newColumn);\n }\n }\n },\n true\n );\n }\n };\n }\n];","import angular from \"angular\";\nimport tablesettingshtml from \"shared/tablesettings.html\";\n\nimport { forEach } from \"lodash\";\nexport default [\n \"$uibModal\",\n \"$localForage\",\n\n function($uibModal, $localForage) {\n var ctrl = [\n \"$uibModalInstance\",\n \"$log\",\n \"stateIn\",\n \"$window\",\n function($uibModalInstance, $log, stateIn, $window) {\n var modalvm = this;\n\n modalvm.stateIn = stateIn;\n forEach(modalvm.stateIn.hiddenColumns, col => {\n col.visible = !col.hidden;\n });\n\n modalvm.toggleHide = function(col) {\n col.hidden = !col.hidden;\n };\n\n modalvm.reset = function() {\n $localForage\n .removeItem(\"tableSettings:sectiontable\")\n .then(() => {\n $window.location.reload();\n });\n };\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.ok = function() {\n forEach(modalvm.stateIn.hiddenColumns, col => {\n col.hidden = !col.visible;\n });\n\n $uibModalInstance.close(modalvm.stateIn);\n };\n }\n ];\n\n var modalWin = function(stateIn) {\n var mi = $uibModal.open({\n template: tablesettingshtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n controller: ctrl,\n resolve: {\n stateIn: function() {\n return stateIn;\n }\n }\n });\n\n return mi;\n };\n\n return {\n restrict: \"AE\",\n require: \"^stTable\",\n link: function(scope, elem, attr, ctrl) {\n var nameSpace = attr.stToggleMenu;\n var key = \"tableSettings:\" + nameSpace;\n\n scope.hiddenColumns = [];\n\n var state = ctrl.tableState();\n\n scope.showMenu = false;\n\n elem.bind(\"click\", function() {\n modalWin(state).result.then(function(newState) {\n if (newState) {\n var json = angular.toJson(newState);\n newState = JSON.parse(json);\n\n $localForage.setItem(key, newState).then(() => {\n scope.hiddenColumns = newState.hiddenColumns;\n return ctrl.pipe();\n });\n }\n });\n });\n\n /* scope.toggleMenu = function () {\n scope.showMenu = !scope.showMenu;\n };\n scope.toggleColumn = function (column) {\n column.hidden = !column.hidden;\n return ctrl.pipe();\n }; */\n\n scope.$watch(\n function() {\n return ctrl.tableState();\n },\n function(newVal) {\n if (scope.hiddenColumns !== newVal.hiddenColumns) {\n scope.hiddenColumns = newVal.hiddenColumns;\n }\n },\n true\n );\n\n $localForage.getItem(key).then(savedState => {\n if (savedState) {\n var tableState = ctrl.tableState();\n angular.extend(tableState, savedState);\n ctrl.pipe();\n }\n });\n }\n //template: \"
\\n Skjul/Vis meny\\n \\n
\"\n };\n }\n];\n","export default \"
\\n

Innstillinger for tabell

\\n
\\n\\n
\\n\\n

Kolonner som skal vises

\\n\\n
\\n \\n
\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
\\n
\\n \\n \\n \\n
\";","import angular from \"angular\";\nimport {\n find\n} from \"lodash\";\nexport default [\n function () {\n return {\n restrict: \"AE\",\n replace: true,\n transclude: true,\n require: \"^stTable\",\n scope: true,\n template: function (element) {\n var tag;\n tag = element[0].nodeName;\n return \"<\" + tag + \" ng-transclude ng-hide='column.hidden'>\";\n },\n link: function (scope, elem, attr, ctrl) {\n scope.column = {};\n scope.$watch(\n function () {\n return ctrl.tableState();\n },\n function (newVal) {\n var newColumn;\n newColumn = find(newVal.hiddenColumns, {\n index: elem.index()\n });\n if (scope.column !== newColumn) {\n angular.extend(scope.column, newColumn);\n }\n },\n true\n );\n }\n };\n }\n];","import angular from \"angular\";\nimport { isEmpty } from \"lodash\";\nexport default [\n function() {\n return {\n restrict: \"EA\",\n require: \"^stTable\",\n link: function(scope, element, attrs, ctrl) {\n scope.$watch(\n function() {\n return ctrl.tableState();\n },\n function(newValue) {\n var filterEmpty = isEmpty(\n newValue.search.predicateObject\n );\n\n if (filterEmpty) {\n element\n .closest(\".input-group\")\n .find(\"input[type=text]\")\n .val(null);\n }\n\n if (!filterEmpty) {\n var copy = angular.copy(\n newValue.search.predicateObject\n );\n\n if (copy.contextObject) {\n delete copy.projectOid;\n delete copy.projectOid;\n delete copy.customerOid;\n delete copy.lineStatus;\n delete copy.contextObject;\n filterEmpty = isEmpty(copy);\n }\n }\n\n if (\n $(element).hasClass(\"d-sm-block\") ||\n $(element).hasClass(\"d-sm-none\")\n ) {\n $(element).toggleClass(\"d-sm-block\", !filterEmpty);\n $(element).toggleClass(\"d-sm-none\", filterEmpty);\n } else {\n $(element).toggleClass(\"d-none\", filterEmpty);\n }\n },\n true\n );\n\n return element.bind(\"click\", function() {\n return scope.$apply(function() {\n var tableState;\n tableState = ctrl.tableState();\n\n tableState.search.predicateObject = {};\n tableState.sort = {};\n tableState.pagination.start = 0;\n\n return ctrl.pipe();\n });\n });\n }\n };\n }\n];\n","export default [function () {\n return {\n require: \"ngModel\",\n link: function (scope, element, attrs, ngModel) {\n ngModel.$parsers.push(function (val) {\n return parseInt(val, 10);\n });\n ngModel.$formatters.push(function (val) {\n return \"\" + val;\n });\n }\n };\n}];","import moment from \"moment\";\nexport default [\n function () {\n return {\n require: \"ngModel\",\n link: function (scope, element, attrs, modelCtrl) {\n\n modelCtrl.$formatters.push(function (input) {\n\n\n var mom = moment(input);\n\n if (!mom.isValid()) return undefined;\n\n if (input === undefined || (input instanceof Date)) return input;\n\n var transformedInput = new Date(input);\n\n\n if (transformedInput !== input) {\n modelCtrl.$setViewValue(transformedInput);\n modelCtrl.$render();\n }\n\n return transformedInput;\n\n });\n }\n\n };\n }\n];","export default [\n \"$parse\", \"$log\", \"cutFilter\",\n function ($parse, $log, cutFilter) {\n return {\n restrict: \"A\",\n link: function (scope, element, attrs) {\n var chars = attrs.chars || 20;\n\n var text = attrs.val;\n attrs.$set(\"title\", text);\n\n var cutText = cutFilter(text, true, chars);\n\n\n $(element).text(cutText);\n\n\n }\n };\n }\n];","export default [\n \"$log\",\n \"$timeout\",\n function ($log, $timeout) {\n function autoExpand(textArea) {\n var scrollHeight = textArea.scrollHeight + 10; // replace 60 by the sum of padding-top and padding-bottom\n\n textArea.style.height = scrollHeight + \"px\";\n }\n\n return {\n restrict: \"A\",\n link: function (scope, element) {\n var textArea = element[0];\n\n element.bind(\"keyup\", function () {\n autoExpand(textArea);\n });\n\n $timeout(function () {\n $(textArea).trigger(\"keyup\");\n }, 0);\n }\n };\n }\n];","import angular from \"angular\";\nexport default [\"$log\", \"$compile\", function ($log, $compile) {\n return {\n scope: true,\n link: function (scope, element, attrs) {\n\n var elmnt;\n\n attrs.$observe(\"template\", function (myTemplate) {\n if (angular.isDefined(myTemplate)) {\n // compile the provided template against the current scope\n\n\n elmnt = $compile(myTemplate)(scope);\n element.html(\"\"); // dummy \"clear\"\n element.append(elmnt);\n }\n });\n }\n };\n}];","import angular from \"angular\";\nexport default [\n \"$timeout\",\n function ($timeout) {\n return {\n restrict: \"A\",\n require: [\"^?ngModel\", \"^?form\"],\n link: function (scope, element, attrs, args) {\n //var form;\n var ngModel;\n var read;\n var validate;\n var modelKey = getModelKey();\n if (modelKey === null) return;\n\n ngModel = args[0];\n //form = args[1];\n\n // options\n var opts = {};\n angular.forEach([\"onlyText\", \"convertNewLines\"], function (opt) {\n var o = attrs[opt];\n opts[opt] = o && o !== \"false\";\n });\n\n // when model has already a value\n $timeout(function () {\n return element.html(ngModel.$modelValue);\n });\n\n read = function () {\n var html;\n html = element.html();\n html = parseHtml(html);\n ngModel.$setViewValue(html);\n validate(html);\n };\n\n validate = function (html) {\n var length = html.length;\n\n if (length > attrs.ngMaxlength || length < attrs.ngMinlength) {\n ngModel.$setValidity(modelKey, false);\n return element.addClass(\"-error\");\n }\n\n if (element.hasClass(\"-error\")) {\n ngModel.$setValidity(modelKey, true);\n return element.removeClass(\"-error\");\n }\n };\n\n ngModel.$render = function () {\n element.html(ngModel.$viewValue || \"\");\n };\n\n element.bind(\"blur keyup change\", function () {\n scope.$apply(read);\n });\n\n return;\n\n function getModelKey() {\n if (attrs.ngModel) {\n var split = attrs.ngModel.split(\".\");\n\n return split[split.length - 1];\n } else {\n return null;\n }\n }\n\n function parseHtml(html) {\n html = html.replace(/ /g, \" \");\n\n if (opts.convertNewLines) {\n html = html.replace(//gi, \"\\r\\n\"); // replace br for newlines\n html = html.replace(/<[div>]+>/gi, \"\\r\\n\"); // replace div for newlines\n html = html.replace(/<\\/[div>]+>/gm, \"\"); // remove remaining divs\n html = html.replace(/\\r\\n$/, \"\"); // remove last newline\n }\n\n if (opts.onlyText) {\n html = html.replace(/<\\S[^><]*>/g, \"\");\n }\n\n return html;\n }\n }\n };\n }\n];","import angular from \"angular\";\nimport Hammer from \"hammerjs\";\n\nHammer.defaults.cssProps.userSelect = \"auto\";\n\nexport default [\"$timeout\", \"$log\", \"$compile\", function ($timeout, $log, $compile) {\n\n\n var swipeSidemenu;\n var tapNavbar;\n var tapContent;\n var tapBreadcrumb;\n\n function hammerHandle() {\n toggleMobileMenu(true);\n }\n\n function toggleHammer(enable) {\n swipeSidemenu.set({\n enable: enable\n });\n tapNavbar.set({\n enable: enable\n });\n tapContent.set({\n enable: enable\n });\n tapBreadcrumb.set({\n enable: enable\n });\n }\n\n function toggleMobileMenu(mobileActivated) {\n var body = document.body;\n var breadcrumb = document.querySelector(\"#album-breadcrumb\");\n var sidemenu = document.querySelectorAll(\"[album-menu]\")[0];\n var content = document.querySelector(\".page-content\");\n var mobileMenuIcon = document.querySelector(\"#mobileMenuIcon\");\n\n if (mobileActivated) {\n body.classList.remove(\"overflow-hidden\");\n breadcrumb.classList.remove(\"blur-content\");\n sidemenu.classList.remove(\"mobile-activated\");\n content.classList.remove(\"blur-content\");\n mobileMenuIcon.classList.remove(\"fa-times\");\n mobileMenuIcon.classList.add(\"fa-bars\");\n toggleHammer(false);\n } else {\n body.classList.add(\"overflow-hidden\");\n breadcrumb.classList.add(\"blur-content\");\n sidemenu.classList.add(\"mobile-activated\");\n content.classList.add(\"blur-content\");\n mobileMenuIcon.classList.add(\"fa-times\");\n mobileMenuIcon.classList.remove(\"fa-bars\");\n toggleHammer(true);\n }\n }\n\n return {\n //()\n controller: [\"$scope\", function ($scope) {\n var sidemenu = document.querySelectorAll(\"[album-menu]\")[0];\n\n\n $timeout(function () {\n var navbar = document.querySelector(\"#nav\");\n var breadcrumb = document.querySelector(\"#album-breadcrumb\");\n var content = document.querySelector(\".page-content\");\n\n swipeSidemenu = new Hammer(sidemenu, {\n enable: false\n });\n tapNavbar = new Hammer(navbar, {\n enable: false\n });\n tapContent = new Hammer(content, {\n enable: false\n });\n tapBreadcrumb = new Hammer(breadcrumb, {\n enable: false\n });\n swipeSidemenu.on(\"swipeleft\", hammerHandle);\n tapNavbar.on(\"tap\", hammerHandle);\n tapContent.on(\"tap\", hammerHandle);\n tapBreadcrumb.on(\"tap\", hammerHandle);\n }, 50);\n\n $scope.toggleMobileMenu = function () {\n var mobileActivated = sidemenu.classList.contains(\"mobile-activated\");\n toggleMobileMenu(mobileActivated);\n };\n }],\n //(scope, element, attrs)\n link: function (scope, element) {\n var mobileButton = angular.element(\"\");\n\n element.after(mobileButton);\n $compile(mobileButton)(scope);\n },\n restrict: \"A\",\n template: \"
\",\n transclude: true,\n replace: true\n };\n}];","import stPersist from \"album/directives/stPersist\";\nimport stIdArray from \"album/directives/stIdArray\";\nimport stExport from \"album/directives/stExport\";\nimport stToggleColumn from \"album/directives/stToggleColumn\";\nimport stToggleMenu from \"album/directives/stToggleMenu\";\nimport stToggleItem from \"album/directives/stToggleItem\";\nimport stResetSearch from \"album/directives/stResetSearch\";\nimport convertToNumber from \"album/directives/convertToNumber\";\nimport dateModel from \"album/directives/dateModel\";\nimport clickIf from \"album/directives/clickIf\";\nimport albumTruncate from \"album/directives/albumTruncate\";\nimport albumDate from \"album/directives/albumDate\";\nimport autoExpand from \"album/directives/autoExpand\";\nimport selectOnBlur from \"album/directives/selectOnBlur\";\nimport compileData from \"album/directives/compileData\";\nimport contenteditable from \"album/directives/contenteditable\";\nimport albumMenu from \"album/directives/albumMenu\";\nimport albumMenuItem from \"album/directives/albumMenuItem\";\nimport modalMoveable from \"album/directives/modalMoveable\";\nimport taBlobLink from \"album/directives/taBlobLink\";\nimport ibmBlobLink from \"album/directives/ibmBlobLink\";\n\nimport scroll from \"album/directives/scroll\";\n\nexport default [\n {\n directive: stPersist,\n name: \"stPersist\"\n },\n {\n directive: stIdArray,\n name: \"stIdArray\"\n },\n {\n directive: stExport,\n name: \"stExport\"\n },\n {\n directive: stToggleColumn,\n name: \"stToggleColumn\"\n },\n {\n directive: stToggleMenu,\n name: \"stToggleMenu\"\n },\n {\n directive: stToggleItem,\n name: \"stToggleItem\"\n },\n {\n directive: stResetSearch,\n name: \"stResetSearch\"\n },\n {\n directive: convertToNumber,\n name: \"convertToNumber\"\n },\n {\n directive: dateModel,\n name: \"dateModel\"\n },\n {\n directive: clickIf,\n name: \"clickIf\"\n },\n {\n directive: albumTruncate,\n name: \"albumTruncate\"\n },\n {\n directive: albumDate,\n name: \"albumDate\"\n },\n {\n directive: autoExpand,\n name: \"autoExpand\"\n },\n {\n directive: selectOnBlur,\n name: \"selectOnBlur\"\n },\n\n {\n directive: compileData,\n name: \"compileData\"\n },\n {\n directive: contenteditable,\n name: \"contenteditable\"\n },\n\n {\n directive: albumMenu,\n name: \"albumMenu\"\n },\n {\n directive: albumMenuItem,\n name: \"albumMenuItem\"\n },\n {\n directive: modalMoveable,\n name: \"modalMoveable\"\n },\n {\n directive: taBlobLink,\n name: \"taBlobLink\"\n },\n {\n directive: ibmBlobLink,\n name: \"ibmBlobLink\"\n },\n {\n directive: scroll,\n name: \"scroll\"\n }\n];\n","export default [\n \"$parse\", \"$rootScope\",\n function ($parse, $rootScope) {\n return {\n\n priority: 100,\n restrict: \"A\",\n compile: function ($element, attr) {\n var fn = $parse(attr.clickIf);\n return {\n pre: function link(scope, element) {\n var eventName = \"click\";\n element.on(eventName, function (event) {\n var callback = function () {\n if (!fn(scope, {\n $event: event\n })) {\n // prevents ng-click to be executed\n event.stopImmediatePropagation();\n // prevents href \n event.preventDefault();\n return false;\n }\n };\n if ($rootScope.$$phase) {\n scope.$evalAsync(callback);\n } else {\n scope.$apply(callback);\n }\n });\n },\n post: function () {}\n };\n }\n };\n }\n];","export default [\n function () {\n return {\n restrict: \"A\",\n replace: true,\n scope: {\n albumDate: \"=\"\n },\n template: \"{{shortDate}}\",\n controller: [\n \"$scope\",\n \"$log\",\n \"dateFilter\",\n function ($scope, $log, dateFilter) {\n this.$onInit = function () {\n $scope.shortDate = dateFilter($scope.albumDate, \"dd.MM.yyyy\");\n $scope.longDate = dateFilter($scope.albumDate, \"dd.MM.yyyy HH:mm\");\n };\n }\n ]\n };\n }\n];","export default [\n function () {\n return {\n require: \"uiSelect\",\n link: function (scope, elm, attrs, ctrl) {\n elm.on(\"blur\", \"input.ui-select-search\", function (e) {\n if (ctrl.open && (ctrl.tagging.isActivated || ctrl.activeIndex >= 0)) {\n ctrl.select(ctrl.items[ctrl.activeIndex]);\n }\n e.target.value = \"\";\n });\n }\n };\n }\n];","import template from \"./albumMenuItem.html\";\nexport default [function () {\n\n\n return {\n scope: {\n name: \"@\",\n state: \"@\",\n stateOpt: \"=\",\n stateParams: \"=\"\n },\n controller: [\"$scope\", function ($scope) {\n\n $scope.uiSref = {};\n $scope.uiSref.state = $scope.state;\n $scope.uiSref.options = $scope.stateOpt;\n $scope.uiSref.stateParams = $scope.stateParams;\n\n $scope.closeMenu = function () {\n\n var body = document.body;\n var icon = document.querySelector(\"#mobileMenuIcon\");\n var content = document.querySelector(\".page-content\");\n var breadcrumb = document.querySelector(\"#album-breadcrumb\");\n var sidemenu = document.querySelectorAll(\"[album-menu]\")[0];\n sidemenu.classList.toggle(\"mobile-activated\");\n\n content.classList.remove(\"blur-content\");\n breadcrumb.classList.remove(\"blur-content\");\n icon.classList.remove(\"fa-times\");\n icon.classList.add(\"fa-bars\");\n body.classList.remove(\"overflow-hidden\");\n body.classList.remove(\"overflow-auto\");\n };\n\n }],\n\n restrict: \"E\",\n template: template,\n replace: true\n };\n\n\n}];","export default \"{{name}}\";","export default [\n \"$document\",\n function ($document) {\n return {\n restrict: \"AC\",\n link: function (scope, iElement) {\n var startX = 0,\n startY = 0,\n x = 0,\n y = 0;\n\n\n var modalContent = iElement.parent();\n\n modalContent.css({\n position: \"relative\"\n });\n\n iElement.on(\"mousedown\", function (event) {\n // Prevent default dragging of selected content\n event.preventDefault();\n startX = event.pageX - x;\n startY = event.pageY - y;\n $document.on(\"mousemove\", mousemove);\n $document.on(\"mouseup\", mouseup);\n });\n\n function mousemove(event) {\n y = event.pageY - startY;\n x = event.pageX - startX;\n modalContent.css({\n top: y + \"px\",\n left: x + \"px\"\n });\n }\n\n function mouseup() {\n $document.unbind(\"mousemove\", mousemove);\n $document.unbind(\"mouseup\", mouseup);\n }\n }\n };\n }\n];","import saveFile from \"shared/saveFile\";\nexport default [\n \"$log\",\n \"attachmentApi\",\n\n function($log, attachmentApi) {\n return {\n scope: {},\n link: function(scope, element, attr) {\n element.bind(\"click\", function(e) {\n e.stopPropagation();\n e.preventDefault();\n attachmentApi\n .downloadAttachment({\n guid: attr.blobid\n })\n .then(saveFile);\n });\n }\n };\n }\n];\n","import saveFile from \"shared/saveFile\";\nexport default [\n \"$log\",\n \"ibmApi\",\n\n function ($log, ibmApi) {\n return {\n scope: {\n uuid: \"<\"\n },\n link: function (scope, element) {\n element.bind(\"click\", function (e) {\n e.stopPropagation();\n e.preventDefault();\n\n ibmApi.download(scope.uuid, true).then(saveFile);\n });\n }\n };\n }\n];\n","export default [\n \"$window\",\n \"$document\",\n function($window, $document) {\n return {\n restrict: \"A\",\n link: function(scope, element) {\n $document.on(\"scroll\", function() {\n if ($window.scrollY >= 200) {\n element.css({ display: \"block\" });\n } else {\n element.css({ display: \"none\" });\n }\n });\n }\n };\n }\n];\n","import { find } from \"lodash\";\nexport default [\n \"$http\",\n \"$log\",\n \"$localForage\",\n \"moment\",\n \"albumConfig\",\n function ($http, $log, $localForage, moment, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function globalSearch(sr) {\n return $http.post(apiAddress + \"/search\", sr);\n }\n\n function headerSearch(sr) {\n return $http.post(apiAddress + \"/search/header\", sr);\n }\n\n function searchContacts(s) {\n return $http.get(apiAddress + \"/search/contacts/\" + s);\n }\n\n function searchProjects(s) {\n return $http.get(apiAddress + \"/search/projects/\" + s);\n }\n\n function searchPostCodes(s) {\n return $http.get(apiAddress + \"/search/postcodes/\" + s);\n }\n\n function searchContactPersons(s, searchMode) {\n searchMode = searchMode || 0;\n return $http.get(\n `${apiAddress}/search/contactpersons/${searchMode}/${s}`\n );\n }\n\n function searchContactPersonsExists(data) {\n return $http.post(\n `${apiAddress}/search/contactpersons`,\n data\n );\n }\n\n function searchComponents(searchMode) {\n return $http.post(apiAddress + \"/search/components\", searchMode);\n }\n\n function addToHistory(search) {\n if (!search) return;\n $localForage.getItem(\"searchhistory\").then(sh => {\n if (sh) {\n var s = find(sh, {\n search: search\n });\n if (s) {\n s.cnt++;\n s.timestamp = moment().unix();\n } else {\n sh.push({\n search: search,\n cnt: 1,\n timestamp: moment().unix()\n });\n }\n } else {\n sh = [];\n sh.push({\n search: search,\n cnt: 1,\n timestamp: moment().unix()\n });\n }\n\n $localForage.setItem(\"searchhistory\", sh);\n });\n }\n\n function dropDownSearch(dds) {\n return $http.post(apiAddress + \"/search/dropdown\", dds);\n }\n\n var searchCustomers = search => {\n return $http.get(apiAddress + `/search/customers/${search}`);\n };\n\n var getPhaseAndProject = sectionId => {\n return $http.get(apiAddress + `/search/section/${sectionId}`);\n };\n\n return {\n globalSearch: globalSearch,\n headerSearch: headerSearch,\n searchContactPersons: searchContactPersons,\n searchContactPersonsExists: searchContactPersonsExists,\n searchComponents: searchComponents,\n searchContacts: searchContacts,\n searchProjects: searchProjects,\n searchPostCodes: searchPostCodes,\n addToHistory: addToHistory,\n dropDownSearch: dropDownSearch,\n searchCustomers: searchCustomers,\n getPhaseAndProject: getPhaseAndProject\n };\n }\n];\n","import angular from \"angular\";\nexport default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"commonApi\",\n \"albumConfig\",\n function ($http, $log, store, moment, commonApi, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function mergeFields(sectionId) {\n return $http({\n url: apiAddress + \"/document/merge/object/\" + sectionId,\n method: \"GET\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function previewMerge(mergeReq) {\n return $http.post(apiAddress + \"/document/merge/preview\", mergeReq);\n }\n\n function saveLetter(mergeReq) {\n var url = \"/document/merge/save\";\n\n if (mergeReq.download) {\n return $http({\n url: apiAddress + url,\n method: \"POST\",\n responseType: \"blob\",\n data: mergeReq,\n transformResponse: commonApi.transformDownload\n });\n } else {\n return $http.post(apiAddress + url, mergeReq);\n }\n }\n\n function downloadFileFromServer(link) {\n return $http({\n url: apiAddress + \"/document/server/link\",\n method: \"POST\",\n responseType: \"blob\",\n data: link,\n transformResponse: commonApi.transformDownload\n });\n }\n\n function finalizeMailMerge(mergeRequest) {\n return $http({\n url: apiAddress + \"/document/merge/finalize\",\n method: \"POST\",\n responseType: \"blob\",\n data: mergeRequest\n });\n }\n\n function updateMergedDocument(mergeRequest) {\n return $http.post(\n apiAddress + \"/document/merge/update\",\n mergeRequest\n );\n }\n\n function createMergedDocument(file, mergeRequest) {\n var fd = new FormData();\n fd.append(\"file\", file);\n fd.append(\"mergeRequest\", JSON.stringify(mergeRequest));\n\n return $http.post(apiAddress + \"/document/merge\", fd, {\n transformRequest: angular.identity,\n headers: {\n \"Content-Type\": undefined\n }\n });\n }\n\n function mergeAndDownload(documents) {\n return $http({\n url: apiAddress + \"/documents/merge/download\",\n method: \"POST\",\n data: documents,\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function checkRecipients(recipients) {\n return $http.post(\n apiAddress + \"/document/merge/checkrecipients\",\n recipients\n );\n }\n\n function createFolder(folder) {\n return $http.post(apiAddress + \"/document/folder/create\", folder);\n }\n\n function createSubFolder(folder) {\n return $http.post(\n apiAddress + \"/document/subfolder/create\",\n folder\n );\n }\n\n const replacePdfRefs = (listOfRefs, houseId) => {\n var replaceRequest = {\n listOfPdfRefs: listOfRefs,\n houseId: houseId\n };\n\n return $http.post(\n `${apiAddress}/documents/refs/replace`,\n replaceRequest\n );\n };\n\n const replaceAllPdfRefs = (scheduleId, listOfRefs, houseId) => {\n var replaceRequest = {\n listOfPdfRefs: listOfRefs,\n houseId: houseId\n };\n\n return $http.post(\n `${apiAddress}/documents/refs/replace/all/${scheduleId}`,\n replaceRequest\n );\n };\n\n const replaceHousePdfRefs = (houseId) => {\n return $http.post(\n `${apiAddress}/documents/refs/replace/house/${houseId}`);\n };\n\n const browseConnections = (uuid, projectId, type) => {\n if (!uuid) {\n return $http.get(\n `${apiAddress}/documents?projectId=${projectId}&type=${type}`\n );\n } else {\n return $http.get(`${apiAddress}/documents/${uuid}`);\n }\n };\n\n const getContactDocuments = contactId => {\n return $http.get(`${apiAddress}/documents/contact/${contactId}`);\n };\n const getContactPersonDocuments = contactPersonId => {\n return $http.get(\n `${apiAddress}/documents/contactperson/${contactPersonId}`\n );\n };\n\n const downloadDocuRef = docuRefId => {\n return $http({\n url: `${apiAddress}/documents/docuref/download/${docuRefId}`,\n method: \"GET\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n };\n\n return {\n previewMerge: previewMerge,\n saveLetter: saveLetter,\n createMergedDocument: createMergedDocument,\n updateMergedDocument: updateMergedDocument,\n finalizeMailMerge: finalizeMailMerge,\n downloadFileFromServer: downloadFileFromServer,\n mergeFields: mergeFields,\n mergeAndDownload: mergeAndDownload,\n checkRecipients: checkRecipients,\n createFolder: createFolder,\n createSubFolder: createSubFolder,\n replacePdfRefs: replacePdfRefs,\n replaceAllPdfRefs: replaceAllPdfRefs,\n replaceHousePdfRefs: replaceHousePdfRefs,\n browseConnections: browseConnections,\n getContactDocuments: getContactDocuments,\n getContactPersonDocuments: getContactPersonDocuments,\n downloadDocuRef: downloadDocuRef\n };\n }\n];\n","import uuidv4 from \"uuid/v4\";\nexport default [\n \"$uibModalInstance\",\n \"projCust\",\n \"$log\",\n \"moment\",\n \"store\",\n \"toastr\",\n \"commonApi\",\n \"$scope\",\n \"albumConfig\",\n function (\n $uibModalInstance,\n projCust,\n $log,\n moment,\n store,\n toastr,\n commonApi,\n $scope,\n albumConfig\n ) {\n var modalvm = this;\n\n var profile = store.get(\"profile\");\n var apiAddress = albumConfig.apiAddress;\n\n var today = new Date();\n var tomorrow = new Date();\n tomorrow.setDate(today.getDate() + 1);\n\n modalvm.title = `Visning ${projCust.projectName} - ${projCust.name ||\n projCust.customerPersonFullName}`;\n modalvm.date = tomorrow;\n modalvm.time = \"12:00\";\n\n modalvm.sendSms = false;\n modalvm.customerAcceptSms = projCust.customerPerson.acceptSms;\n modalvm.smsNumber = projCust.customerPerson.mobile;\n modalvm.taskGuid = uuidv4();\n\n\n $scope.$watchGroup([\"modalvm.date\", \"modalvm.time\"], function (newVals) {\n console.info(\"change\");\n var date = newVals[0];\n var time = newVals[1];\n if (date && time) {\n modalvm.viewingTime = commonApi.getDateTime(\n modalvm.date,\n modalvm.time\n );\n var formattedDate = moment(\n modalvm.viewingTime\n ).format(\"Do MMM HH:mm\");\n var calLink =\n apiAddress +\n \"/tasks/calendar/\" +\n modalvm.taskGuid;\n\n modalvm.smsText =\n `Hei ${projCust.customerPersonFullName}\\nVisning er avtalt til ${formattedDate}\\n\\nDenne meldingen kan ikke besvares\\n\\nHilsen ${profile.name}\\n\\n${calLink}`;\n }\n });\n\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n if (!modalvm.title || !modalvm.date) {\n toastr.warning(\"Du må oppgi navn og tidspunkt for visningen!\");\n return;\n }\n\n if (modalvm.smsNumber.length > 8) {\n toastr.warning(\"Kan ikke sende sms med flere en 8 tall!\");\n return;\n }\n\n if (!modalvm.customerAcceptSms && modalvm.sendSms) {\n toastr.warning(\"Kan ikke sende sms til kunder som har reservert seg!\");\n return;\n }\n\n var dateTime = commonApi.getDateTime(modalvm.date, modalvm.time);\n\n var viewing = {\n name: modalvm.title,\n assignedTo: profile.contactPersonId,\n assignedToContactPerson: {\n id: profile.contactPersonId\n },\n deadLine: dateTime,\n projectId: projCust.projTable,\n customerId: projCust.custTable,\n projCustomerId: projCust.id,\n postCodeId: projCust.projectPostCodeId,\n address: projCust.projectAddress,\n taskType: 3,\n note: modalvm.description,\n taskGuid: modalvm.taskGuid,\n\n sendSms: modalvm.sendSms,\n smsText: modalvm.smsText,\n smsNumber: modalvm.smsNumber\n };\n\n $uibModalInstance.close(viewing);\n };\n }\n];\n","export default [\"sections\", \"projCust\", \"$uibModalInstance\", function (sections, projCust, $uibModalInstance) {\n var modalvm = this;\n modalvm.sections = sections.data;\n modalvm.projCust = projCust;\n modalvm.selectSection = function (section) {\n modalvm.selectedSection = section;\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.selectedSection);\n };\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n}];","export default [\n \"$scope\",\n \"customerApi\",\n \"validEmailFilter\",\n \"toastr\",\n function ($scope, customerApi, validEmailFilter, toastr) {\n $scope.$context.behavior.entering = function (options, callback) {\n\n\n if (options.entered) {\n return callback();\n } else {\n customerApi.convertCustomerData($scope.$context.data.section.id).then(function (res) {\n $scope.$context.data.personalities = res.data.personalities;\n $scope.$context.data.financeStatuses = res.data.financeStatuses;\n $scope.$context.data.responsibles = res.data.responsibles;\n $scope.$context.data.section.salesResponsible = res.data.salesRep;\n $scope.$context.data.section.projCustomerContractType = \n $scope.$context.data.section.projCustomerContractType ?\n $scope.$context.data.section.projCustomerContractType : 0;\n \n $scope.$context.data.section.mtUser = res.data.mtUser;\n $scope.$context.data.secondaryOwners = res.data.secondaryOwners;\n\n return callback();\n });\n }\n\n\n };\n $scope.$context.behavior.leaving = function (options, callback) {\n if (options.forward) {\n var ve = validEmailFilter($scope.$context.data.section.projCustomerCustomerPersonEmail);\n if (!ve) {\n toastr.warning(\"Vennligst fyll inn gyldig epost\");\n return callback(false);\n } else {\n return callback(true);\n }\n } else {\n return callback(true);\n }\n };\n }\n];","import {\n remove,\n forEach,\n filter\n} from \"lodash\";\nexport default [\"$scope\", \"$log\", \"toastr\", function ($scope, $log, toastr) {\n $scope.addSecondaryCustomer = function () {\n\n $scope.$context.data.secondaryOwners = $scope.$context.data.secondaryOwners || [];\n $scope.$context.data.secondaryOwners.push({});\n };\n\n $scope.removeSo = so => {\n remove($scope.$context.data.secondaryOwners, so);\n };\n\n $scope.$context.behavior.leaving = function (options, callback) {\n if (options.forward) {\n var soCheck = [];\n if ($scope.$context.data.secondaryOwners) {\n forEach($scope.$context.data.secondaryOwners, (so, index) => {\n soCheck.push({\n valid: so.firstName && so.lastName,\n num: index + 1\n });\n });\n }\n\n var invalid = filter(soCheck, so => {\n return !so.valid;\n });\n\n\n if (invalid.length !== 0) {\n forEach(invalid, iso => {\n toastr.warning(\"Du må fylle inn fornavn og etternavn for medkjøper \" + iso.num);\n });\n\n return callback(false);\n } else {\n return callback(true);\n }\n } else {\n return callback(true);\n }\n };\n\n}];","export default [\n \"$scope\",\n \"$log\",\n \"toastr\",\n function ($scope, $log, toastr) {\n $scope.$context.behavior.leaving = function (options, callback) {\n if (options.forward) {\n\n var salesRepNotSelected = !$scope.$context.data.section.salesResponsible ||\n $scope.$context.data.section.salesResponsible === 0;\n\n var contractDateNotSet = !$scope.$context.data.section.projCustomerContractSigned;\n\n if (salesRepNotSelected) {\n toastr.warning(\"Vennligst velg selger\");\n return callback(false);\n } else if (contractDateNotSet) {\n toastr.warning(\"Vennligst sett kontraktsdato\");\n return callback(false);\n } else {\n return callback(true);\n }\n } else {\n return callback(true);\n }\n };\n }\n];","export default [\n \"$scope\",\n function ($scope) {\n $scope.$context.addReservation = function () {\n let reservation = { id: 0, type: 1, isActive: true };\n var array = [reservation].concat($scope.$context.data.section.reservations);\n $scope.$context.data.section.reservations = [...array];\n };\n $scope.$context.removeReservation = function (index) {\n $scope.$context.data.section.reservations.splice(index, 1);\n };\n }\n];","import angular from \"angular\";\nimport arrangeViewingHtml from \"shared/arrangeViewing.html\";\nimport arrangeViewingCtrl from \"shared/arrangeViewing.js\";\nimport albumReserveSectionHtml from \"shared/albumReserveSection/reservesection.html\";\nimport albumReserveSectionCtrl from \"shared/albumReserveSection/reservesection.js\";\n\nimport albumBuySectionStep1Html from \"shared/albumBuySection/convert-step-1.html\";\nimport albumBuySectionStep2Html from \"shared/albumBuySection/convert-step-2.html\";\nimport albumBuySectionStep3Html from \"shared/albumBuySection/convert-step-3.html\";\nimport albumBuySectionStep4Html from \"shared/albumBuySection/convert-step-4.html\";\nimport albumBuySectionStep5Html from \"shared/albumBuySection/convert-step-5.html\";\n\nimport albumBuySectionStep1Ctrl from \"shared/albumBuySection/convert-step-1.js\";\nimport albumBuySectionStep2Ctrl from \"shared/albumBuySection/convert-step-2.js\";\nimport albumBuySectionStep3Ctrl from \"shared/albumBuySection/convert-step-3.js\";\nimport albumBuySectionStep4Ctrl from \"shared/albumBuySection/convert-step-4.js\";\n\nimport { forEach } from \"lodash\";\nexport default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"$uibModal\",\n \"$wizard\",\n \"$q\",\n \"albumConfig\",\n \"commonApi\",\n function (\n $http,\n $log,\n store,\n moment,\n $uibModal,\n $wizard,\n $q,\n albumConfig,\n commonApi\n ) {\n var apiAddress = albumConfig.apiAddress;\n\n function getSectionAberrations(sectionId) {\n return $http.get(\n apiAddress + \"/section/\" + sectionId + \"/aberrations\"\n );\n }\n\n function getSectionOptions(sectionId) {\n return $http.get(apiAddress + \"/section/\" + sectionId + \"/options\");\n }\n\n function getSectionColorOptions(sectionId) {\n return $http.get(apiAddress + \"/section/\" + sectionId + \"/coloroptions\");\n }\n\n function getSectionColorOptionsReady(sectionId) {\n return $http.get(apiAddress + \"/section/\" + sectionId + \"/coloroptions/ready\");\n }\n\n function getAvailableSectionOptions(sectionId) {\n return $http.get(apiAddress + \"/section/\" + sectionId + \"/options/available\");\n }\n\n function getOptionsIsAvailableForMt(sectionId) {\n return $http.get(apiAddress + \"/section/\" + sectionId + \"/options/available/mt\");\n }\n\n function changeContracts(sectionId) {\n return $http.get(`${apiAddress}/section/${sectionId}/contracts`);\n }\n function changeContract(sectionId, contractId) {\n return $http.get(\n `${apiAddress}/section/${sectionId}/contracts/${contractId}`\n );\n }\n\n function getSectionChange(sectionId, contractId, changeId) {\n return $http.get(\n apiAddress +\n \"/section/\" +\n sectionId +\n \"/contract/\" +\n contractId +\n \"/changes/\" +\n changeId\n );\n }\n\n function saveContract(contract) {\n return $http.post(apiAddress + \"/section/contract/save\", contract);\n }\n\n function saveChange(change) {\n return $http.post(apiAddress + \"/section/change/save\", change);\n }\n\n function getSectionList(projTable) {\n return $http.get(apiAddress + \"/sections/list/\" + projTable);\n }\n\n function reserveSection(projCust) {\n return $http.post(apiAddress + \"/section/reserve\", projCust);\n }\n\n function validateBuySection(modalRes) {\n var section = modalRes.section;\n var so = modalRes.secondaryOwners;\n var bsr = convertToBuySectionRequest(section, so);\n\n return $http.post(apiAddress + \"/section/buy/validate\", bsr);\n }\n\n function buySection(modalRes) {\n var section = modalRes.section;\n var so = modalRes.secondaryOwners;\n\n var bsr = convertToBuySectionRequest(section, so);\n return $http.post(apiAddress + \"/section/buy\", bsr);\n }\n\n function convertToBuySectionRequest(section, secondaryOwners) {\n var soList = [];\n if (secondaryOwners) {\n forEach(secondaryOwners, so => {\n soList.push({\n pNumber: so.pNumber,\n share: so.share,\n person: {\n firstName: so.firstName,\n middleName: so.middleName,\n birthDate: so.birthDate,\n address: so.address,\n postCodeId: so.postCodeId,\n lastName: so.lastName,\n phone: so.phone,\n mobile: so.phone,\n email: so.email\n }\n });\n });\n }\n\n return {\n secondaryOwners: soList,\n projCustomerId: section.projCustomerId,\n share: section.share,\n moveInDate: section.projCustomerProjSectionMoveInDate,\n contractTimeLimit: section.projCustomerContractTimeLimit,\n contractType: section.projCustomerContractType,\n contractSigned: section.projCustomerContractSigned,\n contractReservation: section.projCustomerContractReservation,\n contractReservationTxt: section.projCustomerContractReservationTxt,\n contractReservationDeadLine: section.projCustomerContractReservationDeadLine,\n contractReservationTH: section.projCustomerContractReservationTH,\n contractReservationTxtTH: section.projCustomerContractReservationTxtTH,\n contractReservationDeadLineTH: section.projCustomerContractReservationDeadLineTH,\n salesResponsible: section.salesResponsible,\n firstName: section.projCustomerCustomerPersonFirstName,\n middleName: section.projCustomerCustomerPersonMiddleName,\n lastName: section.projCustomerCustomerPersonLastName,\n phone: section.projCustomerCustomerPersonPhone,\n mobile: section.projCustomerCustomerPersonMobile,\n address: section.projCustomerCustomerPersonAddress,\n postCodeId: section.postCodeFromWizard,\n email: section.projCustomerCustomerPersonEmail,\n name2: section.projCustomerCustomerName2,\n pnumber: section.projCustomerCustomerPNumber,\n pnumber2: section.projCustomerCustomerPNumber2,\n phone2: section.projCustomerCustomerPhone2,\n email2: section.projCustomerCustomerEmail2,\n gapVisionPersonalityType:\n section.projCustomerCustomerGapVisionPersonalityType,\n createMtUser: section.createMtUser,\n reservations: section.reservations,\n contractMeetingTask: section.createContractMeetingTask\n ? {\n name: `Kontraktsmøte ${section.sectionAndCustomerString}, ${section.projectPhaseProjectName}`,\n deadLine: section.contractMeetingDateTime\n }\n : null,\n finances: [\n {\n loanType: 0,\n financeStatus: section.financeHB,\n date: section.financeHBDate,\n amount: section.hbLoan\n },\n {\n loanType: 1,\n financeStatus: section.financeStart,\n date: section.financeStartDate,\n amount: section.startLoan\n },\n {\n loanType: 2,\n financeStatus: section.financePrivate,\n date: section.privateLoanDate,\n amount: section.privateLoan\n }\n ]\n };\n }\n\n function leaveSection(projCustomerId, sectionId) {\n return $http.post(apiAddress + \"/section/leave\", {\n projCustomerId: projCustomerId,\n sectionId: sectionId\n });\n }\n\n function cancelContract(section, cancelDate) {\n return $http.post(apiAddress + \"/section/cancelcontract\", {\n section: section,\n canceledDate: cancelDate\n });\n }\n\n function createSectionOptions(projSectionOptions) {\n return $http.post(\n apiAddress + \"/section/options/create\",\n projSectionOptions\n );\n }\n\n function addPackageToSection(addPackageToSectionRequest) {\n return $http.post(\n apiAddress + \"/section/addpackage\",\n addPackageToSectionRequest\n );\n }\n\n function createSections(req) {\n return $http.post(apiAddress + \"/section/create\", req);\n }\n\n function getOption(sectionOptionId) {\n return $http.get(apiAddress + \"/section/option/\" + sectionOptionId);\n }\n\n function saveSection(section) {\n return $http.post(apiAddress + \"/section/save\", section);\n }\n\n function deleteSection(section) {\n return $http.post(apiAddress + \"/section/delete\", section);\n }\n\n function deleteChange(change) {\n return $http.post(apiAddress + \"/section/change/delete\", change);\n }\n\n function deleteContract(contract) {\n return $http.post(\n apiAddress + \"/section/contract/delete\",\n contract\n );\n }\n\n function deleteOption(option) {\n return $http.post(apiAddress + \"/section/option/delete\", option);\n }\n\n function deleteColorOption(colorOption) {\n return $http.post(apiAddress + \"/section/coloroption/delete\", colorOption);\n }\n\n function confirmOptions(projSectionId) {\n return $http.post(apiAddress + \"/section/\" + projSectionId + \"/options/confirm\");\n }\n\n function confirmColorOptions(projSectionId) {\n return $http.post(apiAddress + \"/section/\" + projSectionId + \"/coloroptions/confirm\");\n }\n\n function changeOptionPrice(option) {\n return $http.post(apiAddress + \"/section/option/price\", option);\n }\n\n function changeColorOptionPrice(colorOption) {\n return $http.post(apiAddress + \"/section/coloroption/price\", colorOption);\n }\n\n function arrangeViewingModal(projCust) {\n var modalInstance = $uibModal.open({\n size: \"lg\",\n template: arrangeViewingHtml,\n controllerAs: \"modalvm\",\n controller: arrangeViewingCtrl,\n resolve: {\n projCust: [\n function () {\n return projCust;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n function reserveSectionModal(projCust) {\n var modalInstance = $uibModal.open({\n size: \"lg\",\n template: albumReserveSectionHtml,\n controllerAs: \"modalvm\",\n controller: albumReserveSectionCtrl,\n resolve: {\n projCust: [\n function () {\n return projCust;\n }\n ],\n sections: [\n \"projectApi\",\n function (projectApi) {\n return projectApi.getProjectWithSections(\n projCust.projTable\n );\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n function buySectionModal(section) {\n var deferred = $q.defer();\n section.postCodeFromWizard =\n section.projCustomerCustomerPersonPostCodeId;\n\n if (!section.projCustomerProjSectionId) {\n deferred.resolve({\n error:\n \"Det er ikke reservert noen seksjon på interessenten. Konvertering kan ikke gjennomføres.\"\n });\n return deferred.promise;\n }\n\n var convertToCustomerwizard = $wizard\n .$new({\n title: \"Kjøp leilighet\",\n size: \"lg\",\n shadow: true,\n successing: function ($data, $step, $isLastStep, callback) {\n validateBuySection($data).then(\n function () {\n return callback(true);\n },\n function () {\n return callback(false);\n }\n );\n }\n })\n .addStep({\n id: \"step-1-converttocustomer\",\n title: \"Kundeinformasjon\",\n template: albumBuySectionStep1Html,\n controller: albumBuySectionStep1Ctrl\n })\n .addStep({\n id: \"step-2-converttocustomer\",\n title: \"Kontaktsinformasjon\",\n template: albumBuySectionStep2Html,\n controller: albumBuySectionStep2Ctrl\n })\n .addStep({\n id: \"step-3-converttocustomer\",\n title: \"Kontraktsinformasjon\",\n template: albumBuySectionStep3Html,\n controller: albumBuySectionStep3Ctrl\n })\n .addStep({\n id: \"step-4-converttocustomer\",\n title: \"Forbehold\",\n template: albumBuySectionStep4Html,\n controller: albumBuySectionStep4Ctrl\n })\n .addStep({\n id: \"step-5-converttocustomer\",\n title: \"Finansiering\",\n template: albumBuySectionStep5Html\n });\n\n convertToCustomerwizard.open(\n {\n section: section\n },\n function (result) {\n deferred.resolve(result);\n },\n window.angular.noop\n );\n\n return deferred.promise;\n }\n\n function saveSalesContract(section) {\n return $http.post(\n apiAddress + \"/section/salescontract/save\",\n section\n );\n }\n\n function getSettlement(sectionId) {\n return $http.get(\n apiAddress + \"/section/\" + sectionId + \"/settlement\"\n );\n }\n\n function saveSettlement(settlement) {\n return $http.post(\n apiAddress +\n \"/section/\" +\n settlement.sectionId +\n \"/settlement/save\",\n settlement\n );\n }\n\n function getDocuments(sectionid) {\n return $http.get(\n apiAddress + \"/section/\" + sectionid + \"/documents\"\n );\n }\n\n function saveFinances(id, finances) {\n return $http.post(apiAddress + \"/section/finances/save\", {\n projSectionId: id,\n finances: finances\n });\n }\n\n function getBulkEditSections(sections) {\n return $http.post(apiAddress + \"/sections/bulk/edit\", sections);\n }\n\n function acceptChangeContract(changeContract) {\n return $http.post(\n apiAddress + \"/section/change/accept\",\n changeContract\n );\n }\n\n function saveParkingLot(parkingLot) {\n return $http.post(\n apiAddress + \"/section/parkinglot/save\",\n parkingLot\n );\n }\n\n function deleteParkingLot(parkingLot) {\n return $http.post(\n apiAddress + \"/section/parkinglot/delete\",\n parkingLot\n );\n }\n\n var getProtocols = sectionId => {\n return $http.get(\n apiAddress + \"/section/\" + sectionId + \"/protocols\"\n );\n };\n\n function getAcquisitionProtocol(sectionId, id) {\n return $http.post(apiAddress + \"/section/protocol/acquisition\", {\n sectionId: sectionId,\n protocolId: id\n });\n }\n\n function getNewAcquisitionProtocol(sectionId) {\n return $http.get(\n apiAddress + \"/section/protocol/acquisition/new/\" + sectionId\n );\n }\n\n function saveAcquisitionProtocol(protocol) {\n forEach(protocol.regLines, line => {\n commonApi.transformAttachments(line.attachments);\n });\n\n return $http.post(\n apiAddress + \"/section/protocol/acquisition/save\",\n protocol,\n {\n timeout: 86400000\n }\n );\n }\n\n function downloadAcquisitionProtocol(sectionId, id) {\n return $http({\n url: apiAddress + \"/section/protocol/acquisition/download\",\n method: \"POST\",\n data: {\n sectionId: sectionId,\n protocolId: id\n },\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function getPreInspectionProtocol(sectionId, id) {\n return $http.post(apiAddress + \"/section/protocol/preinspection\", {\n sectionId: sectionId,\n protocolId: id\n });\n }\n\n function getNewPreInspectionProtocol(sectionId) {\n return $http.get(\n apiAddress + \"/section/protocol/preinspection/new/\" + sectionId\n );\n }\n\n function savePreInspectionProtocol(protocol) {\n forEach(protocol.aberrationActions, aberrationAction => {\n commonApi.transformAttachments(aberrationAction.attachments);\n });\n\n return $http.post(\n apiAddress + \"/section/protocol/preinspection/save\",\n protocol,\n {\n timeout: 86400000\n }\n );\n }\n\n function downloadPreInspectionProtocol(sectionId, id) {\n return $http({\n url: apiAddress + \"/section/protocol/preinspection/download\",\n method: \"POST\",\n data: {\n sectionId: sectionId,\n protocolId: id\n },\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function getNewOneYearInspectionProtocol(sectionId) {\n return $http.get(\n apiAddress + \"/section/protocol/oneyearinspection/new/\" + sectionId\n );\n }\n\n function saveOneYearInspectionProtocol(protocol) {\n return $http.post(\n apiAddress + \"/section/protocol/oneyearinspection/save\",\n protocol,\n {\n timeout: 86400000\n }\n );\n }\n\n function getOneYearInspectionProtocol(id) {\n return $http.get(\n apiAddress + \"/section/protocol/oneyearinspection/\" + id\n );\n }\n\n function getOneYearInspectionProtocolRegistrations(sectionId) {\n return $http.get(\n apiAddress + \"/section/protocol/oneyearinspection/reg/\" + sectionId\n );\n }\n\n function downloadOneYearInspectionProtocol(sectionId, id) {\n return $http({\n url: apiAddress + \"/section/protocol/oneyearinspection/download\",\n method: \"POST\",\n data: {\n sectionId: sectionId,\n protocolId: id\n },\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n var getCustomer = projCustomerId => {\n return $http.get(\n apiAddress + \"/section/customer/\" + projCustomerId\n );\n };\n var saveSectionCustomer = projCustomer => {\n return $http.post(\n apiAddress + \"/section/customer/save\",\n projCustomer\n );\n };\n var addSectionCustomer = projCustomer => {\n return $http.post(\n apiAddress + \"/section/customer/add\",\n projCustomer\n );\n };\n\n var addCustomerToSection = (sectionId, request) => {\n return $http.post(\n `${apiAddress}/section/${sectionId}/customer/addexisting`,\n request\n );\n };\n\n var getMyContractDocuments = (sectionId) => {\n return $http.get(\n apiAddress + `/section/${sectionId}/mycontract/documents`\n );\n };\n\n var postMyContractDocuments = (sectionId, documents) => {\n return $http.post(\n apiAddress + `/section/${sectionId}/mycontract/documents`, documents\n );\n };\n\n var deleteMyContractDocument = (guid) => {\n return $http.delete(\n apiAddress + `/section/mycontract/documents/${guid}`\n );\n };\n\n var getTrafficLights = (sectionId) => {\n return $http.get(apiAddress + `/section/${sectionId}/trafficlights`, {\n hideLoader: true\n });\n };\n\n var getBulkEditData = () => {\n return $http.get(apiAddress + \"/sections/bulk/data\");\n };\n var saveSections = sections => {\n return $http.post(apiAddress + \"/sections/save\", sections);\n };\n\n var acceptSectionOffer = section => {\n return $http.post(apiAddress + \"/section/acceptoffer\", section);\n };\n\n var rejectSectionOffer = section => {\n return $http.post(apiAddress + \"/section/rejectoffer\", section);\n };\n\n var downloadSectionOffer = (sectionId, projCustomerId) => {\n return $http({\n url: apiAddress + `/section/${sectionId}/offer/${projCustomerId}`,\n method: \"GET\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n };\n\n const swapSection = (from, to) => {\n return $http.post(apiAddress + \"/section/swap\", {\n fromSection: from,\n toSection: to\n });\n };\n\n function postAttachmentsToBuffer(attachments) {\n var promises = [];\n for (var attachment of attachments) {\n promises.push($http.post(apiAddress + `/blob/buffer/upload/${attachment.bufferGuid}`, attachment.formData, {\n transformRequest: angular.identity,\n timeout: 86400000,\n headers: {\n \"Content-Type\": undefined\n }\n }));\n }\n return $q.all(promises);\n }\n\n return {\n getSectionAberrations: getSectionAberrations,\n getSectionOptions: getSectionOptions,\n getAvailableSectionOptions: getAvailableSectionOptions,\n getOptionsIsAvailableForMt: getOptionsIsAvailableForMt,\n changeContracts: changeContracts,\n changeContract: changeContract,\n getSectionChange: getSectionChange,\n saveChange: saveChange,\n saveContract: saveContract,\n getSectionList: getSectionList,\n reserveSection: reserveSection,\n buySection: buySection,\n leaveSection: leaveSection,\n cancelContract: cancelContract,\n createSectionOptions: createSectionOptions,\n addPackageToSection: addPackageToSection,\n createSections: createSections,\n getOption: getOption,\n deleteSection: deleteSection,\n saveSection: saveSection,\n deleteChange: deleteChange,\n deleteContract: deleteContract,\n deleteOption: deleteOption,\n confirmOptions: confirmOptions,\n changeOptionPrice: changeOptionPrice,\n arrangeViewingModal: arrangeViewingModal,\n reserveSectionModal: reserveSectionModal,\n buySectionModal: buySectionModal,\n saveSalesContract: saveSalesContract,\n getSettlement: getSettlement,\n saveSettlement: saveSettlement,\n getDocuments: getDocuments,\n saveFinances: saveFinances,\n getBulkEditSections: getBulkEditSections,\n acceptChangeContract: acceptChangeContract,\n saveParkingLot: saveParkingLot,\n deleteParkingLot: deleteParkingLot,\n getProtocols: getProtocols,\n getAcquisitionProtocol: getAcquisitionProtocol,\n getNewAcquisitionProtocol: getNewAcquisitionProtocol,\n saveAcquisitionProtocol: saveAcquisitionProtocol,\n downloadAcquisitionProtocol: downloadAcquisitionProtocol,\n getPreInspectionProtocol: getPreInspectionProtocol,\n getNewPreInspectionProtocol: getNewPreInspectionProtocol,\n savePreInspectionProtocol: savePreInspectionProtocol,\n downloadPreInspectionProtocol: downloadPreInspectionProtocol,\n getNewOneYearInspectionProtocol: getNewOneYearInspectionProtocol,\n saveOneYearInspectionProtocol: saveOneYearInspectionProtocol,\n getOneYearInspectionProtocol: getOneYearInspectionProtocol,\n getOneYearInspectionProtocolRegistrations: getOneYearInspectionProtocolRegistrations,\n downloadOneYearInspectionProtocol: downloadOneYearInspectionProtocol,\n getCustomer: getCustomer,\n saveSectionCustomer: saveSectionCustomer,\n addSectionCustomer: addSectionCustomer,\n addCustomerToSection: addCustomerToSection,\n getMyContractDocuments: getMyContractDocuments,\n postMyContractDocuments: postMyContractDocuments,\n deleteMyContractDocument: deleteMyContractDocument,\n getTrafficLights: getTrafficLights,\n getBulkEditData: getBulkEditData,\n saveSections: saveSections,\n acceptSectionOffer: acceptSectionOffer,\n rejectSectionOffer: rejectSectionOffer,\n downloadSectionOffer: downloadSectionOffer,\n swapSection: swapSection,\n postAttachmentsToBuffer: postAttachmentsToBuffer,\n getSectionColorOptions: getSectionColorOptions,\n getSectionColorOptionsReady: getSectionColorOptionsReady,\n deleteColorOption: deleteColorOption,\n confirmColorOptions: confirmColorOptions,\n changeColorOptionPrice: changeColorOptionPrice\n };\n }\n];\n","export default \"
\\n

Arranger visning

\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n \\n
\\n\\n
\\n Kunde har\\n reservert seg mot SMS-varslinger\\n
\\n
\\n
\\n \\n
\\n\\n 8}\\\" id=\\\"telNum\\\" class=\\\"form-control\\\"\\n ng-model=\\\"modalvm.smsNumber\\\">\\n\\n
\\n 8\\\" class=\\\"text-danger\\\">Det er kun mulig med norske nummer\\n
\\n\\n
\\n\\n
\\n \\n \\n
\";","export default \"\\n\\n\\n
\\n\\t

Reserver seksjon

\\n
\\n
\\n \\n \\n
\\n
\\n\\t\\n\\t\\n
\\n\";","export default \"

Primær eier

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n mitt.trysilhus.no har allerede en bruker med denne eposten!\\n
\\n
\\n \\n \\n
\";","export default \"

\\n For å legge til flere kunder på leilighet bruk knappen under. Er det ikke flere kunder trykk neste\\n

\\n
\\n \\n
\\n\\n
\\n\\n
\\n
\\n

Medkjøper {{$index+1}}

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n Fjern medkjøper \\n
\\n\\n
\";","export default \"
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n\\n

Kontraktstype

\\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n\\n\\n
\\n \\n \\n
\\n\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\";","export default \"
\\n
\\n

Forbehold

\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n\\n
\\n Hvis du ikke setter noen forbehold på kunde vil kontrakten automatisk settes som sikker\\n
\";","export default \"

Finansiering

\\n\\n
\\n\\n

Eierandeler

\\n\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
KjøperAndel i prosent
{{$context.data.section.projCustomerCustomerPersonFirstName }}\\n {{$context.data.section.projCustomerCustomerPersonFirstName}}\\n\\n \\n
{{so.firstName }} {{so.lastName}}\\n\\n\\n \\n\\n
\";","export default [\"$uibModalInstance\", \"data\",\n function ($uibModalInstance, data) {\n var modalvm = this;\n modalvm.firstName = data.firstName.firstName;\n modalvm.lastName = data.firstName.lastName;\n modalvm.imageUrl = data.firstName.imageUrl;\n modalvm.close = function () {\n $uibModalInstance.close();\n };\n }\n];","import { isNumber } from \"highcharts\";\nimport albumProfileImageHtml from \"shared/albumProfileImage/image.html\";\nimport albumProfileImageCtrl from \"shared/albumProfileImage/ctrl.js\";\n\nexport default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"albumConfig\",\n \"$uibModal\",\n function ($http, $log, store, moment, albumConfig, $uibModal) {\n var apiAddress = albumConfig.apiAddress;\n\n function profileModal(firstName, lastName, imageUrl) {\n var modalInstance = $uibModal.open({\n template: albumProfileImageHtml,\n controllerAs: \"modalvm\",\n controller: albumProfileImageCtrl,\n resolve: {\n data: [function () {\n return {\n firstName: firstName,\n lastName: lastName,\n imageUrl: imageUrl\n };\n }]\n }\n });\n return modalInstance;\n }\n\n function companyContactPersons(contactId) {\n return $http.get(\n `${apiAddress}/companycontact/${contactId}/contactpersons`\n );\n }\n\n function addProjectContact(req) {\n return $http.post(apiAddress + \"/contact/projcontact/add\", req);\n }\n\n function validateProjectContact(req) {\n return $http.post(\n apiAddress + \"/contact/projcontact/validate\",\n req\n );\n }\n\n function removeProjectContact(projContactId) {\n return $http.post(apiAddress + \"/contact/projcontact/delete\", {\n id: projContactId\n });\n }\n\n function exportContactList(projcontacts) {\n return $http({\n url: apiAddress + \"/export/contactlist\",\n data: {\n key: \"projcontacts\",\n value: projcontacts\n },\n method: \"POST\",\n responseType: \"blob\"\n });\n }\n\n function getProjContact(projContactId) {\n return $http.get(apiAddress + \"/contact/\" + projContactId);\n }\n\n function updateProjContact(projContact) {\n return $http.post(\n apiAddress + \"/contact/projcontact/update\",\n projContact\n );\n }\n\n function getContactPersonsDictionary() {\n return $http.get(apiAddress + \"/contactpersons/list\");\n }\n\n function getContactPerson(contactPersonId) {\n return $http.get(apiAddress + \"/contactpersons/\" + contactPersonId);\n }\n\n function getContactPersons() {\n return $http.get(apiAddress + \"/contactpersons\");\n }\n\n function updateContactPerson(cp) {\n return $http.post(apiAddress + \"/contactperson/update\", cp);\n }\n\n function createContactPerson(user) {\n return $http.post(apiAddress + \"/contactperson/create\", user);\n }\n\n function getContacts() {\n return $http.get(apiAddress + \"/companycontacts\");\n }\n\n function getContact(contactId) {\n return $http.get(apiAddress + \"/companycontact/\" + contactId);\n }\n\n function updateContact(contact) {\n return $http.post(apiAddress + \"/companycontact/update\", contact);\n }\n\n function deleteContact(contact) {\n return $http.post(apiAddress + \"/companycontact/delete\", contact);\n }\n\n function getContactGroups() {\n return $http.get(apiAddress + \"/contact/groups\");\n }\n\n function getContactPersonsList(contactId) {\n return $http.get(`${apiAddress}/contact/persons/${contactId}`);\n }\n\n function updateContactPersonInfo(req) {\n return $http.post(\n apiAddress + \"/contact/contactperson/info/update\",\n req\n );\n }\n\n function deleteContactPerson(contactPerson) {\n return $http.post(\n apiAddress + \"/contact/contactperson/delete\",\n contactPerson\n );\n }\n\n function mergeDuplicates(duplicates) {\n return $http.post(\n apiAddress + \"/contactperson/merge/duplicates\",\n duplicates\n );\n }\n\n /* function getRegistrations(contactId) {\n return $http.get(apiAddress + \"/contact/\" + contactId + \"/registrations\");\n } */\n\n function contactPersonRelationUpsert(contactpersonrelation) {\n return $http.post(\n apiAddress + \"/contactpersonrelation/upsert\",\n contactpersonrelation\n );\n }\n\n function searchContactPersons(\n projectId,\n text,\n contactPersonId,\n contactId\n ) {\n var url = `${apiAddress}/contactperson/search`;\n if (contactPersonId) {\n url += `?contactPersonId=${contactPersonId}`;\n\n if (contactId) {\n url += `&contactId=${contactId}`;\n }\n } else {\n url += `?projectId=${projectId}&text=${text}`;\n }\n\n return $http.get(url, {\n hideLoader: true,\n cache: true\n });\n }\n\n function searchContacts(input) {\n var url = `${apiAddress}/contact/search`;\n if (isNumber(input)) {\n url += `?contactId=${input}`;\n } else {\n url += `?text=${input}`;\n }\n\n return $http.get(url, {\n hideLoader: true,\n cache: true\n });\n }\n\n function getContactProjects(contactId) {\n return $http.get(`${apiAddress}/contact/${contactId}/projects`);\n }\n\n function getContactPersonCourses(contactPersonId) {\n return $http.get(`${apiAddress}/contactpersons/${contactPersonId}/courses`);\n }\n\n function postContactPersonCourse(contactPersonCourse) {\n return $http.post(`${apiAddress}/contactperson/course`, contactPersonCourse);\n }\n\n function deleteContactPersonCourse(contactPersonCourseId) {\n return $http.delete(`${apiAddress}/contactperson/course/${contactPersonCourseId}`);\n }\n\n function getContactVendors(contactId) {\n return $http.get(apiAddress + \"/companycontact/\" + contactId + \"/vendors\", { hideLoader: true });\n }\n\n function companyDeactivatedContactPersons(contactId) {\n return $http.get(\n `${apiAddress}/companycontact/${contactId}/contactpersons/deactivated`\n );\n }\n \n function companyActivateContactPersons(contactId, contactPersonId) {\n return $http.put(\n `${apiAddress}/companycontact/${contactId}/activate/contactPerson/${contactPersonId}`\n );\n }\n\n function companyDeactivateContactPerson(contactId, contactPersonId) {\n return $http.put(\n `${apiAddress}/companycontact/${contactId}/deactivate/contactPerson/${contactPersonId}`\n );\n }\n // \"api/companycontact/{contactId}/contactpersons/{contactPersonId}/isbtadmin\";\n function changeIsBTAdmin(contactId, contactPersonId) {\n return $http.put(apiAddress + `/companycontact/${contactId}/contactpersons/${contactPersonId}/isbtadmin`);\n }\n\n return {\n companyContactPersons: companyContactPersons,\n addProjectContact: addProjectContact,\n removeProjectContact: removeProjectContact,\n exportContactList: exportContactList,\n getProjContact: getProjContact,\n updateProjContact: updateProjContact,\n validateProjectContact: validateProjectContact,\n getContactPersonsDictionary: getContactPersonsDictionary,\n getContactPersons: getContactPersons,\n getContactPerson: getContactPerson,\n updateContactPerson: updateContactPerson,\n createContactPerson: createContactPerson,\n getContacts: getContacts,\n getContact: getContact,\n updateContact: updateContact,\n deleteContact: deleteContact,\n getContactGroups: getContactGroups,\n getContactPersonsList: getContactPersonsList,\n updateContactPersonB: updateContactPersonInfo,\n deleteContactPerson: deleteContactPerson,\n mergeDuplicates: mergeDuplicates,\n /* getRegistrations: getRegistrations, */\n contactPersonRelationUpsert: contactPersonRelationUpsert,\n searchContactPersons: searchContactPersons,\n searchContacts: searchContacts,\n profileModal: profileModal,\n getContactProjects: getContactProjects,\n getContactPersonCourses: getContactPersonCourses,\n postContactPersonCourse: postContactPersonCourse,\n deleteContactPersonCourse: deleteContactPersonCourse,\n getContactVendors: getContactVendors,\n companyDeactivatedContactPersons: companyDeactivatedContactPersons,\n companyActivateContactPersons: companyActivateContactPersons,\n companyDeactivateContactPerson: companyDeactivateContactPerson,\n changeIsBTAdmin: changeIsBTAdmin\n };\n }\n];\n","export default \"\\n
\\n
\\n {{ modalvm.firstName }} {{ modalvm.lastName }}\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\";","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"recipients\",\n \"customerApi\",\n \"templateApi\",\n \"toastr\",\n \"disableTransform\",\n function (\n $uibModalInstance,\n $log,\n recipients,\n customerApi,\n templateApi,\n toastr,\n disableTransform\n ) {\n var modalvm = this;\n modalvm.text = \"\";\n\n modalvm.disableTransform = disableTransform;\n modalvm.recipients = recipients;\n modalvm.template = null;\n modalvm.excludeSectionTemplate = modalvm.recipients.some(\n (x) => x.excludeSectionTemplate\n );\n\n modalvm.showSectionTemplate = function () {\n if (modalvm.disableTransform) {\n return !modalvm.disableTransform;\n }\n return !modalvm.excludeSectionTemplate;\n };\n\n templateApi.getTemplates(0 /* SMS */).then((result) => {\n modalvm.templates = result.data.templates;\n });\n\n modalvm.applyTemplate = function () {\n modalvm.text = modalvm.template.template;\n };\n\n modalvm.readyToSend = function () {\n return modalvm.text.length > 0;\n };\n\n modalvm.close = function () {\n $uibModalInstance.close();\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n customerApi.sendSms(modalvm).then(\n function (res) {\n modalvm.sentStatus = true;\n modalvm.recipients = res.data.recipients;\n },\n function () {\n toastr.error(\"SMS feilet\", {\n tapToDismiss: true,\n timeOut: 0\n });\n }\n );\n };\n }\n];\n","export default [\n \"$uibModalInstance\",\n \"type\",\n \"text\",\n function ($uibModalInstance, type, text) {\n var modalvm = this;\n\n modalvm.text = text;\n modalvm.type = type;\n modalvm.questionAnswered = modalvm.type == \"reject\" ? null : true;\n\n modalvm.close = function () {\n $uibModalInstance.close(\"cancelled\");\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close(\"cancelled\");\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.text);\n };\n }];","export default \"
\\n

{{ modalvm.type == 'reject' ? 'Avvis kjøpstilbud' : 'Aksepter kjøpstilbud'}}

\\n
\\n
\\n
Har dialog med kjøpere blitt gjennomført?
\\n
SMS til kjøpere:
\\n
\\n \\n
\\n
\\n
\\n \\n \\n \\n
\";","import sendsms from \"shared/albumSms/sendsms.js\";\nimport sendsmshtml from \"shared/albumSms/sendsms.html\";\n\nimport rejectoffer from \"shared/albumRejectOffer/rejectoffer.js\";\nimport rejectofferhtml from \"shared/albumRejectOffer/rejectoffer.html\";\n\nimport { forEach, filter } from \"lodash\";\nexport default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"$wizard\",\n \"$q\",\n \"$uibModal\",\n \"albumConfig\",\n\n function ($http, $log, store, moment, $wizard, $q, $uibModal, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function openSmsModal(recipients, disableTransform) {\n var modalInstance = $uibModal.open({\n template: sendsmshtml,\n size: \"lg\",\n controllerAs: \"modalvm\",\n resolve: {\n disableTransform: [\n () => {\n return disableTransform;\n }\n ],\n recipients: [\n function () {\n forEach(recipients, function (r) {\n if (r && r.number) {\n r.number = r.number.replace(/\\s/g, \"\");\n }\n });\n\n recipients = filter(recipients, (r) => {\n return (\n r.number !== undefined && r.number !== \"\"\n );\n });\n\n return recipients;\n }\n ]\n },\n controller: sendsms\n });\n return modalInstance;\n }\n\n function acceptOffer(text) {\n var modalInstance = $uibModal.open({\n template: rejectofferhtml,\n backdrop: \"static\",\n controllerAs: \"modalvm\",\n resolve: {\n type: [\n () => {\n return \"accept\";\n }\n ],\n text: [\n () => {\n return text;\n }\n ]\n },\n controller: rejectoffer\n });\n return modalInstance;\n }\n\n function rejectOffer(text) {\n var modalInstance = $uibModal.open({\n template: rejectofferhtml,\n backdrop: \"static\",\n controllerAs: \"modalvm\",\n resolve: {\n type: [\n () => {\n return \"reject\";\n }\n ],\n text: [\n () => {\n return text;\n }\n ]\n },\n controller: rejectoffer\n });\n return modalInstance;\n }\n\n function getProjCust(projCustId) {\n return $http.get(apiAddress + \"/projcust/\" + projCustId);\n }\n\n function getCustomer(customerId) {\n return $http.get(apiAddress + \"/customer/\" + customerId);\n }\n\n function getCustomerFromProjCustomer(projCustId) {\n return $http.get(apiAddress + \"/customer/projcust/\" + projCustId);\n }\n\n function getCustomersPaged(tableState) {\n return $http.post(apiAddress + \"/customers/paged\", tableState);\n }\n\n function createCustomer(customer) {\n return $http.post(apiAddress + \"/customer/create\", customer);\n }\n\n function validateCustomer(customer) {\n return $http.post(apiAddress + \"/customer/validate\", customer);\n }\n\n function createProjCust(projCust) {\n return $http.post(apiAddress + \"/projcust/create\", projCust);\n }\n\n function updateCustomer(customer) {\n return $http.post(apiAddress + \"/customer/update\", customer);\n }\n\n function getCustomerDocuments(customerOid) {\n return $http.get(\n apiAddress + \"/ibm/customer/\" + customerOid + \"/documents\"\n );\n }\n\n function getCustomerBlobDocuments(customerOid) {\n return $http.get(\n apiAddress + \"/customer/\" + customerOid + \"/documents\"\n );\n }\n\n function getTasks(custTable) {\n return $http.get(apiAddress + \"/tasks/customer/\" + custTable);\n }\n\n function getSecureContracts() {\n return $http.get(apiAddress + \"/customers/securecontracts\");\n }\n\n function setGuarantee(contract, type) {\n return $http.post(apiAddress + \"/customer/guarantee/update\", {\n securecontract: contract,\n type: type\n });\n }\n\n function getProspects() {\n return $http.get(apiAddress + \"/prospects\");\n }\n\n function convertCustomerData(sectionId) {\n return $http.get(apiAddress + \"/customer/convertdata/\" + sectionId);\n }\n\n function mergeCustomer(duplicateId, mergeIntoId) {\n return $http.post(apiAddress + \"/customer/duplicate\", {\n duplicateId: duplicateId,\n mergeIntoId: mergeIntoId\n });\n }\n\n function setCustomerRating(rating) {\n return $http.post(apiAddress + \"/customer/rate\", rating);\n }\n\n function setCustomerFollowUp(notFollowUp) {\n return $http.post(apiAddress + \"/customer/followup\", notFollowUp);\n }\n\n function deleteProjCust(projCustomer) {\n return $http.post(\n apiAddress + \"/projcustomer/delete\",\n projCustomer\n );\n }\n\n function sendSms(smsRequest) {\n return $http.post(apiAddress + \"/customer/sms/send\", smsRequest);\n }\n\n function deleteCustomer(customer) {\n return $http.post(apiAddress + \"/customer/delete\", customer);\n }\n\n function exportTable(tableState) {\n return $http({\n url: apiAddress + \"/export/customers\",\n method: \"POST\",\n data: tableState,\n responseType: \"blob\"\n });\n }\n\n function findCustomerByMobile(mobile) {\n return $http.get(apiAddress + \"/customer/findbymobile/\" + mobile);\n }\n\n /* var convertBuyer2 = request => {\n return $http.post(apiAddress + \"/customer/convertbuyer2\", request);\n }; */\n var findExistingCustomer = (request) => {\n return $http.post(apiAddress + \"/customer/findexisting\", request);\n };\n\n return {\n getProjCust: getProjCust,\n getCustomer: getCustomer,\n getCustomerFromProjCustomer: getCustomerFromProjCustomer,\n getCustomersPaged: getCustomersPaged,\n createCustomer: createCustomer,\n validateCustomer: validateCustomer,\n createProjCust: createProjCust,\n updateCustomer: updateCustomer,\n getCustomerDocuments: getCustomerDocuments,\n getCustomerBlobDocuments: getCustomerBlobDocuments,\n getTasks: getTasks,\n getSecureContracts: getSecureContracts,\n setGuarantee: setGuarantee,\n getProspects: getProspects,\n convertCustomerData: convertCustomerData,\n mergeCustomer: mergeCustomer,\n setCustomerRating: setCustomerRating,\n setCustomerFollowUp: setCustomerFollowUp,\n deleteProjCust: deleteProjCust,\n sendSms: sendSms,\n openSmsModal: openSmsModal,\n deleteCustomer: deleteCustomer,\n exportTable: exportTable,\n findCustomerByMobile: findCustomerByMobile,\n //convertBuyer2: convertBuyer2,\n findExistingCustomer: findExistingCustomer,\n acceptOffer: acceptOffer,\n rejectOffer: rejectOffer\n };\n }\n];\n","export default \"\\n
\\n

Send SMS

\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnNummerStatus
{{r.fullName}}{{r.number}}\\n {{r.smsResponse.status}}\\n Mangler\\n mobilnummer\\n \\n\\n\\n\\n\\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n

#SNR - erstattes med mottakers seksjonsnummer

\\n

#Prosjekt - erstattes med mottakers prosjektnavn

\\n
\\n\\n
\\n \\n \\n
\\n\\n\\n
\\n
\\n \\n \\n \\n
\";","import {\n filter,\n map,\n uniqBy,\n forEach,\n get\n} from \"lodash\";\nexport default [\"$uibModalInstance\", \"$log\", \"houseApi\", \"moment\", \"schedules\", \"$scope\", \"$confirm\",\n function ($uibModalInstance, $log, houseApi, moment, schedules, $scope, $confirm) {\n\n var modalvm = this;\n modalvm.displayCollection = [];\n\n modalvm.processPhases = filter(map(uniqBy(schedules, t => {\n return t.phaseId;\n }), t => {\n return {\n id: t.phaseId,\n name: t.phase === \"-\" ? \"Ingen\" : t.phase\n };\n }), tt => {\n return tt.id !== undefined;\n });\n modalvm.scheduleFilter = sch => {\n var processName = get(sch, \"name\", \"\").toLowerCase();\n var responsible = get(sch, \"responsiblePersonFullName\", \"\").toLowerCase();\n var phaseId = get(sch, \"phaseId\", 0);\n\n var nameFilter = get(modalvm, \"nameFilter\", \"\").toLowerCase();\n var responsibleFilter = get(modalvm, \"responsibleFilter\", \"\").toLowerCase();\n var phaseFilter = get(modalvm, \"selectedPhase\");\n\n var phaseIdFilter = !phaseFilter ||\n phaseId === modalvm.selectedPhase;\n var processNameFilter = processName.indexOf(nameFilter) > -1;\n var responsiblePersonFullNameFilter =\n responsible.indexOf(responsibleFilter) > -1;\n if (phaseIdFilter && processNameFilter &&\n responsiblePersonFullNameFilter) {\n return true;\n }\n\n return false;\n };\n\n modalvm.selectAll = false;\n modalvm.selectAllVisible = false;\n modalvm.deleteAllVisible = false;\n modalvm.schedules = schedules;\n\n $scope.$watch(\n \"modalvm\",\n function watchMode(newValue) {\n if (newValue) {\n var filtered = filter(newValue.schedules, newValue.scheduleFilter);\n modalvm.selectAllVisible = filtered\n .filter(sch => !sch.isTask && sch.responsiblePersonFullName).length > 0;\n modalvm.deleteAllVisible = filtered\n .filter(sch => sch.isTask == true && sch.deleteTask != true).length > 0;\n }\n }, true);\n\n\n modalvm.toggleSelect = () => {\n var filtered = filter(modalvm.schedules, modalvm.scheduleFilter);\n forEach(filtered, sch => {\n if (!sch.isTask && sch.responsiblePersonFullName)\n sch.createTask = !modalvm.selectAll;\n });\n };\n\n modalvm.deleteTask = (sch) => {\n $confirm({\n text:\n \"Er du sikker på at du vil fjerne denne oppgaven?\\r\\n\" + sch.name\n }).then(function () {\n sch.deleteTask = true;\n });\n };\n\n modalvm.deleteAllTasks = () => {\n $confirm({\n text:\n \"Er du sikker på at du vil slette oppgavene i listen?\"\n }).then(function () {\n var filtered = filter(modalvm.schedules, modalvm.scheduleFilter);\n forEach(filtered, sch => {\n if (sch.isTask)\n sch.deleteTask = true;\n });\n });\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n var filtered = filter(modalvm.schedules, modalvm.scheduleFilter);\n forEach(filtered, sch => {\n if (sch.createTask == true) {\n sch.isTask = true;\n }\n else if (sch.deleteTask == true) {\n sch.isTask = false;\n }\n });\n\n $uibModalInstance.close(filtered);\n };\n\n\n }\n];","import generateTasksctrl from \"shared/generateTasks\";\nimport generateTaskshtml from \"shared/generateTasks.html\";\n\nexport default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"$q\",\n \"commonApi\",\n \"$rootScope\",\n \"albumConfig\",\n \"$uibModal\",\n function ($http, $log, store, moment, $q, commonApi, $rootScope, albumConfig, $uibModal) {\n var apiAddress = albumConfig.apiAddress;\n\n const generateTasksModal = schedules => {\n var modalInstance = $uibModal.open({\n template: generateTaskshtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n controller: generateTasksctrl,\n resolve: {\n schedules: [\n () => {\n return schedules;\n }\n ]\n }\n });\n\n return modalInstance;\n };\n\n function getTask(taskId, info) {\n info = info || {};\n\n return $http.post(apiAddress + \"/tasks/\" + taskId, info);\n }\n\n function deleteTask(task) {\n return $http.post(apiAddress + \"/tasks/delete\", task);\n }\n\n function saveTask(task) {\n commonApi.transformAttachments(task.attachments);\n\n return $http.post(apiAddress + \"/tasks/save\", task);\n }\n\n function completeSubTask(subTask) {\n return $http.post(apiAddress + \"/tasks/complete/subtask\", subTask);\n }\n\n function completeTask(task) {\n return $http.post(apiAddress + \"/tasks/complete\", task);\n }\n\n function completeProspectTask(request) {\n return $http.post(apiAddress + \"/tasks/complete/prospect\", request);\n }\n\n function completeViewingTask(request) {\n return $http.post(apiAddress + \"/tasks/complete/viewing\", request);\n }\n\n function getContactPersonTasks(contactPersonId) {\n return $http.get(apiAddress + \"/tasks/contactperson/\" + contactPersonId);\n }\n\n function getCustomerTasks(customerId) {\n return $http.get(apiAddress + \"/tasks/customer/\" + customerId);\n }\n\n function getProjectTasks(projectId) {\n return $http.get(apiAddress + \"/tasks/project/\" + projectId);\n }\n\n function getSectionTasks(sectionId) {\n return $http.get(apiAddress + \"/tasks/section/\" + sectionId);\n }\n\n function getTasksPaged(tableState) {\n return $http.post(apiAddress + \"/tasks/paged\", tableState);\n }\n\n function getTasks() {\n return $http.get(apiAddress + \"/tasks\");\n }\n\n function getTaskExternal(task) {\n return $http.get(apiAddress + \"/task/external/\" + task);\n }\n\n function exportTable(tableState) {\n return $http({\n url: apiAddress + \"/export/tasks\",\n method: \"POST\",\n data: tableState,\n responseType: \"blob\"\n });\n }\n\n var getAllMyTasks = () => {\n return $http.get(apiAddress + \"/tasks/mine\");\n };\n\n return {\n completeSubTask: completeSubTask,\n completeTask: completeTask,\n completeProspectTask: completeProspectTask,\n completeViewingTask: completeViewingTask,\n getTask: getTask,\n getTasksPaged: getTasksPaged,\n getTasks: getTasks,\n saveTask: saveTask,\n getContactPersonTasks: getContactPersonTasks,\n getCustomerTasks: getCustomerTasks,\n getProjectTasks: getProjectTasks,\n getSectionTasks: getSectionTasks,\n getTaskExternal: getTaskExternal,\n deleteTask: deleteTask,\n exportTable: exportTable,\n getAllMyTasks: getAllMyTasks,\n generateTasksModal: generateTasksModal\n };\n }\n];\n","export default \"\\n
\\n

Generer oppgaver på tidplan

\\n
\\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n
OppgaveFaseNavnAnsvarligFrist
\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n \\n \\n {{sch.phase}}{{sch.name}}{{sch.responsiblePersonFullName\\n || 'Mangler\\n ansvarlig'}}{{sch.endDate | date}}
\\n\\n\\n\\n\\n\\n
\\n
\\n \\n \\n \\n \\n
\";","export default [\"$log\", \"$uibModalInstance\", \"versionLog\", \"process\",\n function ($log, $uibModalInstance, versionLog, process) {\n\n\n var modalvm = this;\n\n var data = versionLog.data;\n\n modalvm.versionLog = data;\n modalvm.processName = process.name;\n\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.save = function () {\n $uibModalInstance.close(modalvm);\n };\n\n\n }\n];","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"updates\",\n function($uibModalInstance, $log, updates) {\n var modalvm = this;\n\n modalvm.updates = updates;\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.ok = function() {\n $uibModalInstance.close(modalvm.updates);\n };\n }\n];\n","export default [\n \"$uibModalInstance\",\n \"context\",\n \"regSources\",\n function ($uibModalInstance, context, regSources) {\n var modalvm = this;\n\n modalvm.context = context;\n modalvm.regline = context;\n modalvm.regSources = regSources.data;\n\n setTimeout(function () {\n var element = document.getElementById(\"txtTitle\");\n if (element) {\n element.focus();\n }\n }, 1000);\n\n modalvm.setResponsible = (item, regLine) => {\n if (item && item.contactId) {\n regLine.contactId = item.contactId;\n }\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.regline);\n };\n }\n];","export default [\n \"$uibModalInstance\",\n \"schedule\",\n \"moment\",\n function ($uibModalInstance, schedule, moment) {\n function setDuration() {\n var ms = moment(modalvm.schedule.endDate)\n .startOf(\"day\")\n .diff(moment(modalvm.schedule.startDate).startOf(\"day\"));\n modalvm.duration = moment.duration(ms).asDays();\n }\n var modalvm = this;\n\n modalvm.schedule = schedule;\n modalvm.changeOperation = 0;\n\n modalvm.changeDuration = function () {\n var newDuration = moment.duration(modalvm.duration, \"days\");\n modalvm.schedule.endDate = moment(modalvm.schedule.startDate)\n .add(newDuration)\n .toDate();\n };\n modalvm.setDate = function (date) {\n\n modalvm.schedule.endDate = date;\n setDuration();\n };\n modalvm.changeDate = function (days) {\n if (days) {\n var m = moment(modalvm.schedule.endDate).add(days, \"days\");\n modalvm.schedule.endDate = m.toDate();\n }\n\n setDuration();\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm);\n };\n }\n];","export default [\n \"$log\",\n \"$uibModalInstance\",\n \"options\",\n \"$scope\",\n function ($log, $uibModalInstance, options, $scope) {\n var modalvm = this;\n modalvm.options = options;\n\n modalvm.aberration = {};\n modalvm.aberration.category = 1;\n\n $scope.$watch(\n \"modalvm.aberration\",\n function watchAberration(newValue) {\n if (newValue) {\n var desc =\n newValue.description && newValue.description !== \"\";\n var title = newValue.title && newValue.title !== \"\";\n modalvm.validated = desc && title;\n }\n },\n true\n );\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.save = function () {\n $uibModalInstance.close(modalvm.aberration);\n };\n }\n];\n","export default [\n \"aberration\",\n \"$uibModalInstance\",\n function (aberration, $uibModalInstance) {\n var modalvm = this;\n\n\n switch (aberration.category) {\n case 1:\n modalvm.subject = \"Varsel om avvik\";\n modalvm.text =\n \"Hei. \\n\\nDet er registrert et nytt avvik i Album hvor du står oppført som avviksbehandler. \\nAvvik behandles i Album ihht gjeldende rutiner.\";\n break;\n case 2:\n modalvm.subject = \"Varsel om RUH\";\n modalvm.text =\n \"Hei. \\n\\nDet er registrert en ny RUH i Album hvor du står oppført som ansvarlig. \\nRUH behandles i Album ihht gjeldende rutiner.\";\n break;\n case 3:\n modalvm.subject = \"Varsel om forbedringsforslag\";\n modalvm.text =\n \"Hei. \\n\\nDet er registrert et nytt forbedringsforslag i Album hvor du står oppført som behandler. \\nForbedringsforslag behandles i Album ihht gjeldende rutiner.\";\n break;\n }\n\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm);\n };\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n }\n];","export default [\n \"aberrationData\",\n \"$uibModalInstance\",\n \"aberrationApi\",\n function (aberrationData, $uibModalInstance, aberrationApi) {\n var modalvm = this;\n modalvm.aberrationData = aberrationData.data;\n\n modalvm.ok = function () {\n aberrationApi\n .validateAberration(modalvm.aberrationData.aberration)\n .then(function () {\n $uibModalInstance.close(modalvm.aberrationData.aberration);\n });\n };\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n }\n];\n","export default [\n \"$uibModalInstance\",\n \"userId\",\n function ($uibModalInstance, userId) {\n var modalvm = this;\n\n modalvm.userId = userId;\n modalvm.pwd = null;\n\n setTimeout(function () {\n var pwdInput = document.getElementById(\"password\");\n if (pwdInput) {\n pwdInput.focus();\n }\n }, 1000);\n\n modalvm.close = function () {\n $uibModalInstance.close(null);\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close(null);\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.pwd);\n };\n }];","import { map } from \"lodash\";\nexport default [\n \"$uibModalInstance\",\n \"context\",\n \"$log\",\n \"users\",\n \"templateApi\",\n \"haveRoleFilter\",\n function ($uibModalInstance, context, $log, users, templateApi, haveRole) {\n var modalvm = this;\n\n modalvm.context = context;\n modalvm.comment = {};\n\n modalvm.visibleToCustomerCheckboxVisible =\n modalvm.context.commentType === 0 &&\n haveRole([\"Support\", \"KK\"], \"any\");\n\n if (modalvm.context.visibleToCustomer) {\n modalvm.comment.visibleToCustomer = true;\n }\n\n templateApi.getTemplates(1 /* Comments */).then(result => {\n modalvm.templates = result.data.templates;\n });\n\n modalvm.users = map(users.data, function (u) {\n return {\n label: u.value,\n id: u.key\n };\n });\n\n var newTags = [];\n\n modalvm.applyTemplate = function () {\n modalvm.comment.newComment = modalvm.template.template;\n };\n\n modalvm.userTagged = function (item) {\n newTags.push({\n personId: item.id,\n status: 1\n });\n return \"@\" + item.label;\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n\n modalvm.ok = function () {\n modalvm.comment.tags = newTags;\n\n $uibModalInstance.close(modalvm.comment);\n };\n }\n];\n","import {\n head\n\n} from \"lodash\";\nexport default [\"$uibModalInstance\", \"projCustomers\", \"$log\", \"note\", \"customerApi\",\n function ($uibModalInstance, projCustomers, $log, note, customerApi) {\n\n\n var modalvm = this;\n modalvm.note = note;\n\n\n modalvm.projCustomers = projCustomers;\n\n var first = head(modalvm.projCustomers);\n\n if (first) {\n modalvm.note.projCustomerId = first.id;\n }\n\n modalvm.changeRating = function (rating) {\n\n modalvm.note.probability = rating;\n\n customerApi.setCustomerRating({\n id: modalvm.note.projCustomerId,\n probability: rating\n });\n\n };\n\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n\n $uibModalInstance.close(modalvm);\n };\n\n }\n];","import searchApi from \"api/searchApi\";\nimport documentApi from \"api/documentApi\";\nimport sectionApi from \"api/sectionApi\";\nimport contactApi from \"api/contactApi\";\nimport customerApi from \"api/customerApi\";\nimport taskApi from \"api/taskApi\";\nimport mailApi from \"api/mailApi\";\nimport componentApi from \"api/componentApi\";\nimport projectApi from \"api/projectApi\";\nimport minuteApi from \"api/minuteApi\";\nimport commonApi from \"api/commonApi\";\nimport processApi from \"api/processApi\";\nimport registrationApi from \"api/registrationApi\";\nimport attachmentApi from \"api/attachmentApi\";\nimport orderApi from \"api/orderApi\";\nimport subscriptionApi from \"api/subscriptionApi\";\nimport salesApi from \"api/salesApi\";\nimport activityApi from \"api/activityApi\";\nimport reportApi from \"api/reportApi\";\nimport ibmApi from \"api/ibmApi\";\nimport optionApi from \"api/optionApi\";\nimport houseApi from \"api/houseApi\";\nimport moduleApi from \"api/moduleApi\";\nimport scheduleApi from \"api/scheduleApi\";\nimport systemApi from \"api/systemApi\";\nimport aberrationApi from \"api/aberrationApi\";\nimport userApi from \"api/userApi\";\nimport httpLoaderService from \"api/httpLoaderService\";\nimport errorService from \"api/errorService\";\n\nimport calculatorService from \"api/calculatorService\";\nimport commentApi from \"api/commentApi\";\nimport ksApi from \"api/ksApi\";\nimport checklistApi from \"api/checklistApi\";\nimport noteApi from \"api/noteApi\";\nimport notifyApi from \"api/notifyApi\";\nimport templateApi from \"api/templateApi\";\nimport barracksApi from \"api/barracksApi\";\n\nexport default [\n {\n factory: searchApi,\n name: \"searchApi\"\n },\n {\n factory: documentApi,\n name: \"documentApi\"\n },\n {\n factory: sectionApi,\n name: \"sectionApi\"\n },\n {\n factory: contactApi,\n name: \"contactApi\"\n },\n {\n factory: customerApi,\n name: \"customerApi\"\n },\n {\n factory: taskApi,\n name: \"taskApi\"\n },\n {\n factory: mailApi,\n name: \"mailApi\"\n },\n {\n factory: componentApi,\n name: \"componentApi\"\n },\n {\n factory: projectApi,\n name: \"projectApi\"\n },\n {\n factory: minuteApi,\n name: \"minuteApi\"\n },\n {\n factory: commonApi,\n name: \"commonApi\"\n },\n {\n factory: processApi,\n name: \"processApi\"\n },\n {\n factory: registrationApi,\n name: \"registrationApi\"\n },\n {\n factory: attachmentApi,\n name: \"attachmentApi\"\n },\n {\n factory: orderApi,\n name: \"orderApi\"\n },\n {\n factory: subscriptionApi,\n name: \"subscriptionApi\"\n },\n\n {\n factory: salesApi,\n name: \"salesApi\"\n },\n {\n factory: activityApi,\n name: \"activityApi\"\n },\n {\n factory: reportApi,\n name: \"reportApi\"\n },\n {\n factory: ibmApi,\n name: \"ibmApi\"\n },\n {\n factory: optionApi,\n name: \"optionApi\"\n },\n {\n factory: houseApi,\n name: \"houseApi\"\n },\n {\n factory: moduleApi,\n name: \"moduleApi\"\n },\n {\n factory: scheduleApi,\n name: \"scheduleApi\"\n },\n {\n factory: systemApi,\n name: \"systemApi\"\n },\n {\n factory: aberrationApi,\n name: \"aberrationApi\"\n },\n {\n factory: userApi,\n name: \"userApi\"\n },\n {\n factory: httpLoaderService,\n name: \"httpLoaderService\"\n },\n {\n factory: errorService,\n name: \"errorService\"\n },\n\n {\n factory: calculatorService,\n name: \"calculatorService\"\n },\n {\n factory: commentApi,\n name: \"commentApi\"\n },\n {\n factory: ksApi,\n name: \"ksApi\"\n },\n {\n factory: checklistApi,\n name: \"checklistApi\"\n },\n {\n factory: noteApi,\n name: \"noteApi\"\n },\n {\n factory: notifyApi,\n name: \"notifyApi\"\n },\n {\n factory: templateApi,\n name: \"templateApi\"\n },\n {\n factory: barracksApi,\n name: \"barracksApi\"\n }\n];\n","export default [\"$http\", \"$log\", \"store\", \"moment\", \"commonApi\", \"albumConfig\", function ($http, $log, store, moment, commonApi, albumConfig) {\n\n var apiAddress = albumConfig.apiAddress;\n\n function getCalendar(date, days) {\n\n return $http.post(apiAddress + \"/calendar\", {\n date: moment(date).format(\"DD.MM.YYYY\"),\n days: days === 0 ? null : days,\n hideLoader: true\n });\n }\n\n function downloadEml(history) {\n return $http({\n url: apiAddress + \"/user/mail/download\",\n method: \"POST\",\n data: history,\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n\n }\n\n return {\n getCalendar: getCalendar,\n downloadEml: downloadEml\n };\n\n}];","export default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"albumConfig\",\n function($http, $log, store, moment, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getComponents() {\n return $http.get(apiAddress + \"/components\");\n }\n\n function getComponent(compId) {\n return $http.get(apiAddress + \"/component/\" + compId);\n }\n\n function saveComponent(component) {\n return $http.post(apiAddress + \"/component/save\", component);\n }\n\n function setComponentInactive(component) {\n return $http.post(apiAddress + \"/component/inactive\", component);\n }\n\n function getComponentsKeyValue() {\n return $http.get(apiAddress + \"/components/keyvalue\");\n }\n\n function generateId(component) {\n return $http.post(apiAddress + \"/component/generate/id\", component);\n }\n\n return {\n getComponents: getComponents,\n getComponent: getComponent,\n saveComponent: saveComponent,\n setComponentInactive: setComponentInactive,\n getComponentsKeyValue: getComponentsKeyValue,\n generateId: generateId\n };\n }\n];\n","import contentDisposition from \"content-disposition\";\n\nexport default [\n \"$http\",\n \"commonApi\",\n \"albumConfig\",\n function ($http, commonApi, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getProjectCustomers(projectId) {\n return $http.get(apiAddress + \"/project/customers/\" + projectId);\n }\n\n function getProjects() {\n return $http.get(apiAddress + \"/projects\");\n }\n\n function getProject(id) {\n return $http.get(apiAddress + \"/project/\" + id);\n }\n\n function upsertProject(project) {\n return $http.post(apiAddress + \"/project/upsert\", project);\n }\n\n function getProjectList() {\n return $http.get(apiAddress + \"/projectlist\");\n }\n\n function getSections(projTable) {\n return $http.get(\n apiAddress + \"/project/\" + projTable + \"/sections\"\n );\n }\n\n function getSection(projTable, sectionId) {\n return $http.get(\n apiAddress + \"/project/\" + projTable + \"/section/\" + sectionId\n );\n }\n\n function getProjectWithSections(projTable) {\n return $http.get(\n apiAddress + \"/project/\" + projTable + \"/customersections\"\n );\n }\n\n function getContacts(projId) {\n return $http.get(apiAddress + \"/project/\" + projId + \"/contacts\");\n }\n\n function getOrganization(projId) {\n return $http.get(\n apiAddress + \"/project/\" + projId + \"/organization\"\n );\n }\n\n function upsertProjOrganization(po) {\n return $http.post(\n apiAddress + \"/project/projorganization/update\",\n po\n );\n }\n\n function importProjOrganizations(req) {\n return $http.post(apiAddress + \"/project/organization/import\", req);\n }\n\n function exportProjOrganization(dto) {\n return $http({\n url: apiAddress + \"/export/organization\",\n data: dto,\n method: \"POST\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function updateProjOrganizationPermissions(po) {\n return $http.post(apiAddress + \"/project/projorganization/update/permissions\", po, { hideLoader: true });\n }\n\n function getBluePrints(projectId) {\n return $http.get(\n apiAddress + \"/project/\" + projectId + \"/blueprints\"\n );\n }\n\n function downloadBluePrints(projectId, download) {\n return $http({\n url:\n apiAddress +\n \"/project/\" +\n projectId +\n \"/blueprints/download\",\n data: download,\n method: \"POST\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function updateInformation(info) {\n return $http.post(apiAddress + \"/project/info/update\", info);\n }\n\n function getInfo(projId) {\n return $http.get(apiAddress + \"/project/\" + projId + \"/info\");\n }\n\n function searchProjects(search) {\n return $http.get(apiAddress + \"/projects/search/\" + search);\n }\n\n function importContactList(fromProjectId, toProjectId) {\n return $http.post(apiAddress + \"/project/projcontact/import\", {\n fromProjectId: fromProjectId,\n toProjectId: toProjectId\n });\n }\n\n function getOptions(projectId) {\n return $http.get(apiAddress + \"/project/\" + projectId + \"/options\");\n }\n\n function getOption(projectOptionId) {\n return $http.get(apiAddress + \"/project/option/\" + projectOptionId);\n }\n\n function getAberrations(projectId) {\n return $http.get(\n apiAddress + \"/project/\" + projectId + \"/aberrations\"\n );\n }\n\n function gnrsAndBnrs(projectId) {\n return $http.get(\n apiAddress + \"/project/\" + projectId + \"/gnrsandbnrs\"\n );\n }\n\n function updateProjId(project) {\n return $http.post(apiAddress + \"/project/id/update\", project);\n }\n\n function loadImage(projectId) {\n return $http.get(apiAddress + \"/project/\" + projectId + \"/image\");\n }\n\n function postNewsletter(projectNewsletter) {\n return $http.post(\n apiAddress + \"/project/newsletter\",\n projectNewsletter\n );\n }\n\n const parentProjectList = () => {\n return $http.get(apiAddress + \"/project/parentprojects\");\n };\n\n function getInfotechProjects() {\n return $http.get(apiAddress + \"/project/infotechprojects\");\n }\n\n function getCrewRegistrations(filter) {\n return $http.post(\n apiAddress + \"/project/crewregistrations\",\n filter\n );\n }\n\n function getCrewAccess(projectId) {\n return $http.get(apiAddress + `/project/${projectId}/crewaccess`);\n }\n\n function putCrewRegistration(projCrewRegistration) {\n return $http.put(\n apiAddress + \"/project/crewregistration\",\n projCrewRegistration\n );\n }\n\n function deleteCrewAccess(projectId, hmsCardNumber) {\n return $http.delete(\n apiAddress +\n `/project/${projectId}/crewaccess?hmsCardNumber=${hmsCardNumber}`\n );\n }\n\n function getCrewAccessOrgData(crewAccessList) {\n return $http.post(\n apiAddress + \"/project/crewaccess\",\n crewAccessList,\n { hideLoader: true }\n );\n }\n\n function getPsiAcceptedDate(projectId, contactPersonId) {\n return $http.get(\n apiAddress + `/project/${projectId}/psi/${contactPersonId}`\n );\n }\n\n function getPsiAccepted(projectId) {\n return $http.get(\n apiAddress + `/project/${projectId}/psi`\n );\n }\n\n function transformDownload(data, headers) {\n var fileName;\n var contentType;\n var contentLength;\n var cd = headers(\"content-disposition\");\n if (cd) {\n var disposition = contentDisposition.parse(cd);\n fileName = disposition.parameters.filename;\n }\n\n if (!fileName) {\n fileName = \"filnavn.mangler\";\n }\n\n contentType = headers()[\"content-type\"];\n contentLength = headers()[\"content-length\"];\n\n var newData = {};\n newData.blob = data;\n newData.name = fileName;\n newData.contentType = contentType;\n newData.fileSize = contentLength;\n\n return newData;\n }\n\n function exportCrewRegistrations(filter) {\n return $http({\n url: apiAddress + \"/project/crewregistrations/export\",\n data: filter,\n method: \"POST\",\n responseType: \"blob\",\n transformResponse: transformDownload\n });\n }\n\n return {\n getProjectCustomers: getProjectCustomers,\n getProject: getProject,\n getProjects: getProjects,\n upsertProject: upsertProject,\n\n getProjectList: getProjectList,\n getProjectWithSections: getProjectWithSections,\n\n getSections: getSections,\n getSection: getSection,\n\n getContacts: getContacts,\n getOrganization: getOrganization,\n upsertProjOrganization: upsertProjOrganization,\n importProjOrganizations: importProjOrganizations,\n getInfo: getInfo,\n updateInformation: updateInformation,\n searchProjects: searchProjects,\n importContactList: importContactList,\n exportProjOrganization: exportProjOrganization,\n updateProjOrganizationPermissions: updateProjOrganizationPermissions,\n getBluePrints: getBluePrints,\n downloadBluePrints: downloadBluePrints,\n\n getOptions: getOptions,\n getOption: getOption,\n getAberrations: getAberrations,\n\n gnrsAndBnrs: gnrsAndBnrs,\n updateProjId: updateProjId,\n loadImage: loadImage,\n postNewsletter: postNewsletter,\n parentProjectList: parentProjectList,\n getInfotechProjects: getInfotechProjects,\n getCrewRegistrations: getCrewRegistrations,\n getCrewAccess: getCrewAccess,\n putCrewRegistration: putCrewRegistration,\n deleteCrewAccess: deleteCrewAccess,\n getCrewAccessOrgData: getCrewAccessOrgData,\n exportCrewRegistrations: exportCrewRegistrations,\n getPsiAcceptedDate: getPsiAcceptedDate,\n getPsiAccepted: getPsiAccepted\n };\n }\n];\n","export default [\n \"$http\",\n \"$log\",\n \"commonApi\",\n \"albumConfig\",\n function ($http, $log, commonApi, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getMinutes(projId) {\n return $http.get(apiAddress + \"/project/\" + projId + \"/minutes\");\n }\n\n function getMinute(minuteId) {\n return $http.get(apiAddress + \"/project/minutes/\" + minuteId);\n }\n\n function populateRecipients(recipients) {\n return $http.post(\n apiAddress + \"/project/minutes/recipients/populate\",\n recipients\n );\n }\n\n function downloadMinute(minute) {\n var updateMinuteRequest = {\n participants: minute.participants,\n recipients: minute.recipients,\n minute: minute,\n minuteRegistrations: minute.registrationLines,\n projAberrations: minute.aberrations\n };\n\n return $http({\n url: apiAddress + \"/project/minute/preview\",\n method: \"POST\",\n responseType: \"blob\",\n data: updateMinuteRequest,\n transformResponse: commonApi.transformDownload\n });\n }\n\n function downloadAllMinutes(projectId) {\n return $http({\n url: apiAddress + \"/project/\" + projectId + \"/minutes/download\",\n method: \"GET\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function createMinute(createMinuteRequest) {\n return $http.post(\n apiAddress + \"/project/minute/create\",\n createMinuteRequest\n );\n }\n\n function updateMinute(minute) {\n var updateMinuteRequest = {\n participants: minute.participants,\n recipients: minute.recipients,\n minute: minute,\n minuteRegistrations: minute.registrationLines\n };\n\n return $http.post(\n apiAddress + \"/project/minute/update\",\n updateMinuteRequest\n );\n }\n\n function deleteMinute(minute) {\n return $http.post(apiAddress + \"/project/minute/delete\", minute);\n }\n\n function sendMinute(minute, body, attachments) {\n var updateMinuteRequest = {\n participants: minute.participants,\n recipients: minute.recipients,\n minute: minute,\n attachments: attachments,\n minuteRegistrations: minute.registrationLines,\n projAberrations: minute.aberrations,\n body: body\n };\n\n commonApi.transformAttachments(updateMinuteRequest.attachments);\n\n return $http.post(\n apiAddress + \"/project/minute/send\",\n updateMinuteRequest\n );\n }\n\n function addMinuteHeader(header) {\n return $http.post(apiAddress + \"/project/minute/addheader\", header);\n }\n\n function deleteHeader(header) {\n return $http.post(\n apiAddress + \"/project/minute/deleteheader\",\n header\n );\n }\n\n function updateHeader(header) {\n header.hideLoader = true;\n\n return $http.post(\n apiAddress + \"/project/minute/updateheader\",\n header\n );\n }\n\n function addLine(line) {\n return $http.post(apiAddress + \"/project/minute/addline\", line);\n }\n\n function deleteLine(line) {\n return $http.post(apiAddress + \"/project/minute/deleteline\", line);\n }\n\n function updateLine(line) {\n line.hideLoader = true;\n return $http.post(apiAddress + \"/project/minute/updateline\", line);\n }\n\n const getLog = minuteId => {\n return $http.get(`${apiAddress}/minute/${minuteId}/log`);\n };\n\n return {\n getMinutes: getMinutes,\n getMinute: getMinute,\n populateRecipients: populateRecipients,\n updateMinute: updateMinute,\n createMinute: createMinute,\n downloadMinute: downloadMinute,\n downloadAllMinutes: downloadAllMinutes,\n deleteMinute: deleteMinute,\n sendMinute: sendMinute,\n addMinuteHeader: addMinuteHeader,\n deleteHeader: deleteHeader,\n updateHeader: updateHeader,\n addLine: addLine,\n deleteLine: deleteLine,\n updateLine: updateLine,\n getLog: getLog\n };\n }\n];\n","import viewerModalHtml from \"shared/viewermodal.html\";\nimport saveFile from \"shared/saveFile\";\nimport { forEach, includes } from \"lodash\";\nimport contentDisposition from \"content-disposition\";\n\nexport default [\n \"$http\",\n \"moment\",\n \"store\",\n \"albumConfig\",\n \"$uibModal\",\n\n function ($http, moment, store, albumConfig, $uibModal) {\n var apiAddress = albumConfig.apiAddress;\n\n function getDateTime(date, time) {\n var m = moment(date);\n if (time) {\n time = time.split(\":\");\n m.set(\"hour\", time[0]);\n m.set(\"minute\", time[1]);\n m.set(\"second\", 0);\n m.set(\"millisecond\", 0);\n }\n\n return m.toDate();\n }\n\n function exportTable(exportObj) {\n return $http({\n url: apiAddress + \"/export\",\n data: exportObj,\n method: \"POST\",\n responseType: \"blob\",\n transformResponse: transformDownload\n });\n }\n\n function transformDownload(data, headers) {\n var fileName;\n var contentType;\n var contentLength;\n var cd = headers(\"content-disposition\");\n if (cd) {\n var disposition = contentDisposition.parse(cd);\n fileName = disposition.parameters.filename;\n }\n\n if (!fileName) {\n fileName = \"filnavn.mangler\";\n }\n\n contentType = headers()[\"content-type\"];\n contentLength = headers()[\"content-length\"];\n\n var newData = {};\n newData.blob = data;\n newData.name = fileName;\n newData.contentType = contentType;\n newData.fileSize = contentLength;\n\n return newData;\n }\n\n function transformAttachments(attachments) {\n forEach(attachments, function (a) {\n if (a.newAttachment) {\n for (var k in a.newAttachment) a[k] = a.newAttachment[k];\n delete a.newAttachment;\n }\n });\n\n forEach(attachments, a => {\n if (a.filetype) {\n a.contentType = a.filetype;\n }\n });\n }\n\n function updateNotes(noteReq) {\n return $http.post(apiAddress + \"/common/updatenotes\", noteReq);\n }\n\n function getParameters() {\n return $http.get(apiAddress + \"/common/parameters\");\n }\n\n function getAllMeetings() {\n return $http.get(apiAddress + \"/common/allminutes\");\n }\n\n function getAppointment(id) {\n return $http.get(\n `${apiAddress}/calendaritem?id=${encodeURIComponent(id)}`,\n {\n hideLoader: true,\n cache: true\n }\n );\n }\n\n function calcDeliveryDate(scheduleStartDate) {\n var dm = moment(scheduleStartDate);\n dm.subtract(2, \"days\");\n\n //Hvis det er søndag,lørdag eller fredag, trekk fra 1 dag til vi kommer til forrige torsdag\n while (\n dm.weekday() === 4 ||\n dm.weekday() === 5 ||\n dm.weekday() === 6\n ) {\n dm.subtract(1, \"days\");\n }\n\n if ((!dm.isAfter, moment())) {\n return new Date();\n }\n\n return dm.toDate();\n }\n\n function getModuleTypes(projType) {\n return $http.get(apiAddress + \"/common/moduletypes/\" + projType);\n }\n\n function getAccounts() {\n return $http.get(apiAddress + \"/common/accounts\");\n }\n\n function getWeekNumber(d) {\n return [moment(d).isoWeekYear(), moment(d).isoWeek()];\n }\n\n function getFinanceStatuses() {\n return $http.get(apiAddress + \"/common/financestatuses\");\n }\n\n /* eslint-disable max-len */\n function validateEmail(str) {\n var filter = /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$/i;\n if (filter.test(str)) return true;\n else {\n return false;\n }\n }\n\n function getProfile() {\n return $http\n .get(apiAddress + \"/common/profile\")\n .then(function (res) {\n store.set(\"profile\", res.data);\n return res;\n });\n }\n\n function getBlogs() {\n return $http.get(apiAddress + \"/common/blogs\", {\n hideLoader: true,\n cache: true\n });\n }\n\n function getNewsfeed(albumUserName, feedLimit, hiddenGroups) {\n return $http.get(`${apiAddress}/workplace/feed?albumUserName=${albumUserName}&hideGroupIds=${hiddenGroups}&feedLimit=${feedLimit}`, {\n hideLoader: true\n });\n }\n\n function getDefinitions() {\n return $http.get(apiAddress + \"/common/definitions\", {\n hideLoader: true,\n cache: true\n });\n }\n\n function getBCProjects() {\n return $http.get(apiAddress + \"/common/businesscentral/projects\", {\n hideLoader: true\n });\n }\n\n function getBCProjectLines() {\n return $http.get(apiAddress + \"/common/businesscentral/projectlines\", {\n hideLoader: true\n });\n }\n\n var isImage = function (contentType) {\n return includes(imagesTypesSupported, contentType);\n };\n var imagesTypesSupported = [\"image/jpeg\", \"image/png\"];\n\n function downloadOrOpen(res, files) {\n if (files.length === 0) {\n saveFile(res);\n return;\n }\n\n if (isImage(res.data.contentType)) {\n //openImg(res.data, files);\n if (res.data.guid !== undefined) {\n files = files.filter(\n files =>\n (files.contentType === \"image/jpeg\" ||\n files.contentType === \"image/png\") &&\n files.status === 0\n );\n\n openFileViewerModal(files, res.data);\n }\n } else {\n saveFile(res);\n }\n }\n\n function getRegLines() {\n return $http.get(apiAddress + \"/common/reglines/kk\", {\n hideLoader: true,\n cache: true\n });\n }\n\n function openFileViewerModal(files, file) {\n return $uibModal.open({\n template: viewerModalHtml,\n size: \"lg carouselViewer\",\n controllerAs: \"modalvm\",\n controller: [\n \"files\",\n \"file\",\n \"$uibModalInstance\",\n function (files, file, $uibModalInstance) {\n this.file = file;\n this.files = files;\n this.cancel = function () {\n $(\".carousel\").carousel(\"dispose\");\n $uibModalInstance.close();\n };\n }\n ],\n resolve: {\n files: [\n function () {\n return files;\n }\n ],\n file: [\n function () {\n return file;\n }\n ]\n }\n });\n }\n\n return {\n getDateTime: getDateTime,\n exportTable: exportTable,\n transformAttachments: transformAttachments,\n transformDownload: transformDownload,\n validateEmail: validateEmail,\n updateNotes: updateNotes,\n getParameters: getParameters,\n getAllMeetings: getAllMeetings,\n getAppointment: getAppointment,\n calcDeliveryDate: calcDeliveryDate,\n getWeekNumber: getWeekNumber,\n getModuleTypes: getModuleTypes,\n getAccounts: getAccounts,\n getFinanceStatuses: getFinanceStatuses,\n getProfile: getProfile,\n getBlogs: getBlogs,\n getNewsfeed: getNewsfeed,\n getDefinitions: getDefinitions,\n downloadOrOpen: downloadOrOpen,\n getRegLines: getRegLines,\n openFileViewerModal: openFileViewerModal,\n getBCProjects: getBCProjects,\n getBCProjectLines: getBCProjectLines\n };\n }\n];\n","export default \"
\\n\\n \\n\\n
\\n
\\n\\n \\n
\";","import { some, find } from \"lodash\";\nimport versionLogHtml from \"shared/versionLog/versionLog.html\";\nimport versionLogCtrl from \"shared/versionLog/versionLog.js\";\n\nimport updateProcessVersionCtrl from \"shared/updateProcessVersion\";\nimport updateProcessVersionHtml from \"shared/updateProcessVersion.html\";\n\nexport default [\n \"$http\",\n \"$log\",\n \"$uibModal\",\n \"$q\",\n \"store\",\n \"albumConfig\",\n function ($http, $log, $uibModal, $q, store, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n const completeEventProcess = (event) => {\n return $http.post(apiAddress + \"/process/planned/complete\", event);\n };\n\n const getEventProcess = (eventId) => {\n return $http.get(apiAddress + `/process/planned/${eventId}`);\n };\n const plannedProcesses = () => {\n return $http.get(apiAddress + \"/process/planned\");\n };\n\n function saveNewVersion(process) {\n return $http.post(apiAddress + \"/process/version/new\", process);\n }\n\n function askApproval(process) {\n return $http.post(apiAddress + \"/process/approval\", process);\n }\n\n function saveProcess(process) {\n return $http.post(apiAddress + \"/process/save\", process);\n }\n\n function getProcesses() {\n return $http.get(apiAddress + \"/processes\");\n }\n\n function getPermissions(process) {\n var deferred = $q.defer();\n\n var profile = store.get(\"profile\");\n\n var allowedByRole = some(profile.roles, function (r) {\n return r === \"Admin\" || r === \"ProcessAdmin\";\n });\n\n if (allowedByRole) {\n deferred.resolve({\n projTypeId: \"*\",\n tradeCodeId: \"*\",\n edit: true,\n approve: true\n });\n\n return deferred.promise;\n }\n\n getTradeCodePermissions().then((response) => {\n var permissions = find(response.data, function (tcp) {\n return (\n tcp.tradeCodeId == process.tradeCodeId &&\n tcp.projTypeId == process.projTypeId &&\n (tcp.edit || tcp.approve)\n );\n });\n\n deferred.resolve(permissions || {});\n });\n\n return deferred.promise;\n }\n function getTradeCodePermissions() {\n return $http.get(`${apiAddress}/user/tradecodepermissions`);\n }\n function getProcess(id) {\n return $http.get(apiAddress + \"/process/\" + id);\n }\n\n function getReadProcess(id) {\n return $http.get(apiAddress + \"/process/read/\" + id);\n }\n\n function getProcessActivities(id) {\n return $http.get(apiAddress + \"/process/\" + id + \"/activities\");\n }\n\n function getProcessComponents(id) {\n return $http.get(apiAddress + \"/process/\" + id + \"/components\");\n }\n\n function approveVersion(process) {\n return $http.post(apiAddress + \"/process/version/approve\", process);\n }\n\n function downloadProcessDocument(id) {\n return $http({\n url: apiAddress + \"/process/\" + id + \"/download\",\n method: \"GET\",\n responseType: \"blob\"\n });\n }\n\n function getSchedules(processId) {\n return $http.get(\n apiAddress + \"/process/\" + processId + \"/schedules\"\n );\n }\n\n function deleteProcess(process) {\n return $http.post(apiAddress + \"/process/delete\", process);\n }\n\n function addProcessData(ppId) {\n return $http.get(\n apiAddress + \"/process/\" + ppId + \"/addproccessdata\"\n );\n }\n\n function getProcessComponentCalculations(processComponentId) {\n return $http.get(\n `${apiAddress}/processcomponents/calculations/${processComponentId}`\n );\n }\n\n function createProcessComponent(processId, component) {\n return $http.post(\n apiAddress + \"/process/\" + processId + \"/components/add\",\n component\n );\n }\n\n function deleteProcessComponent(processId, component) {\n return $http.post(\n apiAddress + \"/process/\" + processId + \"/components/delete\",\n component\n );\n }\n\n function updateProcessComponent(component) {\n return $http.put(\n apiAddress + \"/process/component\",\n component,\n {\n hideLoader: true\n }\n );\n }\n\n function updateModuleCalculations(processId, calculations) {\n return $http.post(\n `${apiAddress}/process/${processId}/calculations/update`,\n calculations\n );\n }\n\n function toggleActive(process) {\n return $http.post(apiAddress + \"/process/toggle/active\", process);\n }\n\n function updateProcessesModal(updates) {\n var modalInstance = $uibModal.open({\n size: \"lg\",\n template: updateProcessVersionHtml,\n controllerAs: \"modalvm\",\n controller: updateProcessVersionCtrl,\n resolve: {\n updates: [\n () => {\n return updates;\n }\n ]\n }\n });\n\n return modalInstance.result;\n }\n\n function versionLogModal(process) {\n return $uibModal.open({\n template: versionLogHtml,\n size: \"lg\",\n controllerAs: \"modalvm\",\n resolve: {\n process: [\n function () {\n return process;\n }\n ],\n versionLog: [\n function () {\n return $http.get(\n apiAddress +\n \"/process/\" +\n process.originalId +\n \"/versionslog\"\n );\n }\n ]\n },\n controller: versionLogCtrl\n });\n }\n\n function planEventData() {\n return $http.get(apiAddress + \"/process/planeventdata\");\n }\n\n function addPlannedEvent(plannedEvent) {\n return $http.post(\n apiAddress + \"/process/planned/add\",\n plannedEvent\n );\n }\n\n function prepareUpdateProcessesToLastVersion(request) {\n return $http.post(\n `${apiAddress}/process/prepareupdateversion`,\n request\n );\n }\n\n function updateProcessesToLastVersion(request) {\n return $http.post(`${apiAddress}/process/updateversion`, request);\n }\n\n function getLinkedProcesses(processId) {\n return $http.get(apiAddress + `/process/${processId}/linked`);\n }\n\n return {\n completeEventProcess: completeEventProcess,\n getEventProcess: getEventProcess,\n plannedProcesses: plannedProcesses,\n getProcesses: getProcesses,\n getProcess: getProcess,\n getPermissions: getPermissions,\n getReadProcess: getReadProcess,\n getProcessActivities: getProcessActivities,\n getProcessComponents: getProcessComponents,\n saveNewVersion: saveNewVersion,\n askApproval: askApproval,\n saveProcess: saveProcess,\n approveVersion: approveVersion,\n downloadProcessDocument: downloadProcessDocument,\n getSchedules: getSchedules,\n deleteProcess: deleteProcess,\n addProcessData: addProcessData,\n getProcessComponentCalculations: getProcessComponentCalculations,\n createProcessComponent: createProcessComponent,\n deleteProcessComponent: deleteProcessComponent,\n updateProcessComponent: updateProcessComponent,\n updateModuleCalculations: updateModuleCalculations,\n toggleActive: toggleActive,\n updateProcessesModal: updateProcessesModal,\n versionLogModal: versionLogModal,\n planEventData: planEventData,\n addPlannedEvent: addPlannedEvent,\n updateProcessesToLastVersion: updateProcessesToLastVersion,\n prepareUpdateProcessesToLastVersion:\n prepareUpdateProcessesToLastVersion,\n getLinkedProcesses: getLinkedProcesses\n };\n }\n];\n","export default \"
\\n

Oppdater versjon på prosesser

\\n
\\n
\\n\\n\\n\\n \\n
\\n
\\n \\n \\n
\";","export default \"
\\n\\n

Versjonslogg for: {{modalvm.processName}}

\\n
\\n
\\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n
VersjonIdFraTilModellKommentarOpprettet av
{{log.version}}\\n {{log.id}}\\n {{log.from| date:'dd.MM.yyyy'}}{{log.to| date:'dd.MM.yyyy'}}{{log.modelName}}{{log.comment}}{{log.createdBy}}
\\n
\\n
\\n \\n \\n
\";","import reglineHtml from \"shared/regline.html\";\nimport reglineCtrl from \"shared/regline.js\";\nexport default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"$uibModal\",\n \"commonApi\",\n \"albumConfig\",\n function ($http, $log, store, moment, $uibModal, commonApi, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function addRegLine(regLine) {\n return $http.post(\n apiAddress + \"/registrations/regline/add\",\n regLine\n );\n }\n\n function saveNewReg(regLine) {\n return $http.post(\n apiAddress + \"/registrations/newreg/save\",\n regLine\n );\n }\n\n function getNewRegLine(regLine) {\n if (regLine.regHeaderId) {\n return $http.get(\n apiAddress +\n \"/registrations/\" +\n regLine.regHeaderId +\n \"/newregline\"\n );\n } else {\n return $http.post(\n apiAddress + \"/registrations/newreg\",\n regLine\n );\n }\n }\n\n function getRegLine(id) {\n return $http.get(apiAddress + \"/registrations/\" + id);\n }\n\n function getRegistrations(req) {\n return $http.post(apiAddress + \"/registrations\", req);\n }\n\n function getRegistration(req) {\n return $http.post(apiAddress + \"/registration\", req);\n }\n\n function getRegistrationLine(regOid, regLineId) {\n return $http.get(\n apiAddress + \"/registration/line/\" + regOid + \"/\" + regLineId\n );\n }\n\n function getLines(regOid) {\n return $http.get(apiAddress + \"/registration/lines/\" + regOid);\n }\n\n /* function deleteReg(reg) {\n return $http.post(apiAddress + \"/registration/delete\", reg);\n } */\n\n /* function deleteLine(regLine) {\n return $http.post(apiAddress + \"/registration/line/delete\", regLine);\n } */\n\n function getRegistrationContactPersons(contactId) {\n return $http.get(\n apiAddress + \"/registration/contactpersons/\" + contactId\n );\n }\n\n function validateRegistrationLine(regLine) {\n commonApi.transformAttachments(regLine.attachments);\n regLine.regHeaderId = regLine.projRegistrationId;\n return $http.post(\n apiAddress + \"/registration/line/validate\",\n regLine\n );\n }\n\n function saveRegistrationLine(regLine) {\n commonApi.transformAttachments(regLine.attachments);\n regLine.regHeaderId = regLine.projRegistrationId;\n return $http.post(apiAddress + \"/registration/line/save\", regLine);\n }\n\n function updateReg(regLine) {\n commonApi.transformAttachments(regLine.attachments);\n return $http.post(\n apiAddress + \"/registration/line/update\",\n regLine\n );\n }\n\n function saveRegistration(registration) {\n //var isDate = moment.isDate(registration.timeLimit);\n\n return $http.post(apiAddress + \"/registration/save\", registration);\n }\n\n function downloadRegLineWorkOrder(regLineId, attachments) {\n let url = `${apiAddress}/registration/line/download/${regLineId}`;\n if (attachments && attachments.downloadAttachments) {\n url += \"?includeAttachments=true\";\n }\n else if (attachments && attachments.downloadImages) {\n url += \"?includeImages=true\";\n }\n\n return $http({\n url: url,\n method: \"GET\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function exportTable(tableState) {\n return $http({\n url: apiAddress + \"/export/registrations\",\n method: \"POST\",\n data: tableState,\n responseType: \"blob\"\n });\n }\n\n function exportExcel(tableData) {\n return $http({\n url: apiAddress + \"/export/reglines\",\n method: \"POST\",\n data: tableData,\n responseType: \"blob\"\n });\n }\n\n function exportWorkOrders(tableState) {\n return $http({\n url: apiAddress + \"/registrations/workorders\",\n method: \"POST\",\n data: tableState,\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function exportWorkOrdersFromLines(lines) {\n return $http({\n url: apiAddress + \"/registrations/workorders/fromlines\",\n method: \"POST\",\n data: lines,\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function sendReminder(line) {\n return $http.post(apiAddress + \"/registration/line/reminder\", line);\n }\n\n function getRegLineLog(regLineId) {\n return $http.get(\n apiAddress + \"/registration/line/log/\" + regLineId\n );\n }\n\n function getRegistrationsOpen(projectId) {\n return $http.get(\n apiAddress + \"/registration/lines/open/\" + projectId\n );\n }\n\n function createFromChecklistItem(req) {\n return $http.post(\n apiAddress + \"/registration/createfromchecklistitem\",\n req\n );\n }\n\n function getRegLines(tableData) {\n return $http.post(\n apiAddress + \"/registrations/reglines\",\n tableData\n );\n }\n\n function regLineModal(context) {\n var modalInstance = $uibModal.open({\n template: reglineHtml,\n controllerAs: \"modalvm\",\n backdrop: \"static\",\n resolve: {\n regSources: [\n function () {\n return $http.get(apiAddress + \"/registration/sources\");\n }\n ],\n context: [\n function () {\n return context;\n }\n ]\n },\n controller: reglineCtrl\n });\n\n return modalInstance;\n }\n\n return {\n addRegLine: addRegLine,\n saveNewReg: saveNewReg,\n getNewRegLine: getNewRegLine,\n getRegLine: getRegLine,\n getRegistration: getRegistration,\n getRegistrations: getRegistrations,\n getRegistrationLine: getRegistrationLine,\n getLines: getLines,\n getRegistrationContactPersons: getRegistrationContactPersons,\n validateRegistrationLine: validateRegistrationLine,\n saveRegistrationLine: saveRegistrationLine,\n updateReg: updateReg,\n saveRegistration: saveRegistration,\n downloadRegLineWorkOrder: downloadRegLineWorkOrder,\n exportTable: exportTable,\n exportExcel: exportExcel,\n exportWorkOrders: exportWorkOrders,\n exportWorkOrdersFromLines: exportWorkOrdersFromLines,\n sendReminder: sendReminder,\n getRegLineLog: getRegLineLog,\n getRegistrationsOpen: getRegistrationsOpen,\n createFromChecklistItem: createFromChecklistItem,\n getRegLines: getRegLines,\n regLineModal: regLineModal\n };\n }\n];\n","export default \"
\\n

\\n Ny reklamasjon\\n

\\n
\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n
\";","export default [\"$http\", \"$log\", \"store\", \"moment\", \"commonApi\", \"albumConfig\", \"toastr\",\n function ($http, $log, store, moment, commonApi, albumConfig, toastr) {\n var apiAddress = albumConfig.apiAddress;\n\n function downloadAttachment(att, container) {\n\n\n if (att.guid) {\n\n var url = `${apiAddress}/blob/download/${att.guid}`;\n\n if (container) {\n url += `?container=${container}`;\n }\n\n return $http({\n url: url,\n method: \"GET\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n } else {\n toastr.error(\"Feil ved nedlasting\");\n $log.error(\"guid not present on\", att);\n }\n\n\n }\n\n let upload = blobs => {\n return $http.post(`${apiAddress}/blob/upload`, blobs);\n };\n let deleteBlobs = blobs => {\n return $http.post(`${apiAddress}/blob/delete`, blobs);\n };\n\n return {\n downloadAttachment: downloadAttachment,\n upload: upload,\n deleteBlobs: deleteBlobs\n\n };\n\n\n }\n];","import { filter, get } from \"lodash\";\nexport default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"albumConfig\",\n function ($http, $log, store, moment, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getOrderLinesNotOrdered(orders) {\n var filtered = filter(orders, function (o) {\n return !o.orderDate && !o.postpone;\n });\n\n return filtered;\n }\n\n function getOrders() {\n return $http.get(apiAddress + \"/orders\");\n }\n\n function getOrder(orderId) {\n return $http.get(apiAddress + \"/order/\" + orderId);\n }\n\n function postReceivedGoods(orderId, orderLines) {\n return $http.post(apiAddress + `/order/${orderId}/receivedgoods`, orderLines);\n }\n\n function GeneratePdf(orders, contactInformation, neworder) {\n return $http({\n url: apiAddress + \"/order/generatepdf\",\n method: \"POST\",\n responseType: \"blob\",\n data: {\n orders: orders,\n contactInformations: [contactInformation],\n neworder: neworder\n }\n });\n }\n\n function downloadOrderPdf(orderId) {\n return $http({\n url: apiAddress + \"/order/download/\" + orderId,\n method: \"GET\",\n responseType: \"blob\"\n });\n }\n\n function createOrder(orders, schedule, contactInformations, neworder) {\n neworder.contactPersonName = get(\n neworder,\n \"contactPerson.contactPersonName\",\n \"\"\n );\n neworder.contactPersonMobile = get(\n neworder,\n \"contactPerson.mobile\",\n \"\"\n );\n neworder.contactPersonId = get(\n neworder,\n \"contactPerson.contactPersonId\",\n \"\"\n );\n neworder.contactPerson = {};\n\n var orderRequest = {\n orders: orders,\n projPhase: schedule.projPhase,\n processId: schedule.processId,\n projectId: schedule.projectId,\n scheduleId: schedule.id,\n contactInformations: contactInformations,\n neworder: neworder\n };\n\n return $http.post(apiAddress + \"/order/create\", orderRequest);\n }\n\n return {\n getOrders: getOrders,\n getOrder: getOrder,\n GeneratePdf: GeneratePdf,\n createOrder: createOrder,\n getOrderLinesNotOrdered: getOrderLinesNotOrdered,\n downloadOrderPdf: downloadOrderPdf,\n postReceivedGoods: postReceivedGoods\n };\n }\n];\n","export default [\n \"$http\",\n \"albumConfig\",\n function($http, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n const addSubscription = subscription => {\n return $http.post(`${apiAddress}/subscription/add`, subscription);\n };\n\n const removeSubscription = subscription => {\n return $http.post(\n `${apiAddress}/subscription/remove`,\n subscription\n );\n };\n\n return {\n add: addSubscription,\n remove: removeSubscription\n };\n }\n];\n","export default [\"$http\", \"$log\", \"store\", \"moment\", \"albumConfig\", function ($http, $log, store, moment, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function saveBudget(budget) {\n return $http.post(apiAddress + \"/budget/save\", budget);\n }\n\n function getBudget(yr) {\n return $http.get(apiAddress + \"/budget/\" + yr);\n }\n\n function addBudget(budget) {\n return $http.post(apiAddress + \"/budget/add\", budget);\n }\n\n function deleteBudget(budget) {\n return $http.post(apiAddress + \"/budget/delete\", budget);\n }\n\n function searchContracts(filter) {\n return $http.post(apiAddress + \"/contracts/search\", filter);\n }\n\n function exportContracts(contracts) {\n return $http({\n url: apiAddress + \"/export/contractanalysis/contracts\",\n data: contracts,\n method: \"POST\",\n responseType: \"blob\"\n });\n }\n\n function exportCancelations(cancelations) {\n return $http({\n url: apiAddress + \"/export/contractanalysis/cancelations\",\n data: cancelations,\n method: \"POST\",\n responseType: \"blob\"\n });\n }\n\n return {\n saveBudget: saveBudget,\n getBudget: getBudget,\n addBudget: addBudget,\n searchContracts: searchContracts,\n deleteBudget: deleteBudget,\n exportContracts: exportContracts,\n exportCancelations: exportCancelations\n };\n\n}];","export default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"commonApi\",\n \"albumConfig\",\n function($http, $log, store, moment, commonApi, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getActivity(activityId, processId) {\n const activityUrl = `${apiAddress}/process/${processId}/activities/${activityId}`;\n\n return $http.get(activityUrl);\n }\n\n function deleteActivity(activity) {\n return $http.post(apiAddress + \"/activity/delete\", activity);\n }\n\n function updateActivity(legacyActivity, html) {\n commonApi.transformAttachments(legacyActivity.attachments);\n\n const request = {\n legacyActivity: legacyActivity,\n activity: {\n text: html\n }\n };\n\n return $http.post(apiAddress + \"/activity/update\", request);\n }\n\n function reArrangeActivities(updateReq) {\n return $http.post(apiAddress + \"/activity/rearrange\", updateReq);\n }\n\n let getScheduleActivities = scheduleId => {\n return $http.get(`${apiAddress}/schedule/${scheduleId}/activities`);\n };\n\n const upsertActivity = activity => {\n return $http.post(apiAddress + \"/activity/upsert\", activity);\n };\n const scheduleActivityDelete = activity => {\n return $http.post(\n apiAddress + \"/scheduleactivity/delete\",\n activity\n );\n };\n function scheduleActivityUpdate(activity) {\n return $http.post(\n apiAddress + \"/scheduleactivity/update\",\n activity\n );\n }\n\n function scheduleActivityAberration(aberration) {\n return $http.post(\n apiAddress + \"/scheduleactivity/aberration\",\n aberration\n );\n }\n\n const addCopy = (duplicate, indexing) => {\n return $http.post(apiAddress + \"/scheduleactivity/addcopy\", {\n duplicate,\n indexing\n });\n };\n\n const addActivityToProcess = processId => {\n return $http.post(\n `${apiAddress}/process/${processId}/activities/add`\n );\n };\n\n return {\n getActivity: getActivity,\n updateActivity: updateActivity,\n deleteActivity: deleteActivity,\n reArrangeActivities: reArrangeActivities,\n getScheduleActivities: getScheduleActivities,\n upsertActivity: upsertActivity,\n scheduleActivityDelete: scheduleActivityDelete,\n scheduleActivityUpdate: scheduleActivityUpdate,\n scheduleActivityAberration: scheduleActivityAberration,\n addCopy: addCopy,\n addActivityToProcess: addActivityToProcess\n };\n }\n];\n","export default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"commonApi\",\n \"albumConfig\",\n function ($http, $log, store, moment, commonApi, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getContractOverview() {\n return $http.get(apiAddress + \"/report/contractoverview\");\n }\n\n function getUnconfirmedContracts() {\n return $http.get(apiAddress + \"/report/unconfirmedcontracts\");\n }\n\n function getSalesStats(year, week, projTypeId) {\n \n return $http.post(apiAddress + \"/report/salesstats\", {\n projTypeId: projTypeId,\n year: year,\n week: week\n });\n }\n\n function getSalesDiagram() {\n return $http.get(apiAddress + \"/report/sales/diagram\", {\n cache: true\n });\n }\n\n function getStats(date1, date2) {\n return $http.post(apiAddress + \"/report/stats\", {\n date1: date1,\n date2: date2\n });\n }\n\n function getConfirmedNotDelivered() {\n return $http.get(apiAddress + \"/report/confirmednotdelivered\");\n }\n\n function getControlPlans() {\n return $http.get(apiAddress + \"/report/controlplan\");\n }\n\n function salesStatsExport(exportObj) {\n return $http({\n url: apiAddress + \"/report/salesstats/export\",\n method: \"POST\",\n data: exportObj,\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function salesStatsExcel(salesStatsRequest) {\n return $http({\n url: apiAddress + \"/report/salesstats/excel\",\n method: \"POST\",\n data: salesStatsRequest,\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function getRegByAge() {\n return $http.get(apiAddress + \"/report/registrations/byage\");\n }\n let getOptions = (from, to) => {\n let options = [\n {\n key: \"from\",\n value: from ? moment(from).toDate() : null\n },\n {\n key: \"to\",\n value: to ? moment(to).toDate() : null\n }\n ];\n\n return options;\n };\n\n function getRegByCategory(from, to) {\n var options = getOptions(from, to);\n\n return $http.post(\n apiAddress + \"/report/registrations/bycategory\",\n options\n );\n }\n\n function getRegbyContractor(from, to) {\n var options = getOptions(from, to);\n return $http.post(\n apiAddress + \"/report/registrations/bycontractor\",\n options\n );\n }\n\n function getRegByCategoryDrilldown(\n from,\n to,\n subCategoryId,\n subCategories\n ) {\n var options = getOptions(from, to);\n options.push(\n {\n key: \"subCategoryId\",\n value: subCategoryId\n },\n {\n key: \"subCategories\",\n value: subCategories\n }\n );\n\n return $http.post(\n apiAddress + \"/report/registrations/bycategory/drilldown\",\n options\n );\n }\n\n function getSectionsMovedin(reportParams) {\n return $http.post(\n apiAddress + \"/report/sectionsmovedin\",\n reportParams\n );\n }\n\n function getBonusReport() {\n return $http.get(apiAddress + \"/report/bonusreport\");\n }\n\n function getConfirmedContracts() {\n return $http.get(apiAddress + \"/report/confirmedcontracts\");\n }\n\n function getMyDeliveredSections() {\n return $http.get(apiAddress + \"/report/mydeliveredsections\");\n }\n\n function getProjectFilter() {\n return $http.get(apiAddress + \"/report/projectfilter\");\n }\n\n function getDailyStats(request) {\n return $http.post(apiAddress + \"/report/dailystats\", request);\n }\n\n function getRegLineLog(from, to) {\n return $http.post(apiAddress + \"/report/reglinelog\", {\n from: from,\n to: to\n });\n }\n\n function getUnSoldDelivered() {\n return $http.get(apiAddress + \"/report/unsolddelivered\");\n }\n\n function salesReportQuarterly(reportParams) {\n return $http({\n url: apiAddress + \"/report/salesreportexcel\",\n method: \"POST\",\n data: reportParams,\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function getProjectPortfolio(parameters) {\n return $http.post(apiAddress + \"/report/projectportfolio\", parameters);\n }\n\n function sectionsOverviewExcel() {\n return $http({\n url: apiAddress + \"/report/sectionsoverview\",\n method: \"GET\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function componentsOverviewExcel() {\n return $http({\n url: apiAddress + \"/report/componentsoverview\",\n method: \"GET\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n return {\n getContractOverview: getContractOverview,\n getUnconfirmedContracts: getUnconfirmedContracts,\n getSalesStats: getSalesStats,\n getSalesDiagram: getSalesDiagram,\n getStats: getStats,\n getConfirmedNotDelivered: getConfirmedNotDelivered,\n getControlPlans: getControlPlans,\n\n salesStatsExport: salesStatsExport,\n salesStatsExcel: salesStatsExcel,\n getRegByAge: getRegByAge,\n getRegByCategory: getRegByCategory,\n getRegByCategoryDrilldown: getRegByCategoryDrilldown,\n getRegbyContractor: getRegbyContractor,\n getSectionsMovedin: getSectionsMovedin,\n getBonusReport: getBonusReport,\n getConfirmedContracts: getConfirmedContracts,\n getMyDeliveredSections: getMyDeliveredSections,\n getProjectFilter: getProjectFilter,\n getDailyStats: getDailyStats,\n getRegLineLog: getRegLineLog,\n getUnSoldDelivered: getUnSoldDelivered,\n salesReportQuarterly: salesReportQuarterly,\n getProjectPortfolio: getProjectPortfolio,\n sectionsOverviewExcel: sectionsOverviewExcel,\n componentsOverviewExcel: componentsOverviewExcel\n };\n }\n];\n","export default [\n \"$http\",\n \"$log\",\n \"$uibModal\",\n \"commonApi\",\n \"albumConfig\",\n function ($http, $log, $uibModal, commonApi, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getProjDocuments(id, useAlbumUser) {\n return $http.get(apiAddress + \"/ibm/project/\" + id + `/documents?useAlbumUser=${useAlbumUser == undefined || useAlbumUser == null ? \"false\" : \"true\"}`);\n }\n\n function getProjDocumentsInFolder(id, uuid, useAlbumUser) {\n return $http.get(apiAddress + \"/ibm/project/\" + id + \"/documents/\" + uuid + `?useAlbumUser=${useAlbumUser == undefined || useAlbumUser == null ? \"false\" : \"true\"}`);\n }\n\n function downloadFileFromConnections(req) {\n return $http({\n url: apiAddress + \"/ibm/document/download\",\n method: \"POST\",\n responseType: \"blob\",\n data: req\n });\n }\n\n function deleteFileFromConnections(doc) {\n return $http.post(apiAddress + \"/ibm/delete\", doc);\n }\n\n function togglePin(doc) {\n return $http.post(apiAddress + \"/ibm/togglepin\", doc);\n }\n\n function meta(documentId) {\n return $http.get(apiAddress + \"/ibm/document/meta/\" + documentId);\n }\n\n function download(documentId, useAlbumUser) {\n if (!useAlbumUser) {\n useAlbumUser = false;\n }\n return $http({\n url: apiAddress + \"/ibm/document/download/\" + documentId + \"?useAlbumUser=\" + useAlbumUser,\n method: \"GET\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function createCommunity(community) {\n return $http.post(apiAddress + \"/ibm/community/create\", community);\n }\n\n function deleteCommunity(community) {\n return $http.post(apiAddress + \"/ibm/community/delete\", community);\n }\n\n function getFolderPermissions(projectId, uuids) {\n return $http.post(apiAddress + \"/ibm/project/\" + projectId + \"/documents/permissions\", uuids, {\n hideLoader: true\n });\n }\n\n function putFolderPermissions(projectId, permissions) {\n return $http.put(apiAddress + \"/ibm/project/\" + projectId + \"/documents/permissions\", permissions);\n }\n\n function getTradeCodes() {\n return $http.get(apiAddress + \"/system/tradecodes?includeInactive=true\", {\n hideLoader: true\n });\n }\n\n function getReplicationJobs(projectId, uuid) {\n return $http.get(apiAddress + `/ibm/repljobs?projectId=${projectId}&folderId=${uuid}`, {\n hideLoader: true\n });\n }\n\n function postReplicationJob(job) { \n return $http.post(apiAddress + \"/ibm/repljob\", job);\n }\n\n function putReplicationJobs(jobs) { \n return $http.put(apiAddress + \"/ibm/repljobs\", jobs);\n }\n\n function getReplicationFiles(uuid) {\n return $http.get(apiAddress + `/ibm/replfiles?folderId=${uuid}`, {\n hideLoader: true\n });\n }\n\n function getFoldersCategories(projectId, uuids) {\n return $http.post(apiAddress + `/ibm/${projectId}/folders/categories`, uuids, {\n hideLoader: true\n });\n }\n\n function putFolderCategory(projectId, uuid, category) {\n return $http.put(apiAddress + `/ibm/${projectId}/folder/${uuid}/category?category=${category}`);\n }\n\n function getCommunities(addProjectInfo) {\n return $http.get(apiAddress + `/ibm/communities?addProjectInfo=${addProjectInfo}`);\n }\n\n return {\n getProjDocuments: getProjDocuments,\n getProjDocumentsInFolder: getProjDocumentsInFolder,\n downloadFileFromConnections: downloadFileFromConnections,\n deleteFileFromConnections: deleteFileFromConnections,\n togglePin: togglePin,\n meta: meta,\n download: download,\n createCommunity: createCommunity,\n deleteCommunity: deleteCommunity,\n getFolderPermissions: getFolderPermissions,\n putFolderPermissions: putFolderPermissions,\n getTradeCodes: getTradeCodes,\n getReplicationJobs: getReplicationJobs,\n postReplicationJob: postReplicationJob,\n putReplicationJobs: putReplicationJobs,\n getReplicationFiles: getReplicationFiles,\n getFoldersCategories: getFoldersCategories,\n putFolderCategory: putFolderCategory,\n getCommunities: getCommunities\n };\n }\n];\n","import { sum, map } from \"lodash\";\nexport default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"albumConfig\",\n function ($http, $log, store, moment, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function searchForOption(val) {\n return $http.get(apiAddress + \"/options/search?val=\" + val);\n }\n\n function getOptions() {\n return $http.get(apiAddress + \"/options\");\n }\n\n function getOptionsFromPool(projectId) {\n return $http.get(apiAddress + \"/options/pool/\" + projectId);\n }\n\n function getOptionPackages() {\n return $http.get(apiAddress + \"/options/packages\");\n }\n\n function getOptionPackage(packageId) {\n return $http.get(apiAddress + \"/options/packages/\" + packageId);\n }\n\n function updateOptionPackage(pckage) {\n return $http.post(apiAddress + \"/options/packages/update\", pckage);\n }\n\n function getOption(optionId) {\n return $http.get(apiAddress + \"/option/\" + optionId);\n }\n\n function saveOption(option) {\n return $http.post(apiAddress + \"/option/save\", option);\n }\n\n function saveOptionPoolCalc(optionCalc) {\n return $http.post(apiAddress + \"/optionpool/save/calc\", optionCalc);\n }\n\n function saveProjectOptionCalc(optionCalc) {\n return $http.post(\n apiAddress + \"/projectoption/save/calc\",\n optionCalc\n );\n }\n\n function saveSectionOptionCalc(optionCalc) {\n return $http.post(\n apiAddress + \"/sectionoption/save/calc\",\n optionCalc\n );\n }\n\n function getOptionComponents(req) {\n return $http.post(apiAddress + \"/option/components\", req);\n }\n\n function saveComponents(optionId, components) {\n return $http.post(\n apiAddress + \"/option/\" + optionId + \"/components/save\",\n components\n );\n }\n\n function createOptionPackage(pckage) {\n return $http.post(apiAddress + \"/options/packages/create\", pckage);\n }\n\n function deleteOptionPackage(pckage) {\n return $http.post(apiAddress + \"/options/packages/delete\", pckage);\n }\n\n function createOption(option) {\n return $http.post(apiAddress + \"/option/create\", option);\n }\n\n function setPriceCalc(opt, costCalcs) {\n return {\n amountEnt: opt.amountEnt,\n amountPercentageEnt: opt.amountPercentageEnt,\n amountPercentageSales: opt.amountPercentageSales,\n amountSales: opt.amountSales,\n amountTax: opt.amountTax,\n price: opt.price,\n recommendedPrice: NaN,\n cost: sum(\n map(costCalcs, function (oc) {\n return oc.status < 0 ? 0 : oc.qty * oc.cost;\n })\n )\n };\n }\n\n function copyOptionsFromPool(toCopy, projectId) {\n return $http.post(apiAddress + \"/option/copyfrompool\", {\n poolOptionsIds: toCopy,\n projectId: projectId\n });\n }\n\n function updateOptionsFromPool(options) {\n return $http.post(apiAddress + \"/option/updatefrompool\", options);\n }\n\n function saveOptionSectionTypes(option, sectionTypes) {\n return $http.post(\n apiAddress + \"/option/\" + option.id + \"/sectiontypes/save\",\n sectionTypes\n );\n }\n\n function deleteProjectOption(opt) {\n return $http.post(apiAddress + \"/projectoption/delete\", opt);\n }\n\n function deleteAllCalculations(option) {\n return $http.post(\n apiAddress + \"/option/components/deleteall\",\n option\n );\n }\n\n function addProcess(process) {\n return $http.post(apiAddress + \"/option/addprocess\", process);\n }\n\n function removeProcess(processOption) {\n return $http.post(\n apiAddress + \"/option/deleteprocess\",\n processOption\n );\n }\n\n const preview = sectionId => {\n return $http.get(\n `${apiAddress}/option/preview?sectionId=${sectionId}`\n );\n };\n\n const removeOptionFromPackage = (option, packageId) => {\n return $http.post(\n `${apiAddress}/options/package/${packageId}/removeoption`,\n option\n );\n };\n\n const addOptionToPackage = (option, packageId) => {\n return $http.post(\n `${apiAddress}/options/package/${packageId}/addoption`,\n option\n );\n };\n\n function getOptionDocuments(optionId) {\n return $http.get(apiAddress + \"/option/\" + optionId + \"/documents\");\n }\n\n function deleteOptionDocument(blobId) {\n return $http.delete(apiAddress + `/option/documents/${blobId}`);\n }\n\n function putOptionDocumentProjModels(blobId, projModels) { \n return $http.put(\n `${apiAddress}/option/documents/${blobId}/projmodels`,\n projModels\n );\n }\n\n return {\n searchForOption: searchForOption,\n getOptions: getOptions,\n getOptionsFromPool: getOptionsFromPool,\n getOptionPackages: getOptionPackages,\n getOptionPackage: getOptionPackage,\n updateOptionPackage: updateOptionPackage,\n getOption: getOption,\n saveOption: saveOption,\n saveOptionPoolCalc: saveOptionPoolCalc,\n saveProjectOptionCalc: saveProjectOptionCalc,\n saveSectionOptionCalc: saveSectionOptionCalc,\n getOptionComponents: getOptionComponents,\n saveComponents: saveComponents,\n createOptionPackage: createOptionPackage,\n deleteOptionPackage: deleteOptionPackage,\n createOption: createOption,\n setPriceCalc: setPriceCalc,\n copyOptionsFromPool: copyOptionsFromPool,\n updateOptionsFromPool: updateOptionsFromPool,\n saveOptionSectionTypes: saveOptionSectionTypes,\n deleteProjectOption: deleteProjectOption,\n deleteAllCalculations: deleteAllCalculations,\n addProcess: addProcess,\n removeProcess: removeProcess,\n preview: preview,\n removeOptionFromPackage: removeOptionFromPackage,\n addOptionToPackage: addOptionToPackage,\n getOptionDocuments: getOptionDocuments,\n deleteOptionDocument: deleteOptionDocument,\n putOptionDocumentProjModels: putOptionDocumentProjModels\n };\n }\n];\n","export default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"commonApi\",\n \"albumConfig\",\n function ($http, $log, store, moment, commonApi, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getAllHouses() {\n return $http.get(apiAddress + \"/house/all\");\n }\n\n function getHouses(id) {\n return $http.get(apiAddress + \"/project/\" + id + \"/houses\");\n }\n\n function getHouse(projPhaseId) {\n return $http.get(apiAddress + \"/house/\" + projPhaseId);\n }\n\n function getSectionsInHouse(houseId) {\n return $http.get(apiAddress + \"/house/\" + houseId + \"/sections\");\n }\n\n function updateHouse(house) {\n return $http.post(apiAddress + \"/house/update\", house);\n }\n\n function deleteHouse(house) {\n return $http.post(apiAddress + \"/house/delete\", house);\n }\n\n function createHouse(house) {\n return $http.post(apiAddress + \"/house/create\", house);\n }\n\n function getMountDate(house) {\n return $http.get(apiAddress + \"/house/mountdate/\" + house);\n }\n\n function updateLastUpdatedScheduleDate(projPhase) {\n return $http.post(\n apiAddress + \"/house/updatelastupdatedscheduledate\",\n projPhase\n );\n }\n\n function getChanges(houseId) {\n return $http.get(apiAddress + \"/house/\" + houseId + \"/changes\");\n }\n\n function getOptions(houseId) {\n return $http.get(apiAddress + \"/house/\" + houseId + \"/options\");\n }\n\n function exportOptions(sectionOptions) {\n return $http({\n url: apiAddress + \"/export/houseoptions\",\n data: sectionOptions,\n method: \"POST\",\n responseType: \"blob\"\n });\n }\n\n function exportChanges(changes) {\n return $http({\n url: apiAddress + \"/export/housechanges\",\n data: changes,\n method: \"POST\",\n responseType: \"blob\"\n });\n }\n\n function getAberrations(houseId) {\n return $http.get(apiAddress + \"/house/\" + houseId + \"/aberrations\");\n }\n\n function getPhaseColorOptions(house) {\n return $http({\n url:\n apiAddress + \"/house/\" + house.id + \"/reports/coloroptions\",\n data: house,\n method: \"GET\",\n responseType: \"blob\"\n });\n }\n\n function getPhaseOptionsAndChanges(house) {\n return $http({\n url:\n apiAddress +\n \"/house/\" +\n house.id +\n \"/reports/phaseoptionsandchanges\",\n data: house,\n method: \"GET\",\n responseType: \"blob\"\n });\n }\n\n function getPhaseInvoice(house) {\n return $http({\n url:\n apiAddress + \"/house/\" + house.id + \"/reports/phaseinvoice\",\n data: house,\n method: \"GET\",\n responseType: \"blob\"\n });\n }\n\n function getHouseDocuments(houseid) {\n return $http.get(\n apiAddress + \"/ibm/house/\" + houseid + \"/documents\"\n );\n }\n\n function getHouseSchedule(phaseId) {\n return $http.get(apiAddress + \"/house/\" + phaseId + \"/schedule\");\n }\n\n function downloadScheduleAsPdf(seRequest) {\n return $http({\n url: apiAddress + \"/house/schedule/download/pdf\",\n method: \"POST\",\n data: seRequest,\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function getModulesInHouse(ppId) {\n return $http.get(apiAddress + \"/house/\" + ppId + \"/modules\");\n }\n\n function getOrganization(houseId) {\n return $http.get(\n apiAddress + \"/house/\" + houseId + \"/organization\"\n );\n }\n\n const getFdv = (houseId, folderId) => {\n var url = `${apiAddress}/house/${houseId}/fdv`;\n if (folderId) {\n url += \"?folderId=\" + folderId;\n }\n return $http.get(url);\n };\n\n return {\n getAllHouses: getAllHouses,\n getHouses: getHouses,\n getHouse: getHouse,\n getSectionsInHouse: getSectionsInHouse,\n updateHouse: updateHouse,\n deleteHouse: deleteHouse,\n createHouse: createHouse,\n getMountDate: getMountDate,\n updateLastUpdatedScheduleDate: updateLastUpdatedScheduleDate,\n getChanges: getChanges,\n getOptions: getOptions,\n exportOptions: exportOptions,\n exportChanges: exportChanges,\n getAberrations: getAberrations,\n getPhaseColorOptions: getPhaseColorOptions,\n getPhaseOptionsAndChanges: getPhaseOptionsAndChanges,\n getPhaseInvoice: getPhaseInvoice,\n getHouseDocuments: getHouseDocuments,\n getHouseSchedule: getHouseSchedule,\n\n downloadScheduleAsPdf: downloadScheduleAsPdf,\n getModulesInHouse: getModulesInHouse,\n getOrganization: getOrganization,\n getFdv: getFdv\n };\n }\n];\n","export default [\"$http\", \"$log\", \"store\", \"moment\", \"albumConfig\", function ($http, $log, store, moment, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getModules(includeinactive, projTypeId) {\n\n return $http.post(apiAddress + \"/modules\", {\n includeinactive: includeinactive,\n projTypeId: projTypeId\n });\n }\n\n function updateModule(module) {\n return $http.post(apiAddress + \"/module/update\", module);\n }\n\n function insertModule(module) {\n return $http.post(apiAddress + \"/module/insert\", module);\n }\n\n function upsertProjPhaseModule(ppm) {\n return $http.post(apiAddress + \"/projphasemodule/upsert\", ppm);\n }\n\n function saveModulesOnSections(sections) {\n return $http.post(apiAddress + \"/module/update/sections\", sections);\n }\n\n return {\n getModules: getModules,\n updateModule: updateModule,\n insertModule: insertModule,\n upsertProjPhaseModule: upsertProjPhaseModule,\n saveModulesOnSections: saveModulesOnSections\n\n };\n\n}];","import setScheduleHtml from \"shared/setSchedule.html\";\nimport setScheduleCtrl from \"shared/setSchedule.js\";\n\nexport default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"commonApi\",\n \"$uibModal\",\n \"albumConfig\",\n\n function ($http, $log, store, moment, commonApi, $uibModal, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getSchedule(scheduleId) {\n return $http.get(apiAddress + \"/schedule/\" + scheduleId);\n }\n\n function updateSchedule(ps) {\n return $http.post(apiAddress + \"/schedule/update\", ps);\n }\n\n function insertSchedule(sch) {\n return $http.post(apiAddress + \"/schedule/insert\", sch);\n }\n\n function updateResponsibleHouseSchedule(phaseId) {\n return $http.post(\n `${apiAddress}/schedule/house/${phaseId}/updateresponsible`\n );\n }\n\n function updateResponsibleProjectSchedule(projectId, projType) {\n return $http.post(\n `${apiAddress}/schedule/project/${projectId}/${projType}/updateresponsible`\n );\n }\n function updateScheduleResponsible(sch) {\n return $http.post(`${apiAddress}/schedule/responsible/update`, sch);\n }\n\n function importSchedules(from, to, addDays) {\n return $http.post(apiAddress + \"/schedule/import\", {\n fromHouse: from,\n toHouse: to,\n addDays: addDays\n });\n }\n\n function downloadOrders(orders) {\n return $http({\n url: apiAddress + \"/schedule/orders/pdf/download\",\n method: \"POST\",\n responseType: \"blob\",\n data: orders\n });\n }\n\n function complete(schedule) {\n return $http.post(apiAddress + \"/schedule/setcomplete\", schedule);\n }\n\n function getOrders(scheduleId) {\n //return $http.get(apiAddress + \"/schedule/orders/\" + scheduleId);\n return $http.get(\n apiAddress + \"/schedule/orders/calculate/\" + scheduleId\n );\n }\n\n function deleteSchedule(sch) {\n return $http.post(apiAddress + \"/schedule/delete\", sch);\n }\n\n function deleteAllSchedules(house) {\n return $http.post(apiAddress + \"/schedule/deleteall\", house);\n }\n\n function downloadControlSchemas(seRequest) {\n return $http({\n url: apiAddress + \"/schedule/getschemas\",\n method: \"POST\",\n data: seRequest,\n responseType: \"blob\"\n });\n }\n\n function setScheduleModal(schedule) {\n var modalInstance = $uibModal.open({\n template: setScheduleHtml,\n controllerAs: \"modalvm\",\n resolve: {\n schedule: [\n function () {\n return schedule;\n }\n ]\n },\n controller: setScheduleCtrl\n });\n\n return modalInstance;\n }\n\n function moveSchedule(msr) {\n return $http.post(apiAddress + \"/schedule/move\", msr);\n }\n\n function getSummary(scheduleId) {\n return $http.get(\n apiAddress + \"/schedule/\" + scheduleId + \"/summary\"\n );\n }\n\n function exportActivitiesPdf(scheduleId) {\n return $http({\n url:\n apiAddress +\n \"/schedule/\" +\n scheduleId +\n \"/activities/export\",\n method: \"GET\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function wrikeProjects() {\n return $http.get(apiAddress + \"/schedule/wrike/projects\");\n }\n\n function wrikeImport(request) {\n return $http.post(apiAddress + \"/schedule/wrike/import\", request);\n }\n\n function wrikeImportSync(request) {\n return $http.post(\n apiAddress + \"/schedule/wrike/import/sync\",\n request\n );\n }\n\n function wrikeDeleteProject(request) {\n return $http.post(\n apiAddress + \"/schedule/wrike/import/delete\",\n request\n );\n }\n\n var updateTaskStatus = list => {\n return $http.post(apiAddress + \"/schedules/updatetaskstatus\", list);\n };\n\n const getProjectSchedule = (projectId, projType, filters) => {\n return $http.post(`${apiAddress}/project/${projectId}/schedule/${projType}`, filters || {});\n };\n\n let createActivites = schedule => {\n schedule.hideLoader = true;\n return $http.post(\n `${apiAddress}/schedule/activities/create`,\n schedule\n );\n };\n\n let getHouseSchedule = scheduleId => {\n return $http.get(`${apiAddress}/house/schedule/${scheduleId}`);\n };\n\n const getWrikeTask = taskId => {\n return $http.get(`${apiAddress}/schedule/wrike/task/${taskId}`);\n };\n // const getWrikeFolder = folderId => {\n // return $http.get(`${apiAddress}/schedule/wrike/folder/${folderId}`);\n // };\n\n function openWrikeFolder(request) {\n return $http.post(`${apiAddress}/schedule/wrike/open`, request);\n }\n\n function getProjTypes(projId) {\n return $http.get(`${apiAddress}/schedule/${projId}/projtypes`);\n }\n\n function getOrderCount(scheduleId) {\n return $http.get(`${apiAddress}/schedule/${scheduleId}/ordercount`, {\n hideLoader: true,\n cache: false\n });\n }\n\n function getLastUpdateProject(projId, projType) {\n return $http.get(`${apiAddress}/schedule/${projId}/${projType}/lastUpdate`, {\n hideLoader: true,\n cache: false\n });\n }\n\n function getLastUpdatePhase(houseId) {\n return $http.get(`${apiAddress}/schedule/${houseId}/lastUpdate`, {\n hideLoader: true,\n cache: false\n });\n }\n\n function getWrikeImportProjects(houseId) {\n return $http.get(`${apiAddress}/schedule/${houseId}/wrike/import/projects`, {\n hideLoader: true\n });\n }\n\n function getWrikeImportProjectSchedules(projectId) {\n return $http.get(`${apiAddress}/schedule/${projectId}/wrike/import/projectschedules`, {\n hideLoader: true\n });\n }\n\n function getWrikeHouseScheduleTemplates(projectId) { \n return $http.get(`${apiAddress}/schedule/${projectId}/wrike/import/houseschedules`, {\n hideLoader: false\n });\n }\n\n function getWrikeScheduleMilestones(request) { \n return $http.post(`${apiAddress}/schedule/wrike/import/milestones`, request, {\n hideLoader: false\n });\n }\n\n return {\n getSchedule: getSchedule,\n updateSchedule: updateSchedule,\n insertSchedule: insertSchedule,\n updateResponsibleHouseSchedule: updateResponsibleHouseSchedule,\n updateResponsibleProjectSchedule: updateResponsibleProjectSchedule,\n updateScheduleResponsible: updateScheduleResponsible,\n importSchedules: importSchedules,\n complete: complete,\n getOrders: getOrders,\n deleteSchedule: deleteSchedule,\n deleteAllSchedules: deleteAllSchedules,\n\n downloadControlSchemas: downloadControlSchemas,\n downloadOrders: downloadOrders,\n setScheduleModal: setScheduleModal,\n moveSchedule: moveSchedule,\n\n getSummary: getSummary,\n exportActivitiesPdf: exportActivitiesPdf,\n wrikeProjects: wrikeProjects,\n wrikeImport: wrikeImport,\n wrikeImportSync: wrikeImportSync,\n wrikeDeleteProject: wrikeDeleteProject,\n updateTaskStatus: updateTaskStatus,\n getProjectSchedule: getProjectSchedule,\n createActivites: createActivites,\n getHouseSchedule: getHouseSchedule,\n getWrikeTask: getWrikeTask,\n //getWrikeFolder: getWrikeFolder,\n openWrikeFolder: openWrikeFolder,\n getProjTypes: getProjTypes,\n getOrderCount: getOrderCount,\n getLastUpdateProject: getLastUpdateProject,\n getLastUpdatePhase: getLastUpdatePhase,\n getWrikeImportProjects: getWrikeImportProjects,\n getWrikeImportProjectSchedules: getWrikeImportProjectSchedules,\n getWrikeHouseScheduleTemplates: getWrikeHouseScheduleTemplates,\n getWrikeScheduleMilestones: getWrikeScheduleMilestones\n };\n }\n];\n","export default \"
\\n

Juster {{modalvm.schedule.processName}}

\\n
\\n
\\n
\\n \\n \\n
\\n \\n \\n \\n \\n
\\n
\\n\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n
\\n\\n
\\n
\\n \\n \\n
\";","export default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"commonApi\",\n \"albumConfig\",\n function ($http, $log, store, moment, commonApi, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getProcessPhases() {\n return $http.get(apiAddress + \"/system/processphases\");\n }\n\n function editProcessPhase(model) {\n return $http.post(apiAddress + \"/system/processphase/edit\", model);\n }\n\n function getModels() {\n return $http.get(apiAddress + \"/system/models\");\n }\n\n function editModel(model) {\n return $http.post(apiAddress + \"/system/model/edit\", model);\n }\n\n function getComponentGroups() {\n return $http.get(apiAddress + \"/system/componentgroups\");\n }\n\n function editComponentGroup(model) {\n return $http.post(\n apiAddress + \"/system/componentgroup/edit\",\n model\n );\n }\n\n function getProjectTypes() {\n return $http.get(apiAddress + \"/system/projecttypes\");\n }\n\n function editProjectType(pt) {\n return $http.post(apiAddress + \"/system/projecttype/edit\", pt);\n }\n\n function getCompanies() {\n return $http.get(apiAddress + \"/system/companies\");\n }\n\n function editCompany(company) {\n return $http.post(apiAddress + \"/system/company/edit\", company);\n }\n\n function getProcessOwners() {\n return $http.get(apiAddress + \"/system/processowners\");\n }\n\n function editProcessOwner(processOwner) {\n return $http.post(\n apiAddress + \"/system/processowner/edit\",\n processOwner\n );\n }\n\n function getTradeCode(tradeCodeId) {\n return $http.get(apiAddress + \"/system/tradecode/\" + tradeCodeId);\n }\n\n function getTradeCodes(includeInactive) {\n if (includeInactive) {\n return $http.get(\n apiAddress + \"/system/tradecodes?includeInactive=true\"\n );\n } else {\n return $http.get(apiAddress + \"/system/tradecodes\");\n }\n }\n\n function editTradeCode(tc) {\n return $http.post(apiAddress + \"/system/tradecode/edit\", tc);\n }\n\n function toggleTradeCodeActive(tc) {\n return $http.post(\n apiAddress + \"/system/tradecode/toggleactive\",\n tc\n );\n }\n\n function getRoles() {\n return $http.get(apiAddress + \"/system/roles\");\n }\n\n function editRole(role) {\n return $http.post(apiAddress + \"/system/role/edit\", role);\n }\n\n function getUsersInRole(role) {\n return $http.get(\n apiAddress + \"/system/roles/\" + role.id + \"/users\"\n );\n }\n\n function updateUsersInRole(roleId, userInRoles) {\n return $http.post(\n apiAddress + \"/system/roles/\" + roleId + \"/users\",\n userInRoles\n );\n }\n\n function getUsers() {\n return $http.get(apiAddress + \"/system/users\");\n }\n\n function editUser(user) {\n return $http.post(apiAddress + \"/system/user/edit\", user);\n }\n\n function getSectionTypes() {\n return $http.get(apiAddress + \"/system/sectiontypes\");\n }\n\n function editSectionType(st) {\n return $http.post(apiAddress + \"/system/sectiontype/edit\", st);\n }\n\n function getContactGroups() {\n return $http.get(apiAddress + \"/system/contactgroups\");\n }\n\n function editContactGroup(cg) {\n return $http.post(apiAddress + \"/system/contactgroup/edit\", cg);\n }\n\n function getAberrationCauses() {\n return $http.get(apiAddress + \"/system/aberrationcauses\");\n }\n\n function editAberrationCause(cg) {\n return $http.post(apiAddress + \"/system/aberrationcause/edit\", cg);\n }\n\n function getAberrationTypes() {\n return $http.get(apiAddress + \"/system/aberrationtypes\");\n }\n\n function editAberrationType(cg) {\n return $http.post(apiAddress + \"/system/aberrationtype/edit\", cg);\n }\n\n function getSmsLog(req) {\n return $http.post(apiAddress + \"/system/smslog\", req);\n }\n\n function getDefinitions(cache) {\n if (!cache) {\n return $http.get(apiAddress + \"/system/definitions\");\n } else {\n return $http.get(apiAddress + \"/system/definitions\", {\n cache: true\n });\n }\n }\n\n function editDefinition(d) {\n return $http.post(apiAddress + \"/system/definition/edit\", d);\n }\n\n function saveFaq(f) {\n return $http.post(apiAddress + \"/system/faq/save\", f);\n }\n\n function getFaqs() {\n return $http.get(apiAddress + \"/system/faqs\");\n }\n\n function getFaq(faqId) {\n return $http.get(apiAddress + \"/system/faqs/\" + faqId);\n }\n\n function editPostCode(f) {\n return $http.post(apiAddress + \"/system/postcode/edit\", f);\n }\n const getPostCodeById = postCodeId => {\n return $http.get(`${apiAddress}/system/postcodes/${postCodeId}`);\n };\n function getPostCodes() {\n return $http.get(apiAddress + \"/system/postcodes\");\n }\n\n function getPrognoseSenteret(req) {\n return $http({\n url: apiAddress + \"/system/prognosesenteret\",\n method: \"POST\",\n responseType: \"blob\",\n data: req,\n transformResponse: commonApi.transformDownload\n });\n }\n\n function addTradeCodeUserRole(tcur) {\n return $http.post(\n apiAddress + \"/system/tradecodeuserrole/add\",\n tcur\n );\n }\n\n function delTradeCodeUserRole(tcur) {\n return $http.post(\n apiAddress + \"/system/tradecodeuserrole/delete\",\n tcur\n );\n }\n\n function getSystemTasks() {\n return $http.get(apiAddress + \"/system/tasks\");\n }\n\n function runSystemTask(taskrequest) {\n return $http.post(apiAddress + \"/system/task/run\", taskrequest);\n }\n\n function getConsents() {\n return $http.get(apiAddress + \"/system/consents\");\n }\n\n function editConsent(f) {\n return $http.post(apiAddress + \"/system/consent/edit\", f);\n }\n\n function getOptionCategory(id) {\n return $http.get(apiAddress + \"/system/optioncategories/\" + id);\n }\n\n function getOptionCategories() {\n return $http.get(apiAddress + \"/system/optioncategories\");\n }\n\n function getOptionCategoryResources() {\n return $http.get(apiAddress + \"/system/optioncategories/resources\");\n }\n\n function editOptionCategoriesOrder(optioncategories) {\n return $http.post(apiAddress + \"/system/optioncategories/order\", optioncategories);\n }\n\n function editOptionCategory(f) {\n return $http.post(apiAddress + \"/system/optioncategory/edit\", f);\n }\n\n function getPlanResources() {\n return $http.get(apiAddress + \"/system/planresources\");\n }\n\n function editPlanResource(r) {\n return $http.post(apiAddress + \"/system/planresources/edit\", r);\n }\n function deletePlanResource(r) {\n return $http.post(apiAddress + \"/system/planresources/delete\", r);\n }\n\n function getProjAccounts() {\n return $http.get(apiAddress + \"/system/projaccounts\");\n }\n\n function putProjAccount(projAccount) {\n return $http.put(apiAddress + \"/system/projaccount\", projAccount);\n }\n\n function deleteProjAccount(id) {\n return $http.delete(apiAddress + \"/system/projaccount/\" + id);\n }\n\n function getReglinecategories() {\n return $http.get(apiAddress + \"/system/reglinecategories\");\n }\n\n function regLineCategoryDelete(category) {\n return $http.post(\n apiAddress + \"/system/reglinecategories/delete\",\n category\n );\n }\n\n function regLineCategoryUpdate(category) {\n return $http.post(\n apiAddress + \"/system/reglinecategories/update\",\n category\n );\n }\n\n function regLineCategoryAdd(category) {\n return $http.post(\n apiAddress + \"/system/reglinecategories/add\",\n category\n );\n }\n\n function getAlbumsettings() {\n return $http.get(apiAddress + \"/system/albumsettings\");\n }\n\n function updateAlbumSetting(setting) {\n return $http.post(\n apiAddress + \"/system/albumsettings/update\",\n setting\n );\n }\n\n function deleteAlbumSetting(setting) {\n return $http.post(\n apiAddress + \"/system/albumsettings/delete\",\n setting\n );\n }\n\n function getBusinessCentralCompanies() {\n return $http.get(apiAddress + \"/system/bc/companies\");\n }\n\n return {\n getProcessPhases: getProcessPhases,\n editProcessPhase: editProcessPhase,\n getModels: getModels,\n editModel: editModel,\n getComponentGroups: getComponentGroups,\n editComponentGroup: editComponentGroup,\n getProjectTypes: getProjectTypes,\n editProjectType: editProjectType,\n getCompanies: getCompanies,\n editCompany: editCompany,\n getProcessOwners: getProcessOwners,\n editProcessOwner: editProcessOwner,\n getTradeCode: getTradeCode,\n getTradeCodes: getTradeCodes,\n editTradeCode: editTradeCode,\n toggleTradeCodeActive: toggleTradeCodeActive,\n getRoles: getRoles,\n editRole: editRole,\n getUsersInRole: getUsersInRole,\n updateUsersInRole: updateUsersInRole,\n getUsers: getUsers,\n editUser: editUser,\n getSectionTypes: getSectionTypes,\n editSectionType: editSectionType,\n getContactGroups: getContactGroups,\n editContactGroup: editContactGroup,\n getAberrationCauses: getAberrationCauses,\n editAberrationCause: editAberrationCause,\n getAberrationTypes: getAberrationTypes,\n editAberrationType: editAberrationType,\n\n getSmsLog: getSmsLog,\n getDefinitions: getDefinitions,\n editDefinition: editDefinition,\n getFaqs: getFaqs,\n getFaq: getFaq,\n saveFaq: saveFaq,\n getPostCodeById: getPostCodeById,\n getPostCodes: getPostCodes,\n editPostCode: editPostCode,\n getPrognoseSenteret: getPrognoseSenteret,\n addTradeCodeUserRole: addTradeCodeUserRole,\n delTradeCodeUserRole: delTradeCodeUserRole,\n getSystemTasks: getSystemTasks,\n runSystemTask: runSystemTask,\n getConsents: getConsents,\n editConsent: editConsent,\n getOptionCategory: getOptionCategory,\n getOptionCategories: getOptionCategories,\n getOptionCategoryResources: getOptionCategoryResources,\n editOptionCategoriesOrder: editOptionCategoriesOrder,\n editOptionCategory: editOptionCategory,\n getPlanResources: getPlanResources,\n editPlanResource: editPlanResource,\n deletePlanResource: deletePlanResource,\n getProjAccounts: getProjAccounts,\n putProjAccount: putProjAccount,\n deleteProjAccount: deleteProjAccount,\n getReglinecategories: getReglinecategories,\n regLineCategoryDelete: regLineCategoryDelete,\n regLineCategoryAdd: regLineCategoryAdd,\n regLineCategoryUpdate: regLineCategoryUpdate,\n getAlbumsettings: getAlbumsettings,\n updateAlbumSetting: updateAlbumSetting,\n deleteAlbumSetting: deleteAlbumSetting,\n getBusinessCentralCompanies: getBusinessCentralCompanies\n };\n }\n];\n","import aberrationHtml from \"shared/aberration.html\";\nimport aberrationCtrl from \"shared/aberration.js\";\nimport albumAberrationEmailHtml from \"shared/albumAberration/email.html\";\nimport albumAberrationEmailCtrl from \"shared/albumAberration/email.js\";\nimport albumAberrationModalmarkupHtml from \"shared/albumAberration/modalmarkup.html\";\nimport albumAberrationModalCtrl from \"shared/albumAberration/modalctrl.js\";\n\nexport default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"commonApi\",\n \"$uibModal\",\n \"albumConfig\",\n function ($http, $log, store, moment, commonApi, $uibModal, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function createFromChecklistItem(req) {\n return $http.post(\n apiAddress + \"/aberration/createfromchecklistitem\",\n req\n );\n }\n\n function getAberrations(category) {\n return $http.get(apiAddress + \"/aberrations/\" + category);\n }\n\n function getAberration(aberrationParams) {\n return $http.post(\n apiAddress + \"/aberrations/aberration\",\n aberrationParams\n );\n }\n\n function getSectionAberrations(sectionId) {\n return $http.get(apiAddress + \"/aberrations/section/\" + sectionId);\n }\n\n function validateAberration(aberration) {\n switch (aberration.category) {\n case 1:\n return $http.post(\n apiAddress + \"/aberration/validate\",\n aberration\n );\n case 2:\n return $http.post(apiAddress + \"/ruh/validate\", aberration);\n case 3:\n return $http.post(\n apiAddress + \"/improvement/validate\",\n aberration\n );\n }\n }\n\n function insertUpdateAberration(aberration, transformAttachments) {\n if (transformAttachments) {\n commonApi.transformAttachments(aberration.attachments);\n }\n\n switch (aberration.category) {\n case 1:\n return $http.post(\n apiAddress + \"/aberration/insertupdate\",\n aberration\n );\n case 2:\n return $http.post(\n apiAddress + \"/ruh/insertupdate\",\n aberration\n );\n case 3:\n return $http.post(\n apiAddress + \"/improvement/insertupdate\",\n aberration\n );\n }\n }\n\n function allAberrationActions() {\n return $http.get(apiAddress + \"/aberrations/actions\");\n }\n\n function getActions(aberrationId) {\n return $http.get(\n apiAddress + \"/aberrations/\" + aberrationId + \"/actions\"\n );\n }\n\n function getAction(aberrationId, actionId) {\n return $http.get(\n apiAddress +\n \"/aberration/\" +\n aberrationId +\n \"/action/\" +\n actionId\n );\n }\n\n function saveAction(action) {\n commonApi.transformAttachments(action.attachments);\n\n return $http.post(apiAddress + \"/action/save\", action);\n }\n\n function aberrationModal(options) {\n return $uibModal.open({\n template: aberrationHtml,\n controllerAs: \"modalvm\",\n controller: aberrationCtrl,\n resolve: {\n options: [\n function () {\n return Object.assign({}, options);\n }\n ]\n }\n });\n }\n\n function aberrationEmail(aberration) {\n var modalInstance = $uibModal.open({\n size: \"lg\",\n template: albumAberrationEmailHtml,\n controllerAs: \"modalvm\",\n controller: albumAberrationEmailCtrl,\n resolve: {\n aberration: [\n function () {\n return aberration;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n function aberrationModalFull(preSelect) {\n var modalInstance = $uibModal.open({\n size: \"lg\",\n template: albumAberrationModalmarkupHtml,\n controllerAs: \"modalvm\",\n controller: albumAberrationModalCtrl,\n resolve: {\n aberrationData: [\n function () {\n return getAberration({\n aberrationId: -1,\n category: 1,\n projectId: preSelect.projectId\n }).then(function (res) {\n var aberrationData = res.data;\n aberrationData.preSelect = preSelect;\n return res;\n });\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n function downloadAberration(aberrationId, includeImages) {\n return $http({\n url: apiAddress + \"/aberration/download/\" + aberrationId + \"?includeImages=\" + includeImages,\n method: \"GET\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n function deleteAberration(aberration) {\n return $http.post(apiAddress + \"/aberration/delete\", aberration);\n }\n\n function deleteAction(action) {\n return $http.post(apiAddress + \"/action/delete\", {\n id: action.id\n });\n }\n\n function sendReminder(request) {\n return $http.post(apiAddress + \"/action/reminder\", request);\n }\n\n function convertToRegLine(aberrationId, actionId, regLineCategoryId) {\n return $http.post(apiAddress +\n \"/aberration/\" +\n aberrationId +\n \"/action/\" +\n actionId +\n \"/regline/\" +\n regLineCategoryId);\n }\n\n return {\n createFromChecklistItem: createFromChecklistItem,\n getAberrations: getAberrations,\n getAberration: getAberration,\n validateAberration: validateAberration,\n insertUpdateAberration: insertUpdateAberration,\n getSectionAberrations: getSectionAberrations,\n allAberrationActions: allAberrationActions,\n getActions: getActions,\n getAction: getAction,\n saveAction: saveAction,\n aberrationModal: aberrationModal,\n aberrationEmail: aberrationEmail,\n aberrationModalFull: aberrationModalFull,\n downloadAberration: downloadAberration,\n deleteAberration: deleteAberration,\n deleteAction: deleteAction,\n sendReminder: sendReminder,\n convertToRegLine: convertToRegLine\n };\n }\n];\n","export default \"
\\n\\n

Avvik

\\n
\\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n
\\n \\n
\\n
\\n\\n\\n
\\n Både navn og beskrivelse er nødvendig før du kan lagre
\\n\\n\\n
\\n
\\n \\n \\n
\";","export default \"\\n\\n
\\n

Sende epost

\\n
\\n
\\n\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n\\n\\n
\\n\\n
\\n
\\n \\n \\n
\";","export default \"\\n\\n\\n
\\n\\t

Nytt avvik

\\n
\\n
\\n \\n\\n \\n\\n
\\n
\\n\\t\\n\\t\\n
\\n\";","import loginPopupHtml from \"shared/albumLoginPopup/login.html\";\nimport loginPopupCtrl from \"shared/albumLoginPopup/login.js\";\nimport { intersection, includes } from \"lodash\";\n\nexport default [\n \"$http\",\n \"$log\",\n \"store\",\n \"$q\",\n \"albumConfig\",\n \"$uibModal\",\n \"$cacheFactory\",\n\n function ($http, $log, store, $q, albumConfig, $uibModal, $cacheFactory) {\n var apiAddress = albumConfig.apiAddress;\n\n const deleteCache = () => {\n var httpCache = $cacheFactory.get(\"$http\");\n httpCache.removeAll();\n };\n\n var haveAllRolesRequired = function (rolesRequired) {\n var profile = store.get(\"profile\");\n\n var userRoles = (profile && profile.roles) || [];\n if (includes(userRoles, \"Admin\")) {\n return true;\n }\n\n var rolesMatched = intersection(rolesRequired, userRoles);\n return rolesMatched.length === rolesRequired.length;\n };\n\n var haveAnyRoleRequired = function (roles) {\n var profile = store.get(\"profile\");\n\n var userRoles = (profile && profile.roles) || [];\n\n if (includes(userRoles, \"Admin\")) {\n return true;\n }\n var rolesMatched = intersection(roles, userRoles);\n return rolesMatched.length > 0;\n };\n\n function getUsers() {\n return $http.get(apiAddress + \"/user/users\");\n }\n\n function authorized(rolesRequired) {\n var deferred = $q.defer();\n var notAuthorized = !haveAnyRoleRequired(rolesRequired);\n\n if (notAuthorized) {\n return $q.reject({\n status: 401,\n msg: \"Du har ikke tilgang til denne siden!\"\n });\n } else {\n deferred.resolve(true);\n return deferred.promise;\n }\n }\n\n function getUserInfo(id) {\n return $http.get(apiAddress + \"/userinfo/\" + id);\n }\n\n function updateProfile(profileUpdateReq) {\n return $http\n .post(apiAddress + \"/user/profile/update\", profileUpdateReq)\n .then(response => {\n deleteCache();\n return response;\n });\n }\n\n function updateFavorites(favorites) {\n return $http\n .post(apiAddress + \"/user/favorites/update\", favorites)\n .then(response => {\n deleteCache();\n return response;\n });\n }\n\n function slackTest(person) {\n return $http.post(apiAddress + \"/user/notifications/slack\", person);\n }\n\n function updateNotficationSettings(person) {\n return $http.post(\n apiAddress + \"/user/notifications/update\",\n person\n );\n }\n\n function getExternalUser(domain, externalUserId) {\n return $http.get(\n apiAddress +\n \"/user/external/get/\" +\n domain +\n \"/\" +\n externalUserId\n );\n }\n\n function getExternalUserSignIns(domain, externalUserId) { \n return $http.get(\n apiAddress +\n \"/user/external/get/\" +\n domain +\n \"/\" +\n externalUserId +\n \"/signins\", { hideLoader: true }\n );\n }\n\n function createExternalUser(domain, person) {\n return $http.post(\n apiAddress + \"/user/external/create/\" + domain,\n person\n );\n }\n\n function changeExternalUser(domain, externalUser) {\n return $http.post(\n apiAddress + \"/user/external/change/\" + domain,\n externalUser\n );\n }\n\n function changePasswordEmail(domain, person) {\n return $http.post(\n apiAddress + \"/user/external/changepasswordemail/\" + domain,\n person\n );\n }\n\n function deleteExternalUser(domain, person) {\n return $http.post(\n apiAddress + \"/user/external/delete/\" + domain,\n person\n );\n }\n\n function getPersonProfile() {\n return $http.get(apiAddress + \"/user/profile\");\n }\n\n function updatePermissions(permissions) {\n return $http.post(\n apiAddress + \"/user/permissions/update\",\n permissions\n );\n }\n\n function getLog(request) {\n return $http.post(`${apiAddress}/user/log`, request);\n }\n\n function checkExternalUser(domain, personId) {\n return $http.get(\n apiAddress + \"/user/external/\" + domain + \"/check/\" + personId\n );\n }\n function getFavorites() {\n return $http.get(`${apiAddress}/user/favorites`, { cache: true });\n }\n\n function login(loginrequest) {\n return $http.post(`${apiAddress}/user/authenticate`, loginrequest);\n }\n\n const getCalendarCode = type => {\n return $http.get(`${apiAddress}/calendar/getcode/${type}`);\n };\n\n function getHclConnectionsAuthenticated() {\n return $http.get(`${apiAddress}/user/connections/authenticated`);\n }\n\n function postHclConnectionsAuthentication(login) {\n return $http.post(`${apiAddress}/user/connections/authenticate`, login);\n }\n\n function hclConnectionsLoginModal(userId) {\n var modalInstance = $uibModal.open({\n template: loginPopupHtml,\n backdrop: \"static\",\n controllerAs: \"modalvm\",\n controller: loginPopupCtrl,\n resolve: {\n userId: [\n function () {\n return userId;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n return {\n getUsers: getUsers,\n authorized: authorized,\n haveAllRolesRequired: haveAllRolesRequired,\n haveAnyRoleRequired: haveAnyRoleRequired,\n getUserInfo: getUserInfo,\n updateProfile: updateProfile,\n updateFavorites: updateFavorites,\n slackTest: slackTest,\n updateNotficationSettings: updateNotficationSettings,\n getExternalUser: getExternalUser,\n getExternalUserSignIns: getExternalUserSignIns,\n createExternalUser: createExternalUser,\n changeExternalUser: changeExternalUser,\n changePasswordEmail: changePasswordEmail,\n deleteExternalUser: deleteExternalUser,\n getPersonProfile: getPersonProfile,\n updatePermissions: updatePermissions,\n getLog: getLog,\n checkExternalUser: checkExternalUser,\n getFavorites: getFavorites,\n login: login,\n getCalendarCode: getCalendarCode,\n getHclConnectionsAuthenticated: getHclConnectionsAuthenticated,\n hclConnectionsLoginModal: hclConnectionsLoginModal,\n postHclConnectionsAuthentication: postHclConnectionsAuthentication\n };\n }\n];\n","export default \"
\\n

HCL Connections - Logg inn

\\n
\\n
\\n
\\n

Album trenger tilkobling til Connections for å kunne hente eller laste opp dokumenter på\\n prosjekter eller på kundenivå. Album vil holde deg innlogget inntil neste endring av Windows-passord.\\n

\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\";","export default [\n \"$q\",\n \"$log\",\n \"$rootScope\",\n function ($q, $log, $rootScope) {\n var xhrCreations = 0;\n var xhrResolutions = 0;\n\n function isLoading() {\n var res = xhrResolutions < xhrCreations;\n //$rootScope.loadingCount = {xhrResolutions:xhrResolutions,xhrCreations:xhrCreations};\n\n return res;\n }\n\n function updateStatus() {\n $rootScope.loading = isLoading();\n }\n\n var httpLoaderService = {\n request: function (config) {\n var hideLoader = config && config.data && config.data.hideLoader;\n if (!hideLoader) {\n hideLoader = config && config.hideLoader;\n }\n if (hideLoader) {\n\n return config;\n } else {\n xhrCreations++;\n\n updateStatus();\n return config;\n }\n },\n requestError: function (rejection) {\n xhrResolutions++;\n updateStatus();\n\n return $q.reject(rejection);\n },\n\n response: function (response) {\n var hideLoader =\n response && response.config && response.config.data && response.config.data.hideLoader;\n if (!hideLoader) {\n hideLoader = response && response.config && response.config.hideLoader;\n }\n if (hideLoader) {\n\n return response;\n } else {\n xhrResolutions++;\n updateStatus();\n return response;\n }\n },\n\n responseError: function (rejection) {\n xhrResolutions++;\n updateStatus();\n\n return $q.reject(rejection);\n }\n };\n\n return httpLoaderService;\n }\n];","import { forOwn, isString, forEach } from \"lodash\";\nexport default [\n \"$q\",\n \"$log\",\n \"toastr\",\n function ($q, $log, toastr) {\n var errorService = {\n request: function (config) {\n return config;\n },\n requestError: function (rejection) {\n return $q.reject(rejection);\n },\n\n response: function (response) {\n return response;\n },\n\n responseError: function (rejection) {\n var validationErrors = [];\n\n if (rejection.status === -1) {\n toastr.error(\"Server ikke tilgjengelig!\");\n }\n if (rejection.status === 400) {\n if (isString(rejection.data)) {\n toastr.warning(rejection.data, { allowHtml: true });\n } else {\n forOwn(rejection.data, function (value) {\n validationErrors.push(value);\n });\n\n forEach(validationErrors, function (m) {\n forEach(m, function (mi) {\n toastr.warning(mi);\n });\n });\n }\n\n if (rejection.data.blob) {\n try {\n var reader = new FileReader();\n reader.onload = function () {\n toastr.warning(reader.result);\n };\n\n reader.readAsText(rejection.data.blob);\n } catch (error) {\n $log.error(error);\n }\n } else {\n toastr.warning(\"Validering feilet\");\n }\n }\n if (rejection.status === 403) {\n $log.error(rejection);\n toastr.error(\"Du har ikke tilgang til denne operasjonen\");\n }\n\n if (rejection.status === 404) {\n toastr.error(\"Ikke funnet\");\n }\n if (rejection.status === 405) {\n toastr.error(\"Method not allowed\");\n }\n if (rejection.status === 413) {\n //413 Payload Too Large\n toastr.error(\"Fil som lastes opp er for stor! Prøv å redusere antall vedlegg\");\n }\n if (rejection.status === 415) {\n //415 Unsupported Media Type\n toastr.error(\"Metode er ikke tillatt\");\n }\n if (rejection.status === 500) {\n if (\n rejection.data &&\n rejection.data.exceptionType &&\n rejection.data.exceptionType ===\n \"System.NotImplementedException\"\n ) {\n toastr.info(\"Metode ikke implementert på server\");\n } else {\n $log.error(\"rejection.data:\", rejection.data);\n\n if (isString(rejection.data)) {\n toastr.error(rejection.data, \"Feil på server\");\n } else {\n toastr.error(\"Feil på server\");\n }\n\n if (\n rejection.data &&\n rejection.data.error &&\n rejection.data.isDev\n ) {\n toastr.error(rejection.data.error);\n }\n }\n }\n\n return $q.reject(rejection);\n }\n };\n\n return errorService;\n }\n];\n","export default [\n \"$log\",\n \"commonApi\",\n function ($log, commonApi) {\n var priceCalc;\n var taxPercent = 0.25;\n\n commonApi.getParameters().then(function (res) {\n taxPercent = res.data.taxPercent;\n });\n\n function setPriceCalc(pc) {\n if (pc.amountPercentageEnt < 1) {\n pc.amountPercentageEnt = pc.amountPercentageEnt * 100;\n }\n if (pc.amountPercentageSales < 1) {\n pc.amountPercentageSales = pc.amountPercentageSales * 100;\n }\n priceCalc = pc;\n }\n\n function amountToBeTaxed() {\n return Math.round(Number(priceCalc.cost) + Number(priceCalc.amountEnt));\n }\n\n function amountTax() {\n return Math.round(amountToBeTaxed() * taxPercent);\n }\n\n function amountIncludedTaxed() {\n return Math.round(amountToBeTaxed() + amountTax());\n }\n\n function calcEntAmount(entPercentage, dynamicPrice) {\n var percent = entPercentage / 100;\n priceCalc.amountEnt = Math.round((Number(priceCalc.cost) * percent) / (1 - percent));\n\n priceCalc.amountSales = Math.round(calcSalesAmount(\n Number(priceCalc.amountPercentageSales), dynamicPrice));\n priceCalc.amountPercentageEnt = Math.round(entPercentage);\n\n return Math.round(priceCalc.amountEnt);\n }\n\n function calcEntPercentage(entAmount, dynamicPrice) {\n entAmount = Number(entAmount);\n\n priceCalc.amountPercentageEnt = Math.round(\n (100 * entAmount) / (Number(priceCalc.cost) + entAmount)\n );\n\n priceCalc.amountEnt = entAmount;\n priceCalc.amountSales = calcSalesAmount(\n Number(priceCalc.amountPercentageSales), dynamicPrice);\n\n return Math.round(priceCalc.amountPercentageEnt);\n }\n\n function calcSalesAmount(salesPercentage, dynamicPrice) {\n var percent = salesPercentage / 100;\n\n priceCalc.amountSales = Math.round((amountIncludedTaxed() * percent) / (1 - percent));\n\n priceCalc.price = dynamicPrice != false ?\n Math.round(Number(priceCalc.amountSales) + amountIncludedTaxed()) : priceCalc.price;\n priceCalc.recommenedPrice =\n Math.round(Number(priceCalc.amountSales) + amountIncludedTaxed());\n\n priceCalc.amountPercentageSales = Math.round(salesPercentage);\n\n return Math.round(priceCalc.amountSales);\n }\n\n function calcSalesPercentage(salesAmount, dynamicPrice) {\n salesAmount = Number(salesAmount);\n\n if (amountIncludedTaxed + salesAmount !== 0) {\n priceCalc.amountPercentageSales = Math.round(\n (100 * Number(salesAmount)) / (amountIncludedTaxed() + Number(salesAmount))\n );\n priceCalc.amountSales = salesAmount;\n priceCalc.price = dynamicPrice != false ?\n Math.round(Number(priceCalc.amountSales) + amountIncludedTaxed()) : priceCalc.price;\n priceCalc.recommenedPrice =\n Math.round(Number(priceCalc.amountSales) + amountIncludedTaxed());\n }\n return Math.round(priceCalc.amountPercentageSales);\n }\n\n function calcSalesAmountAndPercentage(price) {\n priceCalc.amountSales = price - amountIncludedTaxed();\n if (amountIncludedTaxed() + Number(priceCalc.amountSales) !== 0) {\n priceCalc.amountPercentageSales = Math.round(\n (100 * Number(priceCalc.amountSales)) /\n (amountIncludedTaxed() + Number(priceCalc.amountSales))\n );\n priceCalc.price = price;\n }\n return Math.round(priceCalc.amountSales);\n }\n\n return {\n setPriceCalc: setPriceCalc,\n amountTax: amountTax,\n amountToBeTaxed: amountToBeTaxed,\n amountIncludedTaxed: amountIncludedTaxed,\n calcEntAmount: calcEntAmount,\n calcEntPercentage: calcEntPercentage,\n calcSalesAmount: calcSalesAmount,\n calcSalesPercentage: calcSalesPercentage,\n calcSalesAmountAndPercentage: calcSalesAmountAndPercentage\n };\n }\n];","import commentHtml from \"shared/comment.html\";\nimport commentCtrl from \"shared/comment.js\";\nexport default [\n \"$http\",\n \"$uibModal\",\n \"albumConfig\",\n function($http, $uibModal, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function commentModal(context) {\n var modalInstance = $uibModal.open({\n template: commentHtml,\n controllerAs: \"modalvm\",\n backdrop: \"static\",\n resolve: {\n users: [\n function() {\n return getTagUsers();\n }\n ],\n context: [\n function() {\n return context;\n }\n ]\n },\n controller: commentCtrl\n });\n\n return modalInstance;\n }\n\n function saveComment(comment) {\n return $http.post(apiAddress + \"/comments/save\", comment);\n }\n\n function getComments(context) {\n return $http.post(apiAddress + \"/comments\", context);\n }\n\n function getTagUsers() {\n return $http.get(apiAddress + \"/comments/users\", {\n cache: true\n });\n }\n\n function setCommentAnswered(comment) {\n return $http.post(apiAddress + \"/comment/setanswered\", comment);\n }\n\n const toggleCustomerVisibility = comment => {\n return $http.post(\n apiAddress + \"/comment/togglecustomervisibility\",\n comment\n );\n };\n\n return {\n commentModal: commentModal,\n saveComment: saveComment,\n getComments: getComments,\n setCommentAnswered: setCommentAnswered,\n toggleCustomerVisibility: toggleCustomerVisibility\n };\n }\n];\n","export default \"
\\n

\\n Kommenter på reklamasjon\\n

\\n

\\n Kommenter på avvik\\n

\\n

\\n Kommenter på tiltak\\n

\\n
\\n
\\n \\n
\\n \\n \\n
\\n\\n
\\n For at kunde skal bli varslet om kommentaren per mail, må synlig for kunde hukes av.\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n\\n
\\n \\n\\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n
\\n
\";","export default [\n \"$http\",\n \"$log\",\n \"store\",\n \"moment\",\n \"commonApi\",\n \"albumConfig\",\n function($http, $log, store, moment, commonApi, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function book(uuid) {\n return $http.post(apiAddress + \"/ks/book\", {\n folderGuid: uuid\n });\n }\n\n function getProcessPhases(projTypeId) {\n return $http.get(\n apiAddress + \"/ks/\" + projTypeId + \"/processphases\"\n );\n }\n\n function getProcessPhase(req) {\n return $http.post(apiAddress + \"/ks/processphase\", req);\n }\n\n function uploadKsFile(file, projTypeId) {\n return $http.post(\n apiAddress + \"/ks/file/\" + projTypeId + \"/upload\",\n file\n );\n }\n\n function downloadKsFile(projTypeId) {\n return $http({\n url: apiAddress + \"/ks/file/\" + projTypeId + \"/download\",\n method: \"GET\",\n responseType: \"blob\",\n transformResponse: commonApi.transformDownload\n });\n }\n\n return {\n book: book,\n getProcessPhases: getProcessPhases,\n getProcessPhase: getProcessPhase,\n uploadKsFile: uploadKsFile,\n downloadKsFile: downloadKsFile\n };\n }\n];\n","export default [\r\n \"$http\",\r\n \"$log\",\r\n \"store\",\r\n \"moment\",\r\n \"commonApi\",\r\n \"albumConfig\",\r\n function ($http, $log, store, moment, commonApi, albumConfig) {\r\n var apiAddress = albumConfig.apiAddress;\r\n\r\n function getContextId(checklist) {\r\n switch (checklist.context) {\r\n case 1:\r\n return checklist.projectId;\r\n case 2:\r\n return checklist.houseId;\r\n case 3:\r\n return checklist.sectionId;\r\n case 4:\r\n return checklist.projCustId;\r\n }\r\n }\r\n\r\n function editChecklist(checklistId) {\r\n return $http.get(apiAddress + \"/checklists/edit/\" + checklistId);\r\n }\r\n\r\n function SaveChecklistAbrrebationActions(checklistItemDto) {\r\n return $http.post(\r\n apiAddress + \"/checklist/aberrebationAction/save\",\r\n checklistItemDto\r\n );\r\n }\r\n\r\n function GetChecklistAbrrebationActions(checklistRequest) {\r\n return $http.post(\r\n apiAddress + \"/checklist/aberrebationActions\",\r\n checklistRequest\r\n );\r\n }\r\n\r\n function getChecklists() {\r\n return $http.get(apiAddress + \"/checklists\");\r\n }\r\n\r\n function getChecklist(checklistRequest) {\r\n return $http.post(apiAddress + \"/checklist\", checklistRequest);\r\n }\r\n\r\n function saveChecklist(checklist) {\r\n return $http.post(apiAddress + \"/checklist/save\", checklist);\r\n }\r\n\r\n function saveChecklistInContext(checklist) {\r\n return $http.post(\r\n apiAddress + \"/checklist/context/save\",\r\n checklist\r\n );\r\n }\r\n\r\n function getSectionChecklists(sectionId) {\r\n return $http.get(apiAddress + \"/checklists/section/\" + sectionId);\r\n }\r\n\r\n function getSectionMultipleChecklists(projectId) {\r\n return $http.get(\r\n apiAddress + \"/checklists/section/multiple/\" + projectId\r\n );\r\n }\r\n function saveMultipleChecklist(data) {\r\n return $http.post(\r\n apiAddress + \"/checklist/section/save/multiple\",\r\n data\r\n );\r\n }\r\n\r\n function deleteCheckList(checklist) {\r\n return $http.post(apiAddress + \"/checklist/delete\", checklist);\r\n }\r\n\r\n function deleteChecklistItem(item) {\r\n return $http.post(apiAddress + \"/checklist/item/delete\", item);\r\n }\r\n\r\n function getChecklistsFilled(checklistId) {\r\n return $http.get(apiAddress + \"/checklists/filled/\" + checklistId);\r\n }\r\n\r\n function downloadPdf(checkListId, signature) {\r\n return $http({\r\n url: apiAddress + \"/checklist/download/pdf\",\r\n method: \"POST\",\r\n responseType: \"blob\",\r\n data: {\r\n checkListId: checkListId,\r\n base64Signature: signature\r\n },\r\n transformResponse: commonApi.transformDownload\r\n });\r\n }\r\n\r\n function getProjectChecklists(projectId) {\r\n return $http.get(apiAddress + \"/checklists/project/\" + projectId);\r\n }\r\n\r\n function getHouseChecklists(houseId) {\r\n return $http.get(apiAddress + \"/checklists/house/\" + houseId);\r\n }\r\n\r\n function getChecklistItemTypes() {\r\n return $http.get(apiAddress + \"/checklist/checklistitemtypes\");\r\n }\r\n\r\n function removeBluePrintCache(projectId) {\r\n return $http.post(\r\n apiAddress + \"/checklist/removeblueprintcache\",\r\n projectId\r\n );\r\n }\r\n\r\n function postVisibleToCustomer(checklistId, visible) {\r\n return $http.post(\r\n apiAddress + `/checklist/${checklistId}/${visible}/visible`\r\n );\r\n }\r\n\r\n return {\r\n getContextId: getContextId,\r\n editChecklist: editChecklist,\r\n SaveChecklistAbrrebationActions: SaveChecklistAbrrebationActions,\r\n GetChecklistAbrrebationActions: GetChecklistAbrrebationActions,\r\n getChecklists: getChecklists,\r\n getChecklist: getChecklist,\r\n saveChecklist: saveChecklist,\r\n saveChecklistInContext: saveChecklistInContext,\r\n getSectionChecklists: getSectionChecklists,\r\n getSectionMultipleChecklists: getSectionMultipleChecklists,\r\n saveMultipleChecklist: saveMultipleChecklist,\r\n deleteCheckList: deleteCheckList,\r\n deleteChecklistItem: deleteChecklistItem,\r\n getChecklistsFilled: getChecklistsFilled,\r\n downloadPdf: downloadPdf,\r\n getProjectChecklists: getProjectChecklists,\r\n getHouseChecklists: getHouseChecklists,\r\n getChecklistItemTypes: getChecklistItemTypes,\r\n removeBluePrintCache: removeBluePrintCache,\r\n postVisibleToCustomer: postVisibleToCustomer\r\n };\r\n }\r\n];\r\n","import albumNoteHtml from \"shared/albumNote/note.html\";\nimport albumNoteCtrl from \"shared/albumNote/ctrl.js\";\nexport default [\"$http\", \"$log\", \"$uibModal\", \"albumConfig\",\n function ($http, $log, $uibModal, albumConfig) {\n\n var apiAddress = albumConfig.apiAddress;\n\n\n function noteModal(noteObj) {\n var modalInstance = $uibModal.open({\n size: \"lg\",\n template: albumNoteHtml,\n controllerAs: \"modalvm\",\n controller: albumNoteCtrl,\n resolve: {\n projCustomers: [function () {\n return noteObj.projCustomers;\n }],\n note: [function () {\n return noteObj.note;\n }]\n }\n });\n\n return modalInstance;\n }\n\n function getNotes(id, type) {\n\n\n switch (type) {\n case 1:\n return $http.get(apiAddress + \"/customer/\" + id + \"/notes\");\n case 2:\n return $http.get(apiAddress + \"/contact/\" + id + \"/notes\");\n case 3:\n return $http.get(apiAddress + \"/person/\" + id + \"/notes\");\n\n }\n\n\n }\n\n function addNote(note) {\n return $http.post(apiAddress + \"/notes/add\", note);\n }\n\n function editNote(note) {\n return $http.post(apiAddress + \"/notes/edit\", note);\n }\n\n function deleteNote(note) {\n return $http.post(apiAddress + \"/notes/delete\", note);\n }\n\n\n return {\n noteModal: noteModal,\n getNotes: getNotes,\n addNote: addNote,\n editNote: editNote,\n deleteNote: deleteNote\n\n\n };\n\n }\n];","export default \"
\\n

Legg til notat

\\n

Vurder interessent

\\n
\\n
\\n
\\n
\\n \\n \\n
\\n\\n \\n\\n\\n
\\n\\n
1\\\">\\n \\n \\n
\\n\\n
\\n
\\n \\n \\n
\";","export default [\n \"$http\",\n \"$log\",\n \"$uibModal\",\n \"albumConfig\",\n function($http, $log, $uibModal, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getTypes() {\n return $http.get(apiAddress + \"/notify/types\");\n }\n\n function getRules() {\n return $http.get(apiAddress + \"/notify/rules\");\n }\n\n function postRule(rule) {\n return $http.post(apiAddress + \"/notify/rule\", rule);\n }\n\n return {\n getTypes,\n getRules,\n postRule\n };\n }\n];\n","export default [\"$http\", \"albumConfig\",\n function ($http, albumConfig) {\n var apiAddress = albumConfig.apiAddress;\n\n function getTemplates(category) {\n if (category != undefined) {\n return $http.get(apiAddress + \"/template?category=\" + category);\n } else {\n return $http.get(apiAddress + \"/template\");\n }\n }\n\n function putTemplate(templateDto) {\n return $http.put(apiAddress + \"/template\", templateDto);\n }\n\n function deleteTemplate(templateId) {\n return $http.delete(apiAddress + \"/template/\" + templateId);\n }\n\n return {\n getTemplates,\n putTemplate,\n deleteTemplate\n };\n }\n];","\r\n\r\nexport default [\r\n \"$http\",\r\n \"$log\",\r\n \"store\",\r\n \"moment\",\r\n \"commonApi\",\r\n \"albumConfig\",\r\n function ($http, $log, store, moment, commonApi, albumConfig) {\r\n var apiAddress = albumConfig.apiAddress;\r\n\r\n function getBarracksProject(projectId) {\r\n return $http.get(apiAddress + `/barracks/${projectId}`);\r\n }\r\n\r\n function getBarracksProjectsOptions(projectId) {\r\n return $http.get(apiAddress + `/barracks/${projectId}/projectsoptions`);\r\n }\r\n \r\n function addBarrackProject(data) {\r\n return $http.post(apiAddress + \"/barracks/project/add\", data);\r\n // return $http.post(apiAddress + `/barracks/${barrackId}/${projectId}/add`);\r\n }\r\n \r\n function editBarrackProject(data) {\r\n return $http.put(apiAddress + \"/barracks/project/edit\", data);\r\n }\r\n\r\n function moveBarrackProject(id) {\r\n return $http.put(apiAddress + `/barracks/${id}/move`);\r\n }\r\n function getBarrackProjectBookings(data) {\r\n return $http.post(apiAddress + \"/barracks/project/bookings\", data);\r\n }\r\n \r\n\r\n function getBarrackProject(barracksProjectsId) {\r\n return $http.get(apiAddress + `/barracks/${barracksProjectsId}/info`);\r\n }\r\n\r\n function delBooking(bookingId) {\r\n return $http.delete(apiAddress + `/barracks/booking/del/${bookingId}`);\r\n }\r\n\r\n return {\r\n getBarracksProject: getBarracksProject,\r\n getBarracksProjectsOptions: getBarracksProjectsOptions,\r\n addBarrackProject: addBarrackProject,\r\n editBarrackProject: editBarrackProject,\r\n moveBarrackProject: moveBarrackProject,\r\n getBarrackProjectBookings: getBarrackProjectBookings,\r\n getBarrackProject: getBarrackProject,\r\n delBooking: delBooking\r\n };\r\n }\r\n];\r\n","export default [\n \"$uibModalInstance\",\n function ($uibModalInstance) {\n var modalvm = this;\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm);\n };\n }\n];","import { forEach } from \"lodash\";\n\nexport default [\n \"ibmApi\",\n \"$uibModalInstance\",\n \"communities\",\n \"breadCrumb\",\n function (ibmApi, $uibModalInstance, communities, breadCrumb) {\n var modalvm = this;\n \n modalvm.communities = communities.data;\n modalvm.selectedCommunity = null;\n modalvm.selectedFolder = null;\n modalvm.folderList = [];\n modalvm.folderName = breadCrumb[breadCrumb.length - 1].title;\n modalvm.selectedFolderPath = null;\n modalvm.currentFolderPath = null;\n modalvm.breadCrumb = breadCrumb;\n\n modalvm.communityChanged = function() {\n modalvm.selectedFolder = null;\n modalvm.folderList.splice(0, modalvm.folderList.length);\n if (modalvm.selectedCommunity) { \n ibmApi.getProjDocuments(modalvm.selectedCommunity.projectId, true).then(res => {\n var folders = res.data.fileList.filter(i => i.ibmItemType == 0);\n modalvm.folderList.push({ folders: folders });\n });\n }\n };\n\n modalvm.folderChanged = function(folder,index) { \n modalvm.folderList.splice(index + 1, modalvm.folderList.length);\n if (folder.selectedFolder) { \n modalvm.selectedFolder = folder.selectedFolder;\n ibmApi.getProjDocumentsInFolder(\n modalvm.selectedCommunity.projectId, \n folder.selectedFolder.uuid,\n true)\n .then(res => {\n var folders = res.data.fileList.filter(i => i.ibmItemType == 0);\n if (folders.length > 0) {\n modalvm.folderList.push({ folders: folders });\n }\n });\n }\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n forEach(modalvm.folderList, folder => {\n if (folder.selectedFolder != null && folder.selectedFolder.name != null) { \n modalvm.selectedFolderPath += folder.selectedFolder.name + \"/\";\n }\n });\n modalvm.selectedFolderPath = modalvm.selectedFolderPath\n .substring(0, modalvm.selectedFolderPath.length - 1).replace(\"null\", \"\");\n\n modalvm.currentFolderPath =\n modalvm.breadCrumb.map(i => i.title)\n .join(\"/\").replace(\"Dokumenter/\", \"\");\n\n $uibModalInstance.close(modalvm);\n };\n }\n];","export default [\n \"$uibModalInstance\",\n \"replJobs\",\n \"breadCrumb\",\n function ($uibModalInstance, replJobs, breadCrumb) {\n var modalvm = this;\n \n modalvm.folderName = breadCrumb[breadCrumb.length - 1].title;\n modalvm.replJobs = replJobs;\n\n modalvm.deleteJob = function(job) {\n job.jobStatus = 4;\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm);\n };\n }\n];","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"uploader\",\n function ($uibModalInstance, $log, uploader) {\n var modalvm = this;\n\n modalvm.uploader = uploader;\n modalvm.cancel = function () {\n modalvm.uploader.clearQueue();\n $uibModalInstance.close(null);\n };\n modalvm.ok = function () {\n $uibModalInstance.close({\n uploader: modalvm.uploader,\n tags: modalvm.tags\n });\n };\n }\n];","export default \"
\\n

Last opp

\\n
\\n
\\n\\n\\n\\n
\\n
\\n
    \\n
  • \\n
    \\n \\n
  • \\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\";","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"documents\",\n \"documentTypes\",\n \"documentTypesMultiple\",\n function ($uibModalInstance, $log, documents, documentTypes, documentTypesMultiple) {\n var modalvm = this;\n modalvm.documents = documents;\n modalvm.documentTypes = documentTypes;\n modalvm.documentTypesMultiple = documentTypesMultiple;\n modalvm.checkMultiple = function (document) {\n document.documentTypeSupportMultiple = modalvm.documentTypesMultiple\n .find(dt => dt == document.documentType) != null;\n };\n modalvm.cancel = function () {\n $uibModalInstance.close(null);\n };\n modalvm.ok = function () {\n var docs = modalvm.documents.map(function (doc) {\n return { ibmItem: doc, documentType: doc.documentType };\n });\n $uibModalInstance.close(docs);\n };\n }\n];","import { forEach } from \"lodash\";\n\nexport default [\n \"$uibModalInstance\",\n \"folderName\",\n \"folderUuid\",\n \"folderPermissions\",\n \"ibmApi\",\n \"haveRoleFilter\",\n function ($uibModalInstance, folderName, folderUuid, folderPermissions, ibmApi, haveRole) {\n\n forEach(folderPermissions, folderPermission => {\n if (folderPermission.inheritedFromPath == null) {\n folderPermission.active = true;\n }\n });\n\n var modalvm = this;\n modalvm.folderName = folderName;\n modalvm.canEditPermissions = haveRole([\"PU\", \"PRL\"], \"any\");\n modalvm.folderPermissions = folderPermissions;\n modalvm.tradeCodes = [];\n modalvm.active = false;\n\n modalvm.toogleActive = function () {\n forEach(modalvm.tradeCodes, tradeCode => {\n tradeCode.active = !modalvm.active;\n });\n modalvm.tradeCodes = [...modalvm.tradeCodes];\n forEach(modalvm.folderPermissions, folderPermission => {\n if (folderPermission.active !== undefined) {\n folderPermission.active = !modalvm.active;\n }\n });\n };\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n let permissions = modalvm.tradeCodes.map(function (i) {\n return { connectionsFolderId: folderUuid, tradeCodeId: i.id, active: i.active };\n });\n let removedPermissions = modalvm.folderPermissions\n .filter(i => i.active == false)\n .map(function (i) {\n return {\n connectionsFolderId: folderUuid,\n tradeCodeId: i.tradeCodeId,\n active: false\n };\n });\n\n $uibModalInstance.close(permissions.concat(removedPermissions));\n };\n\n modalvm.getTradeCodes = function () {\n modalvm.tradeCodes = [];\n let tradeCodesAvailable = [];\n ibmApi.getTradeCodes().then(res => {\n forEach(res.data, tradeCode => {\n let permission = modalvm.folderPermissions\n .find(p => p.tradeCodeId == tradeCode.id);\n if ((!permission || permission.delete) && !tradeCode.inActive ) {\n tradeCodesAvailable.push(tradeCode);\n }\n });\n modalvm.tradeCodes = [...tradeCodesAvailable];\n });\n };\n modalvm.getTradeCodes();\n\n }\n];","export default [\n \"$uibModalInstance\",\n \"categories\",\n \"categorySelected\",\n \"folderName\",\n \"haveRoleFilter\",\n function ($uibModalInstance, categories, categorySelected, folderName, haveRole) {\n\n var modalvm = this;\n modalvm.categories = categories;\n modalvm.categorySelected = categorySelected;\n modalvm.folderName = folderName;\n\n modalvm.select = function(category) {\n if (modalvm.categorySelected == category) { \n $uibModalInstance.close(null);\n }\n $uibModalInstance.close(category);\n };\n }\n];","import markup from \"./markup.html\";\nimport saveFile from \"shared/saveFile\";\n\nimport addfolderctrl from \"./addfolder\";\nimport addfolderhtml from \"./addfolder.html\";\n\nimport addReplJobCtrl from \"./addrepljob\";\nimport addReplJobHtml from \"./addrepljob.html\";\n\nimport admReplJobsCtrl from \"./admrepljobs\";\nimport admReplJobsHtml from \"./admrepljobs.html\";\n\nimport uploadctrl from \"./upload\";\nimport uploadhtml from \"./upload.html\";\n\nimport mycontracthtml from \"./mycontract.html\";\nimport mycontractctrl from \"./mycontract\";\n\nimport editpermissionshtml from \"./editPermissions.html\";\nimport editpermissionsctrl from \"./editPermissions\";\n\nimport categoryhtml from \"./category.html\";\nimport categoryctrl from \"./category\";\n\nimport { map, remove, filter, includes, forEach } from \"lodash\";\n\nexport default {\n bindings: {\n documents: \"<\",\n blobDocuments: \"<\",\n myContract: \"<\",\n onUpdate: \"&\",\n folderId: \"<\",\n tags: \"<\",\n appendBodyClass: \"<\",\n showToggleTagged: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"ibmApi\",\n \"$window\",\n \"store\",\n \"$state\",\n \"$stateParams\",\n \"toastr\",\n \"albumConfig\",\n \"$uibModal\",\n \"$confirm\",\n \"documentApi\",\n \"FileUploader\",\n \"$rootScope\",\n \"haveRoleFilter\",\n \"sectionApi\",\n \"attachmentApi\",\n function (\n $log,\n ibmApi,\n $window,\n store,\n $state,\n $stateParams,\n toastr,\n albumConfig,\n $uibModal,\n $confirm,\n documentApi,\n FileUploader,\n $rootScope,\n haveRole,\n sectionApi,\n attachmentApi\n ) {\n var element = $(\"[nv-file-drop]\");\n element.on(\"dragleave\", function () {\n element.removeClass(\"nv-file-over\");\n });\n\n var apiAddress = albumConfig.apiAddress;\n\n function openAddFolderModal() {\n var modalInstance = $uibModal.open({\n template: addfolderhtml,\n controllerAs: \"modalvm\",\n controller: addfolderctrl\n });\n\n return modalInstance;\n }\n\n function openUploadModal(model) {\n var modalInstance = $uibModal.open({\n template: uploadhtml,\n controllerAs: \"modalvm\",\n controller: uploadctrl,\n resolve: {\n uploader: [\n function () {\n return model.uploader;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n function openMyContractModal(model) {\n var modalInstance = $uibModal.open({\n template: mycontracthtml,\n controllerAs: \"modalvm\",\n controller: mycontractctrl,\n size: \"lg\",\n resolve: {\n documents: [\n function () {\n return filter(model.docs, \"selected\");\n }\n ],\n documentTypes: [\n function () {\n return model.myContractDocumentTypes;\n }\n ],\n documentTypesMultiple: [\n function () {\n return model.myContractDocumentTypesMultiple;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n function openEditFolderPermissionsModal(folderName, folderUuid, permissions) {\n var modalInstance = $uibModal.open({\n template: editpermissionshtml,\n controllerAs: \"modalvm\",\n controller: editpermissionsctrl,\n size: \"lg\",\n resolve: {\n folderName: [\n function () {\n return folderName;\n }\n ],\n folderUuid: [\n function () {\n return folderUuid;\n }\n ],\n folderPermissions: [\n function () {\n return permissions;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n function openAddReplicationJobModal(doc,breadCrumb) {\n var modalInstance = $uibModal.open({\n size: \"lg\",\n template: addReplJobHtml,\n controllerAs: \"modalvm\",\n controller: addReplJobCtrl,\n resolve: {\n communities: [\n function () {\n return ibmApi.getCommunities(true);\n }\n ],\n breadCrumb: [\n function() { \n return breadCrumb;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n function openAdmReplicationJobsModal(doc,breadCrumb) {\n var modalInstance = $uibModal.open({\n size: \"xl\",\n template: admReplJobsHtml,\n controllerAs: \"modalvm\",\n controller: admReplJobsCtrl,\n resolve: {\n replJobs: [\n function () {\n return doc.replJobs;\n }\n ],\n breadCrumb: [\n function() { \n return breadCrumb;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n function openCategoryModal(doc) {\n var modalInstance = $uibModal.open({\n template: categoryhtml,\n size: \"lg\",\n controllerAs: \"modalvm\",\n controller: categoryctrl,\n resolve: {\n categories: [\n function () {\n return model.categories;\n }\n ],\n categorySelected: [\n function() {\n return doc.category;\n }\n ],\n folderName: [\n function() { \n return doc.name;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var model = this;\n var profile = store.get(\"profile\");\n model.env = albumConfig.env;\n\n model.$onInit = function () {\n model.isCustomerDocuments = $state.$current.name == \"main.customers.customer.documents\";\n model.isSectionDocuments = $state.$current.name == \"main.projects.project.house.sections.section.documents\";\n model.docs = model.documents.fileList;\n model.blobDocs = model.blobDocuments || [];\n model.myContractDocuments = model.myContract != null ?\n model.myContract.documents : [];\n model.useMyContract = model.myContract != null ?\n model.myContract.enable : false;\n model.myContractDocumentTypes = model.myContract != null ?\n model.myContract.documentTypes : [];\n model.myContractDocumentTypesMultiple = model.myContract != null ?\n model.myContract.documentTypesMultiple : [];\n model.breadCrumb = model.documents.breadCrumb;\n model.communityId = model.documents.communityId;\n model.folderType = model.documents.folderType;\n model.project = model.documents.project;\n model.showConnectionsButton = model.folderId !== undefined;\n model.showDeleteCommunity =\n model.communityId !== undefined &&\n haveRole([\"Admin\", \"PU\", \"PRL\"], \"any\");\n model.showCreateCommunity =\n !model.showDeleteCommunity &&\n haveRole([\"Admin\", \"PU\", \"PRL\"], \"any\");\n model.showUpload = model.folderType || !model.communityId;\n\n if (model.folderType === \"sections\") {\n model.showUpload = false;\n }\n if (model.folderType === \"fdv\") {\n model.showUpload = false;\n }\n\n if (profile.connectionUserId) {\n model.showDelete = true;\n model.showPin = true;\n }\n\n if (model.docs && model.docs.length > 0) {\n forEach(model.docs, doc => {\n if (doc.ibmItemType == 0) {\n doc.loadingPermissionList = true;\n doc.loadingReplicationJobs = true;\n doc.replJobs = [];\n }\n });\n\n var uuids = model.docs\n .filter(d => d.ibmItemType == 0)\n .map(function (d) { return d.uuid.toString(); });\n\n if (model.project && model.project.id) {\n ibmApi.getFolderPermissions(model.project.id, uuids)\n .then(res => {\n forEach(model.docs, doc => {\n doc.loadingPermissionList = false;\n doc.permissionList = res.data\n .filter(d => d.connectionsFolderId == doc.uuid);\n });\n });\n }\n\n if (!model.isCustomerDocuments && !model.isSectionDocuments) {\n ibmApi.getReplicationJobs($stateParams.id, $stateParams.folderId).then(res => {\n if (model.docs && model.docs.length > 0) {\n forEach(model.docs, doc => {\n doc.loadingReplicationJobs = false;\n doc.replJobsText = \"\";\n var jobs = res.data.filter(i => \n i.sourceFolderUuid.sourceFolderUuid.toString() == \n doc.uuid.toString());\n if (jobs.length == 1)\n {\n doc.replJobs = jobs[0].jobs;\n doc.replJobsText = doc.replJobs.map((j) => j.targetProject.name).join(\", \");\n }\n });\n }\n });\n\n ibmApi.getReplicationFiles($stateParams.folderId).then(res => {\n if (model.docs && model.docs.length > 0) {\n forEach(model.docs, doc => {\n var files = res.data.filter(i => i.targetUuid == doc.uuid);\n if (files.length == 1)\n {\n doc.sourceProjectName = files[0].sourceProjectName;\n doc.sourceFolderPath = files[0].sourceFolderPath;\n }\n });\n }\n });\n\n ibmApi.getFoldersCategories($stateParams.id, uuids).then(res => {\n model.categories = res.data.categories;\n forEach(model.docs, doc => {\n var cat = res.data.folderCategories.filter(i => i.uuid == doc.uuid);\n if (cat.length == 1)\n {\n doc.category = cat[0].folderCategory;\n doc.categoryName = model.categories\n .filter(i => i.id == doc.category)[0].name;\n } else {\n doc.category = -1;\n }\n });\n });\n }\n }\n };\n\n model.uploader = new FileUploader({\n removeAfterUpload: true,\n url: apiAddress + \"/ibm/upload/withformdata\",\n headers: {\n Authorization: \"Bearer \" + localStorage.getItem(\"msal.idtoken\")\n }\n });\n model.uploader.onCompleteItem = function (item, response) {\n if (response.success) {\n toastr.info(response.message);\n } else {\n toastr.error(response.message, response.error);\n }\n };\n model.addFolder = function () {\n openAddFolderModal().result.then(function (folder) {\n if (!folder) return;\n\n if (model.folderId.length > 1) {\n folder.collectionId = model.folderId;\n documentApi\n .createSubFolder(folder)\n .then(function () { });\n } else {\n folder.communityId = model.communityId;\n documentApi.createFolder(folder).then(function () { });\n }\n });\n };\n\n model.uploader.onAfterAddingAll = function (addedItems) {\n if (addedItems.length > 0 && !model.modalIsOpen) {\n model.uploadFile();\n }\n };\n\n model.uploader.onCompleteAll = function () {\n $rootScope.loading = false;\n $state.reload();\n };\n model.uploader.onBeforeUploadItem = function (item) {\n item.formData.push({\n communityId: model.communityId || \"\"\n });\n item.formData.push({\n folderId: model.folderId || \"\"\n });\n\n item.formData.push({\n tags: model.formDataTags || \"\"\n });\n item.formData.push({\n folderType: model.folderType || \"\"\n });\n };\n\n model.taggedFilter = function (item) {\n if (!model.showToggleTagged) return true;\n\n if (model.toggleTaged) return true;\n\n return !item.isTagged;\n };\n model.deleteCommunity = function () {\n $confirm({\n text:\n \"Er du sikker på at vil slette felleskapet ? \" +\n \"\\n Alle mapper og dokumenter slettes også!!\"\n }).then(function () {\n ibmApi\n .deleteCommunity({\n id: model.communityId\n })\n .then(function () {\n $state.reload();\n });\n });\n };\n model.createCommunity = function () {\n var community = {\n tags: [],\n name: model.project.name,\n description: \"Felleskap opprettet fra Album\",\n projId: model.project.projId,\n projectId: model.project.id\n };\n\n $confirm({\n text:\n \"Vil du opprette ett felleskap med standard mappestruktur ?\"\n }).then(function () {\n ibmApi.createCommunity(community).then(function () {\n $state.reload();\n //toastr.info(\"Album oppretter felleskap i bakgrunnen, du vil få beskjed når felleskapet er opprettet\");\n });\n });\n };\n\n model.navigate = function (bc) {\n if (bc.root) {\n $state.go(\"main.projects.project.documents\", {\n id: model.project.id,\n folderId: \"\"\n });\n } else {\n $state.go(\"main.projects.project.documents\", {\n id: model.project.id,\n folderId: bc.id\n });\n }\n };\n\n model.getters = {\n bytes: function (row) {\n return parseInt(row.totalMediaSize);\n }\n };\n\n model.moveToMyContractAllowed = function () {\n var toMove = filter(model.docs, \"selected\");\n return toMove.length > 0 && model.useMyContract;\n };\n model.mergeAllowed = function () {\n var toMerge = filter(model.docs, \"selected\");\n return toMerge.length > 1;\n };\n model.mergeAndDownload = function () {\n var toMerge = filter(model.docs, \"selected\");\n var mergeAbleExtensions = [\".doc\", \".docx\", \".pdf\"];\n var mergeAble = filter(toMerge, function (d) {\n return includes(mergeAbleExtensions, d.extension);\n });\n\n if (toMerge.length !== mergeAble.length) {\n toastr.info(\n \"Ikke alle dokumente kan sammenstilles, kun word og pdf\"\n );\n }\n\n documentApi.mergeAndDownload(mergeAble).then(saveFile);\n };\n\n model.moveToMyContract = function () {\n openMyContractModal(model).result.then(function (documents) {\n if (documents) {\n sectionApi.postMyContractDocuments(\n model.myContract.sectionId, documents).then(() => {\n $state.reload();\n }).catch(function () {\n model.moveToMyContract();\n });\n } else $state.reload();\n });\n };\n\n model.downloadMyContractDocument = function (doc) {\n attachmentApi.downloadAttachment(doc).then(saveFile);\n };\n\n model.openMyContractDocument = function (doc) {\n attachmentApi.downloadAttachment(doc).then(result => {\n\n var url = window.URL.createObjectURL(result.data.blob);\n var newWindow = window.open(url, \"_blank\");\n\n setTimeout(function () {\n try {\n newWindow.document.title = result.data.name;\n }\n catch (e) { return; }\n }, 2000);\n });\n };\n\n model.deleteMyContractDocument = function (doc) {\n $confirm({\n text: \"Er du sikker på at vil slette \" +\n doc.fileName + \" fra min kontrakt?\\n\\n\" +\n \" Dokumentet vil flyttes tilbake til øvrige dokumenter.\"\n }).then(function () {\n sectionApi.deleteMyContractDocument(doc.guid).then(function () {\n $state.reload();\n });\n });\n };\n\n model.uploadFile = function () {\n model.modalIsOpen = true;\n\n openUploadModal(model).result.then(function (upload) {\n if (upload === null) {\n model.uploader.queue.clearQueue();\n } else {\n var tags = model.tags\n ? model.tags.toString().split(\",\")\n : [];\n tags = map(tags, function (t) {\n return \"album_\" + t;\n });\n var inputTags = upload.tags\n ? upload.tags.split(\",\")\n : [];\n model.formDataTags = tags.concat(inputTags);\n\n $rootScope.loading = true;\n\n upload.uploader.uploadAll();\n\n model.modalIsOpen = false;\n }\n });\n };\n\n model.togglePin = function (doc) {\n ibmApi.togglePin(doc).then(\n function () {\n doc.favorite = !doc.favorite;\n },\n function () {\n toastr.error(\"Kunne ikke feste filen\");\n }\n );\n };\n\n model.browseFolder = function (folder) {\n if (model.folderType === \"sections\") {\n $state.go(\n \"main.projects.project.house.sections.section.documents\",\n {\n id: model.project.id,\n ppId: folder.meta.houseId,\n sectionId: folder.meta.sectionId\n }\n );\n } else {\n model.onUpdate({\n folder: folder.uuid\n });\n }\n };\n\n model.openFileInConnection = function (doc) {\n $window.open(doc.open);\n };\n\n model.deleteFileFromConnections = function (doc) {\n $confirm({\n text: \"Er du sikker på at vil slette \" + doc.name + \" ?\"\n }).then(function () {\n ibmApi.deleteFileFromConnections(doc).then(function () {\n remove(model.docs, {\n uuid: doc.uuid\n });\n toastr.info(doc.name + \" slettet.\");\n });\n });\n };\n\n model.downloadFileFromConnections = function (doc) {\n ibmApi\n .downloadFileFromConnections({\n id: doc.uuid,\n fileName: doc.name,\n href: doc.download\n })\n .then((res) => {\n saveFile(res, doc.name, doc.applicationType);\n });\n };\n\n model.editPermissions = function (doc) {\n openEditFolderPermissionsModal(doc.name, doc.uuid, doc.permissionList)\n .result.then(function (permissions) {\n if (permissions) {\n ibmApi.putFolderPermissions(model.project.id, permissions).then(() => {\n $state.reload();\n });\n }\n });\n };\n\n model.addReplicationJob = function (doc,breadCrumb) { \n openAddReplicationJobModal(doc,breadCrumb).result.then(function(res) {\n ibmApi.postReplicationJob(\n {\n sourceFolderUuid: doc.uuid,\n sourceProjTable: model.project.id,\n sourceFolderPath: res.currentFolderPath,\n targetFolderUuid: res.selectedFolder.uuid,\n targetProjTable: res.selectedCommunity.projectId,\n targetFolderPath: res.selectedFolderPath\n }\n ).then(() => {\n $state.reload();\n });\n });\n };\n\n model.admReplicationJobs = function(doc, breadCrumb) { \n var replJobsStatus = doc.replJobs.map(function(j) { \n return { id: j.id, jobStatus: j.jobStatus }; \n });\n openAdmReplicationJobsModal(doc,breadCrumb).result.then(function(res) {\n if (!res) { \n forEach(doc.replJobs, replJob => {\n var j = replJobsStatus.filter(j => j.id == replJob.id)[0];\n replJob.jobStatus = j.jobStatus;\n });\n } else { \n ibmApi.putReplicationJobs(doc.replJobs).then(() => {\n $state.reload();\n });\n }\n });\n };\n\n model.configureReplJobs = function (doc,breadCrumb) { \n breadCrumb = breadCrumb || [{ title: doc.name }];\n if (doc.replJobs.length == 0) { \n model.addReplicationJob(doc,breadCrumb);\n } else {\n $confirm({\n size: \"lg\",\n customButtonText: \"Administrere speilingsjobber\",\n customButtonText2: \"Ny speilingsjobb\",\n showCustomButton: true,\n showCustomButton2: true,\n hideOk: true,\n customButtonObj: {\n adminJobs: true\n },\n customButtonObj2: {\n newJob: true\n },\n text: \"Administrere speilingsjobber eller lage ny speilingsjobb?\"\n }).then(function(res) {\n if (res.newJob == true) { \n model.addReplicationJob(doc,breadCrumb);\n } else if (res.adminJobs == true) {\n model.admReplicationJobs(doc,breadCrumb);\n }\n });\n }\n };\n\n model.changeCategory = function(doc) {\n openCategoryModal(doc).result.then(function(res) {\n ibmApi.putFolderCategory(model.project.id, doc.uuid, res).then(result => {\n $state.reload();\n });\n });\n };\n }\n ]\n};\n","export default \"\\n\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n \\n
\\n \\n \\n
\\n
\\n\\n \\n \\n
\\n\\n
    \\n
  1. \\n {{bc.title}}\\n
  2. \\n
  3. \\n {{bc.title}}
  4. \\n
\\n\\n
Øvrige dokumenter
\\n
\\n
\\n Ingen dokumenter i denne mappen\\n \\n Dra filer hit for å laste opp\\n \\n
\\n
\\n\\n
0 || model.blobDocs.length>0\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnDatoForfatterMappetilgang (eksterne){{ (model.isSectionDocuments || model.isCustomerDocuments)\\n ? 'Størrelse/Innhold' : 'Speiling' }}{{ (model.isSectionDocuments || model.isCustomerDocuments) ? '' : 'Kategori' }}
\\n \\n \\n {{\\n doc.sourceProjectName ? 'SPEILET ' : '' }} {{doc.name}}\\n \\n \\n \\n {{doc.name}}\\n\\n \\n {{doc.author}}\\n \\n \\n {{ doc.permissionList.length }} fagområder\\n \\n \\n \\n \\n Til 0 felleskap\\n \\n 0\\\" uib-tooltip=\\\"{{doc.replJobsText}}\\\">\\n Til {{ doc.replJobs[0].targetProject.name }}\\n 1\\\">(+{{doc.replJobs.length - 1}})\\n \\n \\n \\n \\n \\n Fra {{ doc.sourceProjectName }}\\n \\n \\n \\n -1 && doc.ibmItemType == 0\\\"\\n ng-click=\\\"model.changeCategory(doc)\\\">\\n {{ doc.categoryName }}\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n {{doc.fileName}}\\n \\n {{doc.createdBy}}{{doc.contentLength | bytes}}\\n \\n
\\n
\\n
\\n\\n
Min Kontrakt
\\n
0\\\" st-table=\\\"model.myContractDocuments\\\">\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n
NavnDokumenttypeDatoForfatterStørrelse/Innhold
\\n \\n \\n \\n {{doc.fileName}}\\n \\n {{doc.documentTypeName}}{{doc.createdBy}}{{doc.contentLength | bytes}}\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n Ingen dokumenter i min kontrakt\\n \\n Flytt hit fra øvrige dokumenter\\n \\n
\\n
\";","export default \"
\\n

Ny mappe

\\n
\\n
\\n\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n \\n
\";","export default \"
\\n

Flytt til min kontrakt

\\n
\\n
\\n\\n

Disse dokumentene vil tilgjengeliggjøres for kunden

\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnDokumenttype
\\n \\n \\n \\n \\n \\n
\\n\\n
\\n
\\n \\n \\n
\";","export default \"\\n\\n
\\n
Mappetilgang for eksterne
\\n
Mappe: {{modalvm.folderName}}
\\n
\\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n
\\n \\n FagområdeArvet fra
\\n \\n \\n \\n {{ p.tradeCodeName }}\\n \\n Lagt til\\n \\n \\n {{ p.inheritedFromPath }}\\n \\n
\\n \\n \\n {{ t.name }}\\n \\n
\\n
\\n
\\n \\n \\n
\";","export default \"
\\n

Speil til felleskap

\\n
Mappe: {{modalvm.folderName}}
\\n
\\n
\\n\\n
\\n \\n \\n \\n {{$select.selected.name}} ({{$select.selected.projId}})\\n \\n \\n {{item.name}} ({{item.projId}})\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\";","export default \"\\n\\n
\\n

Speilingsjobber

\\n
Mappe: {{modalvm.folderName}}
\\n
\\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
FelleskapMappeSiste kjøring
{{\\n replJob.targetProject.name }} ({{ replJob.targetProject.projId }}){{\\n replJob.targetFolderPath }}{{\\n replJob.lastRun | date: \\\"dd.MM.yyyy HH:mm:ss\\\" }}\\n \\n
\\n\\n
\\n
\\n \\n \\n
\";","export default \"
\\n

Mappekategori for deling av innhold

\\n
Mappe: {{modalvm.folderName}}
\\n
\\n\\n
\\n \\n
\";","import markup from \"./markup.html\";\n\nexport default {\n bindings: {\n projectId: \"<\",\n updateSelected: \"&\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"documentApi\",\n function(documentApi) {\n const browseConnections = entry => {\n if (entry) {\n documentApi.browseConnections(entry.uuid).then(entries => {\n model.blueprints = entries.data;\n });\n } else {\n documentApi\n .browseConnections(undefined, model.projectId, 1)\n .then(entries => {\n model.blueprints = entries.data;\n });\n }\n };\n\n var model = this;\n\n model.$onInit = function() {\n model.blueprints = [];\n model.entryHistory = [{ title: \"#\", root: true }];\n model.selected = [];\n browseConnections();\n };\n\n model.select = entry => {\n var found = model.selected.find(e => e.uuid === entry.uuid);\n if (!found) {\n model.selected.push(entry);\n } else {\n found.selected = entry.selected;\n }\n\n model.updateSelected({\n selectedItems: model.selected.filter(e => {\n return e.selected;\n })\n });\n };\n model.navigate = entry => {\n if (entry.type === \"File\") return;\n\n var index = model.entryHistory.findIndex(\n e => e.uuid === entry.uuid\n );\n if (index !== -1) {\n model.entryHistory.splice(index + 1);\n\n entry = entry.root ? null : entry;\n } else {\n model.entryHistory.push(entry);\n }\n\n browseConnections(entry);\n };\n }\n ]\n};\n","export default \"
\\n

Tegninger

\\n \\n\\n \\n
\";","import saveFile from \"shared/saveFile\";\nimport markup from \"./markup.html\";\nimport navigation from \"shared/navigation.js\";\n\nexport default {\n bindings: {\n persistKey: \"<\",\n showCustomer: \"<\",\n showProject: \"<\",\n showHouse: \"<\",\n showSection: \"<\",\n hideStatus: \"<\",\n contextObject: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"$state\",\n \"store\",\n \"moment\",\n \"registrationApi\",\n \"$timeout\",\n \"systemApi\",\n \"albumConfig\",\n\n function (\n $log,\n $state,\n store,\n moment,\n registrationApi,\n $timeout,\n systemApi,\n albumConfig\n ) {\n var createContextSearch = function (tableState, contextObject) {\n tableState = tableState || {};\n tableState.search = tableState.search || {};\n tableState.search.predicateObject =\n tableState.search.predicateObject || {};\n\n if (contextObject) {\n tableState.search.predicateObject.contextObject = true;\n if (contextObject.sectionId) {\n tableState.search.predicateObject.sectionOid =\n contextObject.sectionId;\n }\n if (contextObject.customerId) {\n tableState.search.predicateObject.customerOid =\n contextObject.customerId;\n }\n if (contextObject.projectId) {\n tableState.search.predicateObject.projectOid =\n contextObject.projectId;\n }\n if (contextObject.contactId) {\n tableState.search.predicateObject.contactId =\n contextObject.contactId;\n }\n if (contextObject.contactPersonId) {\n tableState.search.predicateObject.contactPersonOid =\n contextObject.contactPersonId;\n }\n if (contextObject.openOnly) {\n tableState.search.predicateObject.lineStatus = \"0\";\n }\n }\n\n return tableState;\n };\n\n var createContextTableData = function (tableState, contextObject) {\n\n var tableData = {};\n tableData.headers = [];\n tableData.itemsPerPage = 15;\n tableData.sortBy = [];\n tableData.sortDesc = [];\n\n if (tableState.pagination.start == null || tableState.pagination.start == 0) {\n tableData.page = 1;\n } else {\n tableData.page = (tableState.pagination.start / tableData.itemsPerPage) + 1;\n }\n\n if (tableState.sort.predicate) {\n tableData.sortBy.push(tableState.sort.predicate);\n tableData.sortDesc.push(tableState.sort.reverse);\n }\n\n if (contextObject.sectionId) {\n tableData.headers\n .push({\n type: \"int\",\n filterClause: 0,\n filterName: \"sectionOid\",\n filterValues: [contextObject.sectionId]\n });\n }\n if (contextObject.customerId) {\n tableData.headers\n .push({\n type: \"int\",\n filterClause: 0,\n filterName: \"customerOid\",\n filterValues: [contextObject.customerId]\n });\n }\n if (contextObject.projectId) {\n tableData.headers\n .push({\n type: \"int\",\n filterClause: 0,\n filterName: \"projectOid\",\n filterValues: [contextObject.projectId]\n });\n }\n if (contextObject.contactId) {\n tableData.headers\n .push({\n type: \"int\",\n filterClause: 0,\n filterName: \"contactId\",\n filterValues: [contextObject.contactId]\n });\n }\n if (contextObject.contactPersonId) {\n tableData.headers\n .push({\n type: \"int\",\n filterClause: 0,\n filterName: \"contactPersonOid\",\n filterValues: [contextObject.contactPersonId]\n });\n }\n if (contextObject.openOnly) {\n tableData.headers\n .push({\n type: \"int\",\n filterClause: 0,\n filterName: \"lineStatus\",\n filterValues: [\"0\"]\n });\n }\n if (tableState.search && tableState.search.predicateObject) {\n if (tableState.search.predicateObject.lineId) {\n tableData.headers\n .push({\n type: \"string\",\n filterClause: 0,\n filterName: \"lineId\",\n filterValues: [tableState.search.predicateObject.lineId]\n });\n }\n if (tableState.search.predicateObject.lineName) {\n tableData.headers\n .push({\n type: \"string\",\n filterClause: 0,\n filterName: \"lineName\",\n filterValues: [tableState.search.predicateObject.lineName]\n });\n }\n if (tableState.search.predicateObject.customerName) {\n tableData.headers\n .push({\n type: \"string\",\n filterClause: 0,\n filterName: \"customerName\",\n filterValues: [tableState.search.predicateObject.customerName]\n });\n }\n if (tableState.search.predicateObject.category) {\n tableData.headers\n .push({\n type: \"string\",\n filterClause: 0,\n filterName: \"category\",\n filterValues: [tableState.search.predicateObject.category]\n });\n }\n if (tableState.search.predicateObject.createdBy) {\n tableData.headers\n .push({\n type: \"string\",\n filterClause: 0,\n filterName: \"createdBy\",\n filterValues: [tableState.search.predicateObject.createdBy]\n });\n }\n if (tableState.search.predicateObject.closedBy) {\n tableData.headers\n .push({\n type: \"string\",\n filterClause: 0,\n filterName: \"closedBy\",\n filterValues: [tableState.search.predicateObject.closedBy]\n });\n }\n if (tableState.search.predicateObject.contactPersonName) {\n tableData.headers\n .push({\n type: \"string\",\n filterClause: 0,\n filterName: \"contactPersonName\",\n filterValues: [tableState.search.predicateObject.contactPersonName]\n });\n }\n if (tableState.search.predicateObject.boost) {\n tableData.headers\n .push({\n type: \"int\",\n filterClause: 0,\n filterName: \"boost\",\n filterValues: [tableState.search.predicateObject.boost]\n });\n }\n if (tableState.search.predicateObject.lineStatus) {\n tableData.headers\n .push({\n type: \"int\",\n filterClause: 0,\n filterName: \"lineStatus\",\n filterValues: [tableState.search.predicateObject.lineStatus]\n });\n }\n if (tableState.search.predicateObject.regSource) {\n tableData.headers\n .push({\n type: \"int\",\n filterClause: 0,\n filterName: \"regSource\",\n filterValues: [tableState.search.predicateObject.regSource]\n });\n }\n if (tableState.search.predicateObject.lineDate) {\n\n var day = tableState.search.predicateObject.lineDate.split(\".\")[0];\n var month = tableState.search.predicateObject.lineDate.split(\".\")[1];\n var year = tableState.search.predicateObject.lineDate.split(\".\")[2];\n\n if ((day && day.length == 2) &&\n (month && month.length == 2) &&\n (year && year.length == 4)) {\n tableData.headers\n .push({\n type: \"date\",\n filterClause: 0,\n filterName: \"lineDate\",\n filterValues: [`${year}-${month}-${day}`]\n });\n }\n }\n if (tableState.search.predicateObject.deadLine) {\n\n var dd = tableState.search.predicateObject.deadLine.split(\".\")[0];\n var mm = tableState.search.predicateObject.deadLine.split(\".\")[1];\n var yy = tableState.search.predicateObject.deadLine.split(\".\")[2];\n\n if ((dd && dd.length == 2) &&\n (mm && mm.length == 2) &&\n (yy && yy.length == 4)) {\n tableData.headers\n .push({\n type: \"date\",\n filterClause: 0,\n filterName: \"deadLine\",\n filterValues: [`${yy}-${mm}-${dd}`]\n });\n }\n }\n\n }\n\n return tableData;\n };\n\n var colspanFooter = 9;\n var currentTableState;\n var currentTableData;\n var model = this;\n let dateFilter;\n model.nav = navigation;\n model.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n\n model.openDatePicker = function (e) {\n dateFilter = e.currentTarget;\n\n const filter = dateFilter.attributes[\"st-search\"].value;\n model[filter] = moment(dateFilter.value, \"DD.MM.YYYY\").toDate();\n model[`${filter}Open`] = true;\n };\n model.setDateFilter = () => {\n $(dateFilter)\n .val(dateFilter.value)\n .trigger(\"input\");\n };\n\n model.$onInit = function () {\n if (model.showCustomer) colspanFooter++;\n if (model.showProject) colspanFooter++;\n if (model.showHouse) colspanFooter++;\n if (model.showSection) colspanFooter++;\n model.colspanFooter = colspanFooter;\n\n systemApi.getCompanies().then(function (res) {\n model.filter = {\n companies: res.data\n };\n });\n\n model.disableAdd =\n model.contextObject && model.contextObject.disableAdd;\n };\n\n model.workorders = function () {\n registrationApi\n .exportWorkOrders(currentTableState)\n .then(saveFile);\n };\n\n model.export = function () {\n var tableData = createContextTableData(currentTableState, model.contextObject);\n registrationApi.exportExcel(tableData).then(res => {\n saveFile(res, \"Reklamasjoner.xlsx\");\n });\n };\n\n model.showAll = function () {\n $state.go(\n \"main.projects.project.registrations\",\n {\n id: model.projectId\n },\n {\n reload: true\n }\n );\n };\n model.getRegistrations = function (tableState) {\n currentTableState = createContextSearch(\n tableState,\n model.contextObject\n );\n\n currentTableData = createContextTableData(currentTableState, model.contextObject);\n\n registrationApi.getRegLines(currentTableData)\n .then(function (res) {\n model.registrations = res.data.items;\n currentTableState.pagination.numberOfPages =\n res.data.totalPages;\n currentTableState.pagination.totalItemCount =\n res.data.totalItemCount;\n model.totalPages = res.data.totalPages;\n });\n };\n\n model.insertNew = function () {\n var stateParams = {};\n for (var k in model.contextObject)\n stateParams[k] = model.contextObject[k];\n $state.go(\"main.registrations.newreg\", stateParams);\n };\n\n model.navReg = function (lineOid) {\n if (!model.useMultipleAppRouting) {\n model.nav(\"registrations/\" + lineOid);\n } else {\n window.location.href = window.location.href = \n window.location.protocol + \"//\" + window.location.hostname + \"/v2/#/registrations/\" + lineOid;\n }\n };\n\n model.navProject = function (id) { \n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=0\" + \"&id=\" + id;\n };\n }\n ]\n};\n","export default \"
\\n
\\n \\n
\\n \\n \\n \\n
\\n \\n \\n
\\n\\n \\n
\\n \\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdPunktKundeEierProsjektKategoriKildeDatoFristRapportert avLukketLukket avStatusAnsvarligUbesvart
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n Ingen reklamasjoner funnet\\n
\\n \\n {{r.lineId}}\\n \\n \\n \\n \\n {{r.customerName\\n | singleSpace}}\\n

{{r.customerName | singleSpace}}

\\n
{{r.ownerShort}}\\n {{r.projectName}}\\n {{r.projectName}}\\n {{r.category}}{{r.regSourceString}}\\n {{r.lineDate | date : 'dd.MM.yyyy'}}\\n {{r.deadLine | date : 'dd.MM.yyyy'}}{{ r.createdBy }}{{ r.closedDate | date: \\\"dd.MM.yyyy\\\" }}{{ r.closedBy }}{{r.regStatus}}\\n \\n {{r.commentStatusString}}
\\n
\\n \\n
\";","import markup from \"./markup.html\";\nexport default {\n\n bindings: {\n id: \"<\",\n date: \"=\",\n placeholder: \"<\",\n isDisabled: \"<\",\n onUpdate: \"&\",\n textBoxOnly: \"<\",\n tbSize: \"<\",\n options: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\"$log\", \"moment\", function ($log, moment) {\n var model = this;\n\n model.change = function () {\n\n var m = moment(model.date);\n\n if (m.year() > 1000) {\n model.onUpdate({\n date: model.date\n });\n } else {\n model.date = undefined;\n }\n };\n }]\n\n};","export default \"
\\n \\n
\\n\\n\\n\\n\";","import markup from \"./markup.html\";\nexport default {\n\n bindings: {\n colValue: \"=\",\n colChanged: \"=\"\n\n },\n template: markup,\n controllerAs: \"model\",\n controller: [function () {\n\n var model = this;\n var oldValue;\n model.edit = false;\n\n\n model.$onInit = function () {\n oldValue = model.colValue;\n };\n model.save = function () {\n\n model.edit = !model.edit;\n model.colChanged = oldValue !== model.colValue;\n };\n }]\n\n};","export default \"\\n{{model.colValue}} \\n\\n
\\n
\\n \\n \\n\\n \\n \\n \\n
\\n
\";","import markup from \"./markup.html\";\nimport edithtml from \"./edit.html\";\nexport default {\n\n\tbindings: {\n\t\ttext: \"=\",\n\t\tedit: \"<\",\n\t\tname: \"<\"\n\t},\n\n\ttemplate: markup,\n\tcontrollerAs: \"model\",\n\tcontroller: [\"$log\", \"toastr\", \"$state\", \"$uibModal\", function ($log, toastr, $state, $uibModal) {\n\n\t\tvar model = this;\n\t\tvar text, edit, name;\n\n\t\tmodel.$onInit = function () {\n\t\t\ttext = model.text;\n\t\t\tedit = model.edit;\n\t\t\tname = model.name;\n\t\t};\n\t\tmodel.open = function () {\n\t\t\t$uibModal.open({\n\t\t\t\ttemplate: edithtml,\n\t\t\t\tcontrollerAs: \"modalvm\",\n\t\t\t\tcontroller: [\"$uibModalInstance\", function ($uibModalInstance) {\n\n\t\t\t\t\tvar modalvm = this;\n\n\t\t\t\t\tmodalvm.text = text;\n\t\t\t\t\tmodalvm.edit = edit;\n\t\t\t\t\tmodalvm.name = name;\n\n\t\t\t\t\tmodalvm.cancel = function () {\n\t\t\t\t\t\t$uibModalInstance.close();\n\t\t\t\t\t};\n\t\t\t\t\tmodalvm.ok = function () {\n\t\t\t\t\t\tmodel.text = modalvm.text;\n\n\t\t\t\t\t\t$uibModalInstance.close();\n\t\t\t\t\t};\n\t\t\t\t}]\n\t\t\t});\n\t\t};\n\t}]\n\n};","export default \"\\n\\n\\n\\n\\n\\n\\n \\n \";","export default \"
\\n

{{modalvm.edit ? 'Rediger '+modalvm.name : modalvm.name}}

\\n
\\n
\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n \\n
\";","import { forEach, map } from \"lodash\";\nimport markup from \"./markup.html\";\nexport default {\n bindings: {\n house: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$timeout\",\n function ($timeout) {\n var house;\n var temp;\n var model = this;\n model.$onInit = function () {\n house = model.house;\n if (\n model.house.houseCompleted &&\n model.house.houseCompleted.milestonesInfo\n ) {\n var lastMilestone = Object.create(\n model.house.houseCompleted.milestonesInfo\n )\n .reverse()\n .find((x) => x.completed);\n }\n model.house.lastid = lastMilestone ? lastMilestone.id : \"\";\n $timeout(function () {\n $(\"#hov-mouse\").trigger(\"mouseover\");\n });\n\n temp = model.house.salesRates;\n model.house.salesRates = map(temp, function (sr, i) {\n return {\n weekRate: i === 0 ? 10 : i === 1 ? 30 : 52,\n rate: sr.count\n };\n });\n\n house.sold = 0;\n house.atticCount = 0;\n forEach(house.projSections, function (section) {\n if (section.reservedStatus === 2) house.sold++;\n if (section.attic) house.atticCount++;\n });\n\n house.soldPct = house.sold / house.projSections.length;\n if (\n house.sold === house.projSections.length &&\n house.projSections.length > 0\n ) {\n house.allSold = true;\n }\n };\n }\n ]\n};\n","export default \"
\\n
\\n

Byggestatus:\\n {{model.house.houseCompleted.percentCompleteMileStones*100 | number : 0}}% Ferdigmeldt,\\n {{model.house.houseCompleted.percentOutdatedMileStones*100 | number : 0}}% Frist utløpt,\\n {{model.house.houseCompleted.percentInCompleteMileStones*100 | number : 0}}% Pågår

\\n

Byggestatus: 0%

\\n\\n
\\n
\\n
0\\\" style=\\\"width: 0.1%;\\\">|
\\n
\\n
\\n

Salgsstatus: {{model.house.soldPct*100 | number : 0}}%

\\n
\\n
\\n
\\n\\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Modell:{{model.house.projModel.modelName}}
Oppstart:{{model.house.houseCompleted.startDate | date :'dd.MM.yyyy' }}
Fullført:Est. {{model.house.houseCompleted.endDate | date :'dd.MM.yyyy' }}
Antall loft:{{model.house.atticCount}}
\\n\\n\\n
\\n Salgstakt:\\n
\\n \\n \\n \\n \\n \\n \\n \\n
{{sr.weekRate}} uker{{sr.rate}}
\\n\\n
\\n Fra Årsfremdriftsplan:\\n
\\n \\n \\n \\n \\n \\n \\n\\n \\n
{{e.resource}}{{e.fromDate | date }} - {{e.toDate | date }}
\\n
\\n
\";","\nimport{map,forEach,filter} from \"lodash\";\nexport default [\"$uibModalInstance\", \"$log\", \"sections\",\"bulkData\",\"sectionApi\",\"toastr\",\n function ($uibModalInstance, $log, sections,bulkData,sectionApi,toastr) {\n\n\n var modalvm = this;\n modalvm.modules = map(bulkData.data.modules,m=>{\n return {id:m.id,name:m.moduleId};\n });\n\n forEach(sections,s=>{\n\n let temp =filter(bulkData.data.sectionTypes,t=>{\n return t.modelId === s.houseModelId;\n });\n s.types= map(temp,t=>{\n return {id:t.id,name:t.name};\n });\n\n });\n\n\n modalvm.sections = sections;\n\n \n modalvm.cancel = function () {\n\n \n $uibModalInstance.close();\n };\n\n\n modalvm.ok = function () {\n\n\n sectionApi.saveSections(sections).then(()=>{\n toastr.success(\"Endringer lagret\"),\n $uibModalInstance.close(true);\n });\n\n \n };\n }\n];","import saveFile from \"shared/saveFile\";\nimport { forEach, maxBy, find, filter } from \"lodash\";\nexport default [\n \"$uibModalInstance\",\n \"$log\",\n \"recipients\",\n \"documentApi\",\n function($uibModalInstance, $log, recipients, documentApi) {\n var mergeReq = {};\n\n var modalvm = this;\n\n modalvm.recipients = recipients;\n\n forEach(modalvm.recipients, function(r) {\n if (r.invalid) {\n r.reason = r.customerHaveAddress === false ? \"Kunde har ikke addresse\" : \"\";\n }\n });\n\n modalvm.removeRecipient = function(removeR) {\n modalvm.recipients = filter(modalvm.recipients, function(r) {\n return r.id !== removeR.id;\n });\n };\n\n modalvm.downloadMergeFields = function() {\n documentApi.mergeFields(modalvm.recipients[0].id).then(saveFile);\n };\n\n modalvm.templateChange = function() {\n modalvm.previewId = modalvm.recipients[0].id;\n modalvm.previewChange();\n };\n modalvm.previewChange = function() {\n forEach(modalvm.recipients, function(r) {\n r.preview = r.id === modalvm.previewId;\n });\n\n mergeReq = {\n recipients: modalvm.recipients,\n template: modalvm.mergeTemplate\n };\n\n documentApi.previewMerge(mergeReq).then(function(res) {\n modalvm.image = res.data.image;\n\n forEach(res.data.recipients, function(r) {\n var warnings = [];\n forEach(r.missingData, function(md) {\n md.isCustom = md.key.indexOf(\".\") === -1;\n if (!md.isCustom) {\n warnings.push(md.key);\n }\n });\n if (warnings.length > 0) {\n r.warning = \"Feltene \" + warnings.join(\", \") + \" mangler\";\n }\n });\n\n modalvm.missingDataHeader = maxBy(res.data.recipients, function(r) {\n return r.missingData.length;\n });\n modalvm.recipients = res.data.recipients;\n });\n };\n\n modalvm.copyMissingData = function(keyIn) {\n var first = filter(modalvm.recipients[0].missingData, function(md) {\n return md.isCustom && md.value;\n });\n\n forEach(modalvm.recipients, function(r) {\n var row = filter(r.missingData, function(md) {\n return md.key === keyIn;\n });\n\n forEach(row, function(md) {\n md.value = find(first, {\n key: md.key\n }).value;\n });\n });\n };\n\n modalvm.cancel = function() {\n mergeReq.send = false;\n mergeReq.recipients = modalvm.recipients;\n $uibModalInstance.close(mergeReq);\n };\n\n modalvm.ok = function(download) {\n mergeReq.send = true;\n mergeReq.download = download;\n mergeReq.saveAsPdf = modalvm.mergeFormat;\n mergeReq.recipients = modalvm.recipients;\n $uibModalInstance.close(mergeReq);\n };\n }\n];\n","\r\nexport default [\r\n \"$uibModalInstance\",\r\n \"$log\",\r\n \"sections\",\r\n \"checklists\",\r\n \"checklistApi\",\r\n \"toastr\",\r\n function ($uibModalInstance,\r\n $log,\r\n sections,\r\n checklists,\r\n checklistApi,\r\n toastr) {\r\n\r\n var modalvm = this;\r\n \r\n modalvm.checklists = checklists.data;\r\n modalvm.sections = sections;\r\n\r\n modalvm.contactPersons = checklists.data.contactPersons;\r\n \r\n modalvm.cancel = function () {\r\n\r\n \r\n $uibModalInstance.close();\r\n };\r\n\r\n\r\n modalvm.ok = function () {\r\n if (!modalvm.checklistsSelected) {\r\n toastr.warning(\"Må velge sjekkliste som skal legges til.\");\r\n } else {\r\n var data = {\r\n sections: sections.map(x => x.id),\r\n checklistId: modalvm.checklistsSelected,\r\n assignedTo: modalvm.assignedTo ? modalvm.assignedTo : null,\r\n deadline: modalvm.deadline ? modalvm.deadline : null\r\n };\r\n\r\n checklistApi.saveMultipleChecklist(data).then(()=>{\r\n toastr.success(\"Sjekklister lagt til!\"),\r\n $uibModalInstance.close(true);\r\n });\r\n }\r\n\r\n \r\n };\r\n }\r\n];","import saveFile from \"shared/saveFile\";\r\nimport { forEach, map, join, find, filter, uniqBy, some } from \"lodash\";\r\nimport markup from \"./markup.html\";\r\nimport editctrl from \"./edit\";\r\nimport edithtml from \"./edit.html\";\r\nimport mergeletterctrl from \"./mergeletter\";\r\nimport mergeletterhtml from \"./mergeletter.html\";\r\nimport cartsummaryhtml from \"./cartsummary.html\";\r\nimport defaultTableSettings from \"./defaultTableSettings.json\";\r\nimport hiddenColumns from \"./hiddenColumns.json\";\r\n\r\nimport addchecklistctrl from \"./addchecklist\";\r\nimport addchecklisthtml from \"./addchecklist.html\";\r\n\r\nexport default {\r\n bindings: {\r\n sections: \"<\",\r\n showAdd: \"<\",\r\n onAdd: \"&\",\r\n showHouse: \"<\",\r\n showChecklist: \"<\"\r\n },\r\n\r\n template: markup,\r\n controllerAs: \"model\",\r\n controller: [\r\n \"$log\",\r\n \"customerApi\",\r\n \"sectionApi\",\r\n \"checklistApi\",\r\n \"$uibModal\",\r\n \"documentApi\",\r\n \"moment\",\r\n \"toastr\",\r\n \"$window\",\r\n \"$state\",\r\n \"$localForage\",\r\n function (\r\n $log,\r\n customerApi,\r\n sectionApi,\r\n checklistApi,\r\n $uibModal,\r\n documentApi,\r\n moment,\r\n toastr,\r\n $window,\r\n $state,\r\n $localForage\r\n ) {\r\n function getRecipients() {\r\n var recipients = [];\r\n var startOfDay = moment().startOf(\"day\");\r\n\r\n if (!recipients) {\r\n toastr.error(\"Ingen mottakere!\");\r\n }\r\n\r\n forEach(model.displayCollection, function (s) {\r\n if (s.selected) {\r\n if (\r\n !find(recipients, function (r) {\r\n return r.id === s.id;\r\n })\r\n ) {\r\n var displayName =\r\n s.projCustomerCustomerPersonFullName ||\r\n \"Ikke solgt\";\r\n\r\n if (s.customers.length > 1) {\r\n var customers2 = s.customers\r\n .filter(\r\n (x) =>\r\n (!x.to || x.to > startOfDay) &&\r\n x.id !== s.projCustomerId\r\n )\r\n .map((x) => x.customerPerson.fullName)\r\n .join(\",\");\r\n displayName += `, ${customers2}`;\r\n } else {\r\n if (s.projCustomerCustomerName2) {\r\n displayName += `, ${s.projCustomerCustomerName2}`;\r\n }\r\n }\r\n\r\n recipients.push({\r\n id: s.id,\r\n acceptEmail:\r\n s.projCustomerCustomerPersonAcceptEmail,\r\n acceptNewsLetter:\r\n s.projCustomerCustomerPersonAcceptNewsLetter,\r\n acceptSms:\r\n s.projCustomerCustomerPersonAcceptSms,\r\n number: s.projCustomerCustomerPersonMobile,\r\n email: s.projCustomerCustomerPersonEmail,\r\n fullName: displayName,\r\n customerId: s.projCustomerCustomerId,\r\n sectionId: s.id,\r\n sectionNum: s.sectionNum\r\n });\r\n }\r\n }\r\n });\r\n\r\n return recipients;\r\n }\r\n\r\n function openEditModal(sections) {\r\n var modalInstance = $uibModal.open({\r\n template: edithtml,\r\n controllerAs: \"modalvm\",\r\n\r\n size: \"lg\",\r\n resolve: {\r\n sections: [\r\n function () {\r\n return sections;\r\n }\r\n ],\r\n bulkData: [\r\n \"sectionApi\",\r\n function (sectionApi) {\r\n return sectionApi.getBulkEditData();\r\n }\r\n ]\r\n },\r\n controller: editctrl\r\n });\r\n\r\n return modalInstance;\r\n }\r\n\r\n function openMergeModal(recipients) {\r\n var modalInstance = $uibModal.open({\r\n template: mergeletterhtml,\r\n controllerAs: \"modalvm\",\r\n size: \"lg\",\r\n resolve: {\r\n recipients: [\r\n function () {\r\n return recipients;\r\n }\r\n ]\r\n },\r\n controller: mergeletterctrl\r\n });\r\n\r\n return modalInstance;\r\n }\r\n\r\n function openSummaryModal() {\r\n var modalInstance = $uibModal.open({\r\n template: cartsummaryhtml,\r\n controllerAs: \"modalvm\",\r\n size: \"lg\"\r\n });\r\n\r\n return modalInstance;\r\n }\r\n\r\n function openAddChecklistModal(sections) {\r\n var modalInstance = $uibModal.open({\r\n template: addchecklisthtml,\r\n controllerAs: \"modalvm\",\r\n size: \"lg\",\r\n controller: addchecklistctrl,\r\n resolve: {\r\n sections: [\r\n function () {\r\n return sections;\r\n }\r\n ],\r\n checklists: [\r\n \"checklistApi\",\r\n function (checklistApi) {\r\n return checklistApi.getSectionMultipleChecklists(\r\n model.projectId\r\n );\r\n }\r\n ]\r\n }\r\n });\r\n\r\n return modalInstance;\r\n }\r\n\r\n var model = this;\r\n\r\n model.$onInit = function () {\r\n $localForage\r\n .getItem(\"tableSettings:sectiontable\")\r\n .then((tableSettings) => {\r\n if (tableSettings === null) {\r\n $localForage.setItem(\r\n \"tableSettings:sectiontable\",\r\n defaultTableSettings\r\n );\r\n }\r\n });\r\n\r\n model.hiddenColumns = hiddenColumns;\r\n\r\n model.allSelected = false;\r\n model.sectionTypes = filter(\r\n uniqBy(\r\n map(model.sections, function (s) {\r\n return {\r\n name: s.sectionTypeName,\r\n id: s.sectionTypeId\r\n };\r\n }),\r\n \"id\"\r\n ),\r\n function (t) {\r\n return t.id !== undefined;\r\n }\r\n );\r\n\r\n model.projectId = model.sections.find(\r\n (x) => x.projectPhaseProjTable\r\n ).projectPhaseProjTable;\r\n forEach(model.sections, function (s) {\r\n s.selected = false;\r\n\r\n if (!s.availableForSale && s.reservedStatus === 0) {\r\n s.reservedStatus = -1;\r\n }\r\n });\r\n };\r\n model.openCart = function () {\r\n openSummaryModal();\r\n };\r\n\r\n model.edit = function () {\r\n openEditModal(\r\n filter(model.displayCollection, { selected: true })\r\n ).result.then(() => {\r\n $state.reload();\r\n });\r\n };\r\n\r\n model.selectOne = function () {\r\n var anyNotSelected = some(model.displayCollection, [\r\n \"selected\",\r\n false\r\n ]);\r\n model.allSelected = !anyNotSelected;\r\n };\r\n model.selectAll = function () {\r\n forEach(model.displayCollection, function (o) {\r\n o.selected = model.allSelected;\r\n });\r\n };\r\n\r\n model.createLetter = function () {\r\n var recipients = getRecipients();\r\n\r\n documentApi.checkRecipients(recipients).then(function (res) {\r\n recipients = res.data;\r\n\r\n var invalid = filter(recipients, function (r) {\r\n return r.invalid === true;\r\n });\r\n\r\n if (invalid.length > 0) {\r\n toastr.warning(\r\n \"En eller flere av seksjonene du forsøker å flette brev til har enten ikke kunde, ellers så har ikke kunden adresse\",\r\n \"Ugyldig mottakere:\",\r\n {\r\n timeOut: 5000\r\n }\r\n );\r\n }\r\n\r\n openMergeModal(recipients).result.then(function (mergeReq) {\r\n if (mergeReq) {\r\n if (mergeReq.send) {\r\n documentApi\r\n .saveLetter(mergeReq)\r\n .then(function (res) {\r\n if (mergeReq.download) {\r\n saveFile(res);\r\n } else {\r\n toastr.info(\r\n \"Brev lagret i connections, du finner brevene under dokument-fanen\"\r\n );\r\n }\r\n });\r\n }\r\n }\r\n });\r\n });\r\n };\r\n model.createSms = function () {\r\n var recipients = getRecipients();\r\n model.allSelected = false;\r\n customerApi.openSmsModal(recipients).result.then(() => {\r\n forEach(model.displayCollection, (s) => {\r\n s.selected = false;\r\n });\r\n });\r\n };\r\n model.createEmail = function () {\r\n var recipients = getRecipients();\r\n\r\n var valid = map(\r\n filter(recipients, (r) => {\r\n return (\r\n r.email !== undefined && r.email.indexOf(\"@\") > -1\r\n );\r\n }),\r\n \"email\"\r\n );\r\n var bccString = join(valid, \";\");\r\n var mailTo = `mailto:?bcc=${bccString}&subject=Informasjon fra Trysilhus`;\r\n\r\n $window.open(mailTo, \"_self\");\r\n };\r\n model.anySelected = function () {\r\n return some(model.displayCollection, \"selected\");\r\n };\r\n\r\n model.addSections = function () {\r\n model.onAdd();\r\n };\r\n\r\n model.addChecklist = function () {\r\n model.onAddChecklist(model.displayCollection, {\r\n selected: true\r\n });\r\n };\r\n\r\n model.currentCustomers = function (item) {\r\n return !item.to;\r\n };\r\n\r\n model.addChecklist = function () {\r\n openAddChecklistModal(\r\n filter(model.displayCollection, { selected: true })\r\n ).result.then(() => {\r\n $state.reload();\r\n });\r\n };\r\n }\r\n ]\r\n};\r\n","export default \"
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Leil.Sek.\\r\\n KundeEtgAdressePris\\r\\n Kontraktsdato\\r\\n OvertakelsesdatoLoft ink.Tilvalg loftTypeStr.Status\\r\\n SelgerNyhetsbrev\\r\\n Modul\\r\\n Ferdigstillelse
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n  1\\r\\n  2\\r\\n  3\\r\\n
{{section.apartmentKey}}\\r\\n {{section.sectionNum}}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n {{cust.customerPerson.fullName}},\\r\\n \\r\\n\\r\\n {{section.floor}}{{section.fullAddress}}Kr {{(section.price) | number : 0}}\\r\\n {{section.contractDate | date : 'dd.MM.yyyy'}}{{section.moveInDate | date : 'dd.MM.yyyy'}}{{section.attic ? 'Ja':'Nei'}}{{section.hasAtticOption ? 'Ja':'Nei'}}\\r\\n {{section.sectionTypeName}}{{section.bra}}\\r\\n {{section.reservedStatusString}}\\r\\n {{section.reservedStatusString}}\\r\\n {{section.reservedStatusString}}\\r\\n {{section.reservedStatusString}}\\r\\n \\r\\n {{section.reservedStatusString}}\\r\\n \\r\\n \\r\\n \\r\\n 1 }\\\"\\r\\n ng-switch=\\\"section.newsletterOneStatus\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 1 }\\\"\\r\\n ng-switch=\\\"section.newsletterTwoStatus\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 1 }\\\"\\r\\n ng-switch=\\\"section.newsletterThreeStatus\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{section.moduleModuleId}}\\r\\n {{section.projCustomerContractTimeLimit | date : 'dd.MM.yyyy'}}\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\";","export default \"
\\n

Truls Agurk tilvalg

\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
KategoriGruppeNavnTypePris
KjøkkenKjøkkenløsning4-roms - kjøkken alternativ 1Tilvalg6500
KjøkkenBenkplaterLaminatbenkeplate i eikTilvalg1500
InnredningGulv4-roms - parkett Kährs eik sprinfield 1 stavs - 4 ROMSTilvalg38000
\\n
\\n
\\n
\\n \\n
\";","export default \"\\n\\n
\\n

Rediger seksjoner

\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
#GateadresseTypeModulFerdigatt.Midl. brukstillatelse
{{section.sectionNum}}\\n \\n \\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n \\n\\n \\n\\n\\n
\\n\\n \\n \\n \\n
\";","export default \"\\n
\\n

Flett brev

\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Mottaker{{f.key}}\\n
{{r.fullName}}\\n \\n
\\n
\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n \\n
\\n \\n \\n \\n \\n
\";","export default \"\\r\\n
\\r\\n

Rediger seksjoner

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n {{$select.selected.value}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n

\\r\\n Seksjoner valgt\\r\\n

\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
Leil.SeksjonEtg
{{section.apartmentKey}}{{section.sectionNum}}{{section.floor}}
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\";","import markup from \"./markup.html\";\nexport default {\n bindings: {\n contactperson: \"=\"\n },\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"toastr\", \"contactApi\", \"albumConfig\", \"store\", \"haveRoleFilter\",\n function (toastr, contactApi, albumConfig, store, haveRole) {\n\n var profile = store.get(\"profile\");\n var model = this;\n model.apiAddress = albumConfig.apiAddress;\n\n model.$onInit = function () {\n model.displayHmsCard = haveRole([\"Admin\", \"HR\"], \"any\") || profile.contactPersonId == model.contactperson.id;\n };\n\n model.changeProfileImg = function () {\n toastr.warning(\n \"Endre profil bilde er for øyeblikket ikke implementert\"\n );\n };\n\n model.openProfileImg = function () {\n contactApi\n .profileModal({\n firstName: model.contactperson.person.firstName,\n lastName: model.contactperson.person.lastName,\n imageUrl: (model.apiAddress + \"/person/\" + model.contactperson.person.id + \"/image/\" + model.tstamp)\n })\n .result.then(function () {\n });\n };\n model.tstamp = new Date().getTime();\n }\n ]\n};\n","export default \"
\\n
\\n \\n

\\n {{model.contactperson.person.firstName}} {{model.contactperson.person.lastName}}

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n

Kontaktinfo

\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n

HMS-kort

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\";","export default [\n \"$scope\",\n \"searchApi\",\n \"toastr\",\n function($scope, searchApi, toastr) {\n $scope.searchContactPerson = function(s) {\n searchApi.searchContactPersons(s, 1).then(response => {\n $scope.contactpersons = response.data;\n });\n };\n\n $scope.contactpersons = [$scope.$context.data.newOrder.contactPerson];\n\n $scope.$context.behavior.leaving = function(options, callback) {\n if (options.forward) {\n if (\n !$scope.$context.data.newOrder.contactPerson ||\n !$scope.$context.data.newOrder.ourContact\n ) {\n toastr.warning(\"Vennligst fyll ut kontakt informasjon\");\n return callback(false);\n } else {\n return callback(true);\n }\n } else {\n return callback(true);\n }\n };\n }\n];\n","import {\n forEach\n} from \"lodash\";\nexport default [\n \"$scope\",\n \"searchApi\",\n \"toastr\",\n function ($scope, searchApi, toastr) {\n\n\n $scope.changeContactContactPerson = function () {\n this.v.contactPerson = this.v.sendTo.fullName;\n this.v.contactPersonId = this.v.sendTo.contactPersonId;\n };\n\n\n $scope.$context.behavior.leaving = function (options, callback) {\n if (options.forward) {\n var errorMessages = [];\n var contacts = $scope.$context.data.contactList;\n if (contacts.length === 0) {\n errorMessages.push(\"Ingen leverandører!\");\n }\n\n forEach(contacts, function (v) {\n if (!v.sendTo || v.sendTo.email === \"\") {\n errorMessages.push(v.name + \" mangler epost!\");\n }\n });\n\n if (errorMessages.length > 0) {\n forEach(errorMessages, function (em) {\n toastr.warning(em);\n });\n\n return callback(false);\n } else {\n return callback(true);\n }\n } else {\n return callback(true);\n }\n };\n }\n];","import saveFile from \"shared/saveFile\";\nexport default [\n \"$scope\",\n \"$log\",\n \"orderApi\",\n function($scope, $log, orderApi) {\n $scope.allowSendChanged = function() {\n $scope.$context.navigation.disableFinishButton = !$scope.enableFinishButton;\n };\n\n $scope.generatePdf = function(contact) {\n orderApi\n .GeneratePdf(\n orderApi.getOrderLinesNotOrdered($scope.$context.data.orders),\n contact,\n $scope.$context.data.newOrder\n )\n .then(res => {\n saveFile(res, \"Bestilling \" + contact.name + \".pdf\", \"application/pdf\");\n });\n };\n $scope.enableFinishButton = false;\n $scope.allowSendChanged();\n }\n];\n","export default \"\\n\\n\\n\\n
\\n

Legg til varer

\\n
\\n
\\n
\\n\\n\\n \\n {{$select.selected.display}}\\n \\n
\\n
\\n\\n\\n
\\n\\n \\n\\n
\\n
\\n \\n \\n
\\n\\n\\n\\n\\n\";","import {\n forEach\n} from \"lodash\";\nexport default [\"$uibModalInstance\", \"searchApi\", \"$log\", \"searchmode\", function ($uibModalInstance, searchApi, $log, searchmode) {\n\n\n var modalvm = this;\n\n\n modalvm.searchComponents = function (s) {\n if (!s) return;\n searchmode.query = s;\n searchApi.searchComponents(searchmode).then(function (res) {\n\n if (searchmode.startsWith) {\n forEach(res.data, function (c) {\n c.display = c.name;\n });\n }\n\n\n modalvm.components = res.data;\n });\n };\n\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n\n $uibModalInstance.close({\n compId: modalvm.newProjComponent.id,\n qty: 0,\n projComponent: modalvm.newProjComponent,\n status: 0,\n contactInformation: modalvm.newProjComponent.contactInformation,\n contact: modalvm.newProjComponent.contact\n });\n };\n\n}];","import { forEach, map, includes, uniq, every, uniqBy, filter } from \"lodash\";\nimport markup from \"./markup.html\";\nimport saveFile from \"shared/saveFile\";\nimport headctrl from \"./head\";\nimport headhtml from \"./head.html\";\nimport contactsctrl from \"./contacts\";\nimport contactshtml from \"./contacts.html\";\nimport previewctrl from \"./preview\";\nimport previewhtml from \"./preview.html\";\nimport addCompModalhtml from \"shared/addCompModal.html\";\nimport addcompmodalctrl from \"shared/addcompmodal\";\n\nexport default {\n bindings: {\n orders: \"=\",\n allowEdit: \"=\",\n count: \"=\",\n house: \"<\",\n schedule: \"<\",\n currentUser: \"<\",\n thUsers: \"<\",\n contactList: \"<\"\n },\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$uibModal\",\n \"$wizard\",\n \"toastr\",\n \"$state\",\n \"orderApi\",\n \"commonApi\",\n \"scheduleApi\",\n function(\n $uibModal,\n $wizard,\n toastr,\n $state,\n orderApi,\n commonApi,\n scheduleApi\n ) {\n function addSubject(contactInfo) {\n if (!contactInfo)\n toastr.error(\"Mangler leverandørinformasjon!\");\n\n const subject = `Bestilling fra Trysilbygg AS - Ordrenr: [orderId], Leverandør ${contactInfo.name}, Prosess: ${model.schedule.processName}, Prosjekt ${model.schedule.projectName}, Hus ${model.schedule.houseNum}`;\n contactInfo.subject = subject;\n\n return contactInfo;\n }\n\n var wizardPlaceOrder = $wizard\n .$new({\n title: \"Opprett bestilling\",\n finishTitle: \"Send\",\n shadow: true,\n successing: function($data, $step, $isLastStep, callback) {\n return callback(true);\n }\n })\n .addStep({\n id: \"orderhead\",\n title: \"Ordre\",\n template: headhtml,\n controller: headctrl\n })\n .addStep({\n id: \"contacts\",\n title: \"Leverandører\",\n controller: contactsctrl,\n template: contactshtml\n })\n .addStep({\n id: \"previewEmails\",\n title: \"Forhåndsvis bestillinger\",\n template: previewhtml,\n controller: previewctrl\n });\n\n var model = this;\n model.postponeAll = false;\n\n model.$onInit = function() {\n model.count = {\n all: 0,\n ordered: 0\n };\n\n forEach(model.orders, function(o) {\n model.count.all++;\n if (o.orderDate) {\n model.count.ordered++;\n }\n });\n };\n\n model.orderFilter = function(item) {\n if (!model.hideOrdered) {\n return true;\n } else {\n return item.orderDate === undefined;\n }\n };\n\n model.downloadOrders = function() {\n var orderedLines = filter(model.orders, function(o) {\n return o.orderId > 0;\n });\n\n var orderIds = uniq(map(orderedLines, \"orderId\"));\n\n scheduleApi.downloadOrders(orderIds).then(res => {\n saveFile(res, \"Bestillinger.pdf\", \"application/pdf\");\n });\n };\n\n model.placeOrder = function() {\n if (!model.house.projectPostCode) {\n toastr.warning(\"Prosjekt må ha adresse og postnummer!\");\n return;\n }\n\n var ordersFiltered = orderApi.getOrderLinesNotOrdered(\n model.orders\n );\n var qtyCheck = every(map(ordersFiltered, \"qty\"), Number);\n if (!qtyCheck) {\n toastr.warning(\"Alle varelinjer må ha gyldig antall!\");\n return;\n }\n\n var contactList = filter(model.contactList, function(vi) {\n return includes(map(ordersFiltered, \"contactId\"), vi.id);\n });\n\n contactList = uniqBy(contactList, function(vl) {\n return vl.id;\n });\n\n wizardPlaceOrder.open(\n {\n newOrder: {\n projectId: model.house.projectId,\n project: model.schedule.orderString,\n houseNum: model.house.houseNum,\n processName: `${model.schedule.processKey} ${model.schedule.processName}`,\n orderDate: new Date(),\n deliveryDate: commonApi.calcDeliveryDate(\n model.schedule.startDate\n ),\n note: \"\",\n deliveryAddress: `${model.house.projectAddress}\\n${model.house.projectPostCode.num} ${model.house.projectPostCode.name}`,\n ourContact: model.currentUser.id,\n contactPersonMobile:\n model.schedule.responsiblePersonMobile,\n contactPersonName:\n model.schedule.responsiblePersonFullName,\n contactPersonId: model.schedule.responsibleId,\n contactPerson: {\n contactPersonId: model.schedule.responsibleId,\n contactPersonName:\n model.schedule.responsiblePersonFullName,\n mobile: model.schedule.responsiblePersonMobile\n }\n },\n orders: model.orders,\n contactList: contactList,\n users: model.thUsers\n },\n function(result) {\n orderApi\n .createOrder(\n orderApi.getOrderLinesNotOrdered(model.orders),\n model.schedule,\n result.contactList,\n result.newOrder\n )\n .then(response => {\n if (response.data) {\n response.data.forEach(o => {\n if (o.success) {\n toastr.success(o.message);\n } else {\n toastr.error(o.message);\n }\n });\n }\n\n $state.reload();\n });\n },\n window.angular.noop\n );\n };\n\n model.addLine = function() {\n $uibModal\n .open({\n template: addCompModalhtml,\n controllerAs: \"modalvm\",\n resolve: {\n searchmode: function() {\n return {\n startsWith: true\n };\n }\n },\n controller: addcompmodalctrl\n })\n .result.then(function(comp) {\n if (comp) {\n model.orders = model.orders || [];\n model.contactList = model.contactList || [];\n\n model.contactList.push(\n addSubject(comp.contactInformation)\n );\n model.orders.push({\n added: true,\n orderId: 0,\n compId: comp.projComponent.id,\n qty: 0,\n projComponent: {\n name: comp.projComponent.name,\n meassureText:\n comp.projComponent.meassureText,\n contactName: comp.contact.name\n },\n contactId: comp.contact.id\n });\n }\n });\n };\n\n model.stopPropagationAll = function() {\n model.orders.forEach(x => {\n if (!x.orderDate) {\n x.postpone = model.postponeAll;\n }\n });\n };\n }\n ]\n};\n","export default \"
\\n \\n \\n \\n \\n
\\n\\n\\n
\\n {{model.orderError}}\\n
\\n\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n
SeksjonNavnAntallEnhetLeverandørStatusFristBestiltOrdreUtsett \\n
{{pol.sectionNum}}\\n \\n {{pol.qty}}\\n {{pol.projComponent.meassureText}}{{pol.projComponent.contactName}}\\n \\n \\n \\n \\n {{pol.orderDeadline| date : 'dd.MM.yyyy'}}{{pol.orderDate| date : 'dd.MM.yyyy'}}\\n {{pol.orderKey}}\\n \\n \\n
\\n
\";","export default \"
\\n
\\n
\\n
Prosjekt informasjon
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n
Kontakt informasjon
\\n
\\n\\n
\\n \\n\\n \\n {{$select.selected.contactPersonName}}\\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n \\n\\n \\n\\n
\\n\\n\\n\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
Leveringsadresse
\\n
\\n\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
Merknad
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\";","export default \"\\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
LeverandørKontaktpersonEpostKopi
{{v.name}}{{v.contactPerson}}\\n \\n \\n \\n
\\n\";","export default \"\\n
\\n
\\n
\\n \\n
\\n

{{v.fromEmail}}

\\n
\\n
\\n
\\n \\n
\\n

{{v.sendTo.email}}

\\n
\\n
\\n
\\n \\n
\\n

{{v.sendToCopy.email}}

\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\";","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"optionApi\",\n function ($uibModalInstance, $log, optionApi) {\n var modalvm = this;\n var io = {};\n\n modalvm.searchForOption = function (val) {\n if (val === \"\") return;\n\n optionApi.searchForOption(val).then(function (res) {\n modalvm.optionSearch = res.data;\n });\n };\n\n modalvm.getPriceCalc = function (item) {\n optionApi.getOption(item.id).then(function (res) {\n io = res.data.option;\n });\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(io);\n };\n }\n];","import { forEach, map, sum, last } from \"lodash\";\nimport markup from \"./markup.html\";\nimport pricecalcctrl from \"./importpricecalc\";\nimport pricecalchtml from \"./importpricecalc.html\";\nexport default {\n bindings: {\n priceCalc: \"<\",\n costCalc: \"<\",\n onUpdate: \"&\",\n accounts: \"<\",\n import: \"<\",\n contractType: \"<\",\n dynamicPrice: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"$scope\",\n \"calculatorService\",\n \"$uibModal\",\n function ($log, $scope, calculatorService, $uibModal) {\n function openImportOptionCalcModal() {\n var modalInstance = $uibModal.open({\n template: pricecalchtml,\n controllerAs: \"modalvm\",\n controller: pricecalcctrl\n });\n\n return modalInstance;\n }\n\n var model = this;\n model.$onInit = function () {\n calculatorService.setPriceCalc(model.priceCalc);\n model.priceCalc.amountToBeTaxed = calculatorService.amountToBeTaxed();\n model.priceCalc.amountIncludedTax = calculatorService.amountIncludedTaxed();\n\n model.update();\n\n if (model.dynamicPrice == false)\n model.amountPercentageEntChanged();\n };\n\n model.changeDescOrAccount = function (calc) {\n if (calc.status === 0) {\n calc.status = 1;\n }\n };\n\n model.changeCost = function (calc) {\n model.priceCalc.cost = sum(\n map(model.costCalc, function (cc) {\n return cc.status < 0 ? 0 : cc.qty * cc.cost;\n })\n );\n model.amountPercentageEntChanged();\n\n if (calc.status === 0) {\n calc.status = 1;\n }\n };\n\n model.update = function () {\n model.onUpdate({\n pc: model.priceCalc\n });\n };\n model.importOptionCalc = function () {\n openImportOptionCalcModal().result.then(function (io) {\n if (io) {\n model.priceCalc.amountEnt = io.amountEnt;\n model.priceCalc.amountPercentageEnt = io.amountPercentageEnt;\n model.priceCalc.amountPercentageSales = io.amountPercentageSales;\n model.priceCalc.amountSales = io.amountSales;\n model.priceCalc.amountTax = io.amountTax;\n model.priceCalc.price = io.price;\n model.costCalc = model.costCalc || [];\n forEach(io.projOptionCalculations, function (c) {\n model.costCalc.push({\n status: 2,\n qty: c.qty,\n cost: c.cost,\n projAccounts: c.projAccounts,\n description: c.description\n });\n });\n\n var lastCost = last(model.costCalc);\n if (lastCost) {\n model.changeCost(lastCost);\n }\n\n model.amountPercentageEntChanged();\n }\n });\n };\n\n model.addOptionCalc = function () {\n model.costCalc = model.costCalc || [];\n model.costCalc.push({\n status: 2,\n qty: 0,\n cost: 0\n });\n model.amountPercentageEntChanged();\n };\n model.delOptionCalc = function (calc) {\n calc.status = calc.status === 2 ? -2 : -1;\n model.changeCost(calc);\n };\n\n model.amountPercentageEntChanged = function () {\n model.priceCalc.amountEnt = calculatorService.calcEntAmount(\n model.priceCalc.amountPercentageEnt, model.dynamicPrice\n );\n model.priceCalc.amountToBeTaxed = calculatorService.amountToBeTaxed();\n model.priceCalc.amountTax = calculatorService.amountTax();\n model.priceCalc.amountIncludedTax = calculatorService.amountIncludedTaxed();\n\n model.update();\n };\n model.amountEntChanged = function () {\n model.priceCalc.amountPercentageEnt = calculatorService.calcEntPercentage(\n model.priceCalc.amountEnt, model.dynamicPrice\n );\n model.priceCalc.amountToBeTaxed = calculatorService.amountToBeTaxed();\n model.priceCalc.amountTax = calculatorService.amountTax();\n model.priceCalc.amountIncludedTax = calculatorService.amountIncludedTaxed();\n\n model.update();\n };\n\n model.amountPercentageSalesChanged = function () {\n model.priceCalc.amountSales = calculatorService.calcSalesAmount(\n model.priceCalc.amountPercentageSales, model.dynamicPrice\n );\n model.update();\n };\n model.amountSalesChanged = function () {\n model.priceCalc.amountPercentageSales = calculatorService.calcSalesPercentage(\n model.priceCalc.amountSales, model.dynamicPrice\n );\n model.update();\n };\n model.priceChanged = function () {\n model.priceCalc.amountSales = calculatorService.calcSalesAmountAndPercentage(\n model.priceCalc.price\n );\n //model.priceCalc.amountPercentageSales = projSectionChangesCalculator.PercentageSales\n model.update();\n };\n }\n ]\n};\n","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
KontoBeskrivelseAntallKostnadPris
\\n \\n \\n \\n \\n \\n \\n \\n Kr {{ calc.qty * calc.cost | number: 0 }}\\n \\n
\\n \\n \\n Kr {{ model.priceCalc.cost | number: 0 }}
\\n\\n \\n
\\n\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\";","export default \"
\\n\\t

Importer priskalkulasjon

\\n
\\n
\\n\\n\\n\\t\\n\\n
\\n \\n \\n {{$select.selected.name}}\\n \\n
\\n\\n
\\n
\\n
\\n\\n \\n\\n\\n
\\n
\\n\\t\\n\\t\\n
\";","\nexport default [\n \"$uibModalInstance\",\n \"isSavedContactPerson\",\n function (\n $uibModalInstance,\n isSavedContactPerson\n ) {\n var modalvm = this;\n modalvm.selected = null;\n\n modalvm.select = function (data) {\n modalvm.selected = data;\n };\n\n modalvm.isSavedContactPerson = isSavedContactPerson;\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.selected);\n };\n }\n];\n","\nimport contactPersonExistshtml from \"./contactPersonExists.html\";\nimport contactPersonExistsctrl from \"./contactPersonExists\";\n\nexport default [\n \"searchApi\",\n \"$log\",\n \"$scope\",\n \"toastr\",\n \"$uibModal\",\n function (searchApi, $log, $scope, toastr, $uibModal) {\n $scope.$watch(\"$context.data.contactPersonMode\", function (mode) {\n $scope.$context.navigation.nextStepId = mode === 1 ? \"step3\" : null;\n\n });\n \n $scope.searchContactPerson = function (s) {\n searchApi.searchContactPersons(s).then(function (res) {\n $scope.contactpersons = res.data;\n });\n };\n\n $scope.searchContactPersonsExists = function (data) {\n searchApi.searchContactPersonsExists(data).then(function (res) {\n $scope.contactpersons = res.data;\n });\n };\n\n //watch new contackperson is filled out\n $scope.$watch(\"$context.data.contactPerson\", function(data, oldData) {\n if ($scope.$context.data.contactPersonMode === 2) {\n//check if email is email\n const pattern = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n \n if (((data.person.email && pattern.test(data.person.email)) || \n (data.person.mobile && data.person.mobile.length === 8)) \n && (!oldData || data.person.mobile !== oldData.person.mobile \n || data.person.email !== oldData.person.email )) {\n\n isContactPerson(data).then(x => {\n $scope.isSavedContactPerson = x;\n if ($scope.isSavedContactPerson.length > 0) {\n existingContactPerson();\n }\n });\n }\n }\n }, true);\n\n function isContactPerson(data) {\n return new Promise(resolve => {\n searchApi.searchContactPersonsExists(data.person).then(function (res) {\n resolve(res.data);\n });\n });\n }\n\n function openExistingContactPersonModal() {\n var modalInstance = $uibModal.open({\n template: contactPersonExistshtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n controller: contactPersonExistsctrl,\n resolve: {\n isSavedContactPerson: [\n function () {\n return $scope.isSavedContactPerson;\n }\n ]\n }\n });\n\n return modalInstance;\n}\n\nfunction existingContactPerson() {\n openExistingContactPersonModal().result.then(function (data) {\n if (data) {\n $scope.$context.data.contactPersonMode = 1;\n $scope.$context.data.contactPerson = data;\n }\n });\n}\n\n $scope.$context.behavior.leaving = function (options, callback) {\n if (options.forward) {\n switch ($scope.$context.data.contactPersonMode) {\n case 1:\n if (\n $scope.$context.data.contactPerson === undefined ||\n $scope.$context.data.contactPerson.contactPersonId === undefined\n ) {\n toastr.warning(\"Du må velge en kontaktperson fra søket\");\n return callback(false);\n } else {\n callback(true);\n }\n break;\n case 2:\n //var p = $scope.$context.data.contactPerson.person;\n var p = ($scope.$context.data.contactPerson &&\n $scope.$context.data.contactPerson.person) || {};\n\n var errors = 0;\n if (!p.firstName) {\n toastr.warning(\"Du må fylle ut fornavn!\");\n errors++;\n }\n if (!p.lastName) {\n toastr.warning(\"Du må fylle ut etternavn!\");\n errors++;\n }\n if (!p.mobile) {\n toastr.warning(\"Du må fylle ut mobilnummer!\");\n errors++;\n }\n if (!p.email) {\n toastr.warning(\"Du må fylle ut epost!\");\n errors++;\n }\n\n if (errors > 0) {\n return callback(false);\n } else {\n callback(true);\n }\n\n break;\n default: \n toastr.warning(\"Du må legge til en eksisterende bruker eller opprette en ny!\");\n callback(false);\n }\n // return callback(true);\n } else {\n return callback(true);\n }\n };\n }\n];","export default \"\\n
\\n

Eksisterende kontaktperson

\\n
\\n
\\n Det er en eller flere kontaktpersoner som eksisterer som har samme e-post eller mobilnummer\\n
    \\n
  • \\n {{o.display}}\\n
  • \\n
\\n
\\n
\\n \\n \\n \\n
\";","import {\n isEmpty\n} from \"lodash\";\nexport default [\"searchApi\", \"$log\", \"$scope\", \"toastr\", function (searchApi, $log, $scope, toastr) {\n\n\n $scope.searchContact = function (s) {\n\n searchApi.searchContacts(s).then(function (res) {\n $scope.contactSearch = res.data;\n });\n };\n\n $scope.goToContactMode2 = function () {\n $scope.$context.data.contact = {};\n $scope.$context.data.contactMode = 2;\n };\n\n $scope.$context.behavior.leaving = function (options, callback) {\n if (options.forward) {\n\n\n if (!$scope.$context.data.contact || isEmpty($scope.$context.data.contact)) {\n toastr.warning(\"Du må velge en firmakontakt\");\n return callback(false);\n }\n return callback(true);\n } else {\n\n $scope.$context.data.contactMode = 1;\n\n return callback(false);\n }\n };\n\n\n}];","export default [\n \"contactApi\",\n \"$log\",\n \"$scope\",\n \"$q\",\n \"toastr\",\n function (contactApi, $log, $scope, $q, toastr) {\n var getContactInfo = function (id) {\n return contactApi.getContact(id).then(function (res) {\n $scope.$context.data.editInfo.phone = res.data.phone;\n $scope.$context.data.editInfo.fax = res.data.fax;\n });\n };\n var getContactPersonInfo = function (id) {\n contactApi.getContactPerson(id).then(function (res) {\n $scope.$context.data.editInfo.mobile = res.data.contactperson.person.mobile;\n $scope.$context.data.editInfo.email = res.data.contactperson.person.email;\n });\n };\n\n $scope.$context.behavior.leaving = function (options, callback) {\n\n if (options.forward) {\n\n if (!$scope.$context.data.projContact.groupId) {\n toastr.warning(\"Du må velge en gruppe.\");\n return callback(false);\n }\n\n return callback(true);\n } else {\n return callback(true);\n }\n };\n\n $scope.$context.behavior.entering = function (options, callback) {\n var promises = [];\n\n $scope.$context.data.projContact = {};\n if ($scope.$context.data.contactPersonMode === 1) {\n promises.push(getContactPersonInfo($scope.$context.data.contactPerson.contactPersonId));\n promises.push(getContactInfo($scope.$context.data.contactPerson.contactId));\n } else {\n if ($scope.$context.data.contactMode === 1) {\n promises.push(getContactInfo($scope.$context.data.contact.id));\n } else {\n $scope.$context.data.editInfo.phone = $scope.$context.data.contact.phone;\n $scope.$context.data.editInfo.fax = $scope.$context.data.contact.fax;\n }\n\n $scope.$context.data.editInfo.mobile = $scope.$context.data.contactPerson.person.mobile;\n $scope.$context.data.editInfo.email = $scope.$context.data.contactPerson.person.email;\n }\n\n promises.push(\n contactApi.getContactGroups().then(function (res) {\n $scope.groups = res.data;\n })\n );\n\n $q.all(promises).then(function () {\n return callback();\n });\n };\n }\n];","import markup from \"./markup.html\";\n\nimport step1ctrl from \"./step1\";\nimport step2ctrl from \"./step2\";\nimport step3ctrl from \"./step3\";\n\nimport step1html from \"./step1.html\";\nimport step2html from \"./step2.html\";\nimport step3html from \"./step3.html\";\n\nexport default {\n bindings: {\n onUpdate: \"&\"\n },\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$wizard\",\n \"$log\",\n \"$q\",\n \"contactApi\",\n function ($wizard, $log, $q, contactApi) {\n var model = this;\n\n var wiz = $wizard\n .$new({\n title: \"Legg til kontakt\",\n shadow: true,\n successing: function ($data, $step, $isLastStep, callback) {\n if ($data.contactPerson.person) {\n $data.contactPerson2 = $data.contactPerson;\n }\n\n contactApi.validateProjectContact($data).then(\n function () {\n return callback(true);\n },\n function () {\n return callback(false);\n }\n );\n }\n })\n .addStep({\n id: \"step1\",\n title: \"Kontaktperson\",\n controller: step1ctrl,\n template: step1html\n })\n .addStep({\n id: \"step2\",\n title: \"Firma\",\n controller: step2ctrl,\n template: step2html\n })\n .addStep({\n id: \"step3\",\n title: \"Rediger informasjon\",\n controller: step3ctrl,\n template: step3html\n });\n\n model.startWizard = function () {\n wiz.open({\n contactPersonMode: null,\n contactMode: 1,\n editInfo: {}\n },\n function (result) {\n model.onUpdate({\n result: result\n });\n },\n window.angular.noop\n );\n };\n }\n ]\n};","export default \"\";","export default \"
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n {{$select.selected.display}}\\n \\n
\\n
\\n
\\n
\\n\\n\\n\\n
\\n \\n
\";","export default \"
\\n \\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n\\n
\\n
\\n\\n\\n
\\n\\n \\n \\n\\n
\\n
\\n

Firma

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\";","export default \"
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\";","import angular from \"angular\";\nimport markup from \"./markup.html\";\n\nimport { map, filter } from \"lodash\";\nexport default {\n bindings: {\n aberrationData: \"=\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"$scope\",\n \"houseApi\",\n \"aberrationApi\",\n \"searchApi\",\n \"sectionApi\",\n \"$q\",\n \"store\",\n function (\n $log,\n $scope,\n houseApi,\n aberrationApi,\n searchApi,\n sectionApi,\n $q,\n store\n ) {\n var allSections;\n var model = this;\n\n model.$onInit = function () {\n allSections = model.aberrationData.sections;\n\n model.aberration = model.aberrationData.aberration;\n\n model.contacts = [\n {\n id: model.aberration.costCentre,\n name: model.aberration.costCentreContactName\n }\n ];\n\n model.contactpersons = map(model.aberrationData.users, function (\n u\n ) {\n return {\n id: u.key,\n name: u.value\n };\n });\n\n model.companies = map(model.aberrationData.companies, function (c) {\n return { id: c.id, name: c.name };\n });\n\n model.aberrationTypes = model.aberrationData.aberrationTypes;\n model.aberrationSeverities = model.aberrationData.aberrationSeverities;\n model.canEditSeverity = model.aberrationData.canEditSeverity;\n \n model.aberrationLocations =\n model.aberrationData.aberrationLocations;\n model.aberrationStatuses = map(\n model.aberrationData.aberrationStatuses,\n s => {\n let disable =\n (s.id === 2 || s.id === 3) &&\n model.aberration.allowClose === false;\n return {\n id: s.id,\n name: disable\n ? `${s.name} ( Utilgjengelig )`\n : s.name,\n disable: disable\n };\n }\n );\n model.profile = store.get(\"profile\");\n \n model.aberrationCauses = model.aberrationData.aberrationCauses;\n\n model.projects = model.aberrationData.projects;\n model.houses = model.aberrationData.houses;\n model.sections = filter(allSections, {\n houseId: model.aberration.projPhase\n });\n\n model.aberration.initResponsible = angular.copy(\n model.aberration.responsible\n );\n \n model.aberrationStatus = model.aberration.aberrationStatus;\n\n if (model.aberrationData.preSelect) {\n if (model.aberrationData.preSelect.projectId) {\n model.aberration.projTable =\n model.aberrationData.preSelect.projectId;\n model.projectChange().then(function () {\n if (model.aberrationData.preSelect.houseId) {\n model.aberration.projPhase =\n model.aberrationData.preSelect.houseId;\n model.houseChange().then(function () {\n if (\n model.aberrationData.preSelect.sectionId\n ) {\n model.aberration.projSectionId =\n model.aberrationData.preSelect.sectionId;\n }\n });\n }\n });\n }\n }\n };\n\n model.causeFilter = function (item) {\n return (\n item.aberrationTypeId === model.aberration.aberrationTypeId\n );\n };\n\n model.projectChange = function () {\n return houseApi\n .getHouses(model.aberration.projTable)\n .then(function (res) {\n sectionApi\n .getSectionList(model.aberration.projTable)\n .then(function (res) {\n allSections = res.data;\n });\n\n model.houses = map(res.data, function (h) {\n return {\n key: h.id,\n value: h.houseNum\n };\n });\n });\n };\n model.houseChange = function () {\n var deferred = $q.defer();\n\n if (model.aberration.projPhase) {\n model.sections = filter(allSections, {\n houseId: model.aberration.projPhase\n });\n deferred.resolve(true);\n } else {\n deferred.reject(\"Hus ikke valgt\");\n }\n\n return deferred.promise;\n };\n model.searchContactPersons = function (s) {\n searchApi\n .dropDownSearch({\n type: \"contactperson\",\n search: s\n })\n .then(function (res) {\n model.contactpersons = res.data;\n });\n };\n\n model.searchContacts = function (s) {\n searchApi\n .dropDownSearch({\n type: \"contact\",\n search: s\n })\n .then(function (res) {\n model.contacts = res.data;\n });\n };\n }\n ]\n};\n","export default \"\\n\\n\";","import markup from \"./markup.html\";\nimport b64toBlob from \"b64-to-blob\";\nexport default {\n bindings: {\n file: \"<\",\n files: \"<\"\n },\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"attachmentApi\",\n \"commonApi\",\n function($log, attachmentApi, commonApi) {\n var model = this;\n\n model.download = function() {\n if (model.file.base64) {\n var blob = b64toBlob(\n model.file.base64,\n model.file.contentType\n );\n commonApi.downloadOrOpen(\n {\n data: {\n contentType: model.file.contentType,\n name: model.file.fileName,\n guid: model.file.guid,\n blob: blob\n }\n },\n model.files\n );\n } else {\n attachmentApi\n .downloadAttachment(model.file)\n .then(function(res) {\n res.data.guid = model.file.guid;\n commonApi.downloadOrOpen(res, model.files);\n });\n }\n };\n }\n ]\n};\n","export default \"\\n\\n\\n\\n\";","import markup from \"./markup.html\";\nimport uuidv4 from \"uuid/v4\";\nimport { forEach } from \"lodash\";\n//import { reSizeImage, isFileImage } from \"./reSizeHelper\";\n\nvar pako = window.pako;\n\nexport default {\n bindings: {\n compress: \"<\",\n attachments: \"=\",\n hideDelete: \"<\",\n hideAdd: \"<\",\n addText: \"<\",\n resize: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"$timeout\",\n \"$scope\",\n \"$q\",\n \"toastr\",\n \"$confirm\",\n \"attachmentApi\",\n function ($log, $timeout, $scope, $q, toastr, $confirm, attachmentApi) {\n const spinner = show => {\n var spinnerRef = $(\"#blobspinner\");\n var spinner = spinnerRef[0];\n\n if (spinner) {\n spinner.style.display = show ? \"inline-block\" : \"none\";\n }\n };\n\n const pushAttachment = (file, apply) => {\n\n var dataCompressed = null;\n\n if (model.compress) {\n var data = Uint8Array.from(atob(file.base64), c => c.charCodeAt(0));\n dataCompressed = pako.gzip(data, { level: 3 });\n }\n\n model.attachments.push({\n status: 2,\n fileName: file.filename,\n base64: !model.compress ? file.base64 : null,\n contentType: file.filetype,\n bufferGuid: !model.compress ? null : uuidv4(),\n dataCompressed: model.compress ? dataCompressed : null\n });\n\n spinner(false);\n if (apply) {\n $scope.$apply();\n }\n };\n var model = this;\n model.loading = false;\n model.uuid = uuidv4();\n model.$onInit = function () {\n model.addText = model.addText || \"Legg til\";\n };\n\n model.addAttachment = function () {\n model.attachments = model.attachments || [];\n\n $timeout(function () {\n var lastFileInput = $(\"#\" + model.uuid);\n if (lastFileInput) {\n lastFileInput.trigger(\"click\");\n }\n });\n };\n model.deleteAttachment = function (att) {\n $log.info(att);\n\n $confirm({\n text: \"Er du sikker på at du vil slette filen?\"\n }).then(function () {\n att.status = att.status === 2 ? -2 : -1;\n\n let deleteOnServer = att.status === -1;\n if (deleteOnServer) {\n attachmentApi.deleteBlobs([att]).then(() => {\n toastr.success(\"Slettet fil\");\n });\n }\n else {\n var attIndex = model.attachments\n .findIndex(x => x.bufferGuid == att.bufferGuid);\n\n if (attIndex > -1) {\n model.attachments.splice(attIndex, 1);\n }\n }\n });\n };\n\n $scope.handleLoadStart = () => {\n $log.info(\"handleLoadStart\");\n spinner(true);\n };\n $scope.afterValidate = (event, fileObjects) => {\n forEach(fileObjects, fo => {\n if (fo) {\n try {\n if (fo.filename === \"image.jpg\") {\n let x =\n model.attachments.filter(\n a => a.contentType === \"image/jpeg\"\n ).length + 1;\n fo.filename = `Bilde ${x}.jpg`;\n }\n } catch (error) {\n $log.error(\n \"Could not replace filename for image\",\n error\n );\n }\n\n /* if (model.resize && isFileImage(fo, \"filetype\")) {\n reSizeImage(fo, model.resize)\n .then(file => {\n pushAttachment(file, true);\n })\n .catch(err => {\n $log.error(err);\n pushAttachment(fo, true);\n });\n } else { */\n pushAttachment(fo);\n //}\n }\n });\n };\n\n $scope.checkFile = function (file, base64_object) {\n spinner(true);\n var deferred = $q.defer();\n if (base64_object.filesize > 10000000) {\n base64_object = null;\n toastr.warning(\n `${file.name} kan ikke lastes opp, max 10 mb`\n );\n }\n deferred.resolve(base64_object);\n return deferred.promise;\n };\n }\n ]\n};\n","export default \"\\n\\n\\n \\n   \\n\\n\\n {{model.addText}}  \\n\\n\\n\";","import markup from \"./markup.html\";\nexport default {\n bindings: {\n context: \"<\"\n },\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"commentApi\",\n \"commonApi\",\n \"contactApi\",\n \"albumConfig\",\n \"$timeout\",\n \"haveRoleFilter\",\n function ($log, commentApi, commonApi, contactApi, albumConfig, $timeout, haveRole) {\n\n function populateComments(resolve) {\n resolve.then(function (comments) {\n model.comments = comments.data;\n });\n }\n\n function addComment() {\n commentApi\n .commentModal(model.context)\n .result.then(function (comment) {\n if (comment) {\n commonApi.transformAttachments(comment.attachments);\n\n comment.text = comment.newComment;\n\n switch (model.context.commentType) {\n case 0:\n comment.regLineId = model.context.id;\n comment.commentStatus =\n model.context.lineStatus;\n break;\n case 1:\n comment.aberrationId = model.context.id;\n comment.commentStatus =\n model.context.commentStatus;\n break;\n case 2:\n comment.aberrationActionId =\n model.context.id;\n comment.commentStatus =\n model.context.commentStatus;\n break;\n }\n\n commentApi.saveComment(comment).then(function (res) {\n model.comments.push(res.data);\n });\n }\n });\n }\n\n var model = this;\n $timeout(function () {\n populateComments(commentApi.getComments(model.context));\n }, 0);\n\n model.addComment = addComment;\n model.disableVisibleToCustomerOperation = !haveRole(\n [\"Support\", \"KK\"],\n \"any\"\n );\n model.apiAddress = albumConfig.apiAddress;\n\n model.setVisibleToCustomer = comment => {\n if (model.disableVisibleToCustomerOperation) return;\n\n commentApi.toggleCustomerVisibility(comment).then(r => {\n comment.visibleToCustomer = r.data;\n });\n };\n\n model.setMarkedAsAnswered = comment => {\n commentApi.setCommentAnswered(comment).then(r => {\n comment.markedAsAnswered = r.data;\n });\n };\n\n model.openProfileImg = function (firstName, lastName, imageUrl) {\n contactApi\n .profileModal({\n firstName: firstName,\n lastName: lastName,\n imageUrl: imageUrl\n })\n .result.then(function () {\n });\n };\n model.tstamp = new Date().getTime();\n }\n ]\n};\n","export default \"
\\n
\\n
\\n

Ingen kommentarer enda...

\\n \\n
\\n
\\n
0\\\">\\n

\\n Kommentarer\\n

\\n \\n
\\n
\\n
\\n \\n

{{comment.commentedByString}}

\\n

\\n {{comment.createdDate | date :'dd.MM.yyyy HH:mm'}}\\n

\\n

\\n {{comment.stringStatus}}\\n

\\n \\n Sett som besvart\\n\\n \\n Synlig for kunde\\n
\\n
\\n

\\n
0\\\" />\\n

0\\\">\\n Vedlegg:\\n

\\n 0\\\"\\n ng-repeat=\\\"a in comment.attachments\\\" file=\\\"a\\\" files=\\\"comment.attachments\\\">\\n
\\n
\\n
\";","import markup from \"./markup.html\";\nexport default {\n bindings: {\n ext: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [function () {}]\n};","export default \"\\n\";","import markup from \"./markup.html\";\nimport viewerHtml from \"./viewer.html\";\nimport contentDisposition from \"content-disposition\";\nimport { endsWith } from \"lodash\";\n\nexport default {\n bindings: {\n document: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"$uibModal\",\n \"ibmApi\",\n \"$window\",\n \"$sce\",\n \"albumConfig\",\n function ($log, $uibModal, ibmApi, $window, $sce, albumConfig) {\n var removeBlob = function () {\n if (blobUrl) {\n URL.revokeObjectURL(blobUrl);\n }\n };\n\n var model = this;\n let albumAddress = albumConfig.albumAddress;\n var blobUrl;\n\n model.$onInit = function () {\n if (model.document && model.document.name) {\n model.document.docTitle = model.document.name;\n }\n if (model.document && model.document.download) {\n model.document.href = model.document.download;\n }\n\n model.visible =\n model.document &&\n model.document.docTitle &&\n endsWith(model.document.docTitle, \".pdf\");\n };\n\n let pdfModal = doc => {\n var modalInstance = $uibModal.open({\n template: viewerHtml,\n size: \"lg\",\n resolve: {\n pdf: [\n \"ibmApi\",\n ibmApi => {\n return ibmApi\n .downloadFileFromConnections(doc)\n .then(response => {\n var title;\n var cd = response.headers(\n \"content-disposition\"\n );\n if (cd) {\n var disposition = contentDisposition.parse(\n cd\n );\n title =\n disposition.parameters.filename;\n }\n\n var url = URL.createObjectURL(\n response.data\n );\n blobUrl = url;\n return {\n url: url,\n title: title\n };\n });\n }\n ]\n },\n\n controllerAs: \"modalvm\",\n controller: [\n \"pdf\",\n \"$timeout\",\n \"$uibModalInstance\",\n function (pdf, $timeout, $uibModalInstance) {\n var modalvm = this;\n modalvm.title = pdf.title;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n $timeout(() => {\n let pdfUrl = `${albumAddress}/pdfjs/web/viewer.html?file=${pdf.url}#zoom=auto`;\n var el = $(\"#pdfviewerIframe\");\n el.attr(\"src\", pdfUrl);\n }, 100);\n }\n ]\n });\n\n return modalInstance.result;\n };\n\n model.openPdf = function () {\n pdfModal(model.document).then(removeBlob, removeBlob);\n };\n }\n ]\n};\n","export default \"\\n\\n\";","export default \"
\\n

{{modalvm.title}}

\\n
\\n
\\n \\n
\\n
\\n \\n
\";","import markup from \"./markup.html\";\nexport default {\n bindings: {\n section: \"<\",\n financeStatuses: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [function () {}]\n};","export default \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
TypeDatoStatusSum
Husbank\\n \\n \\n \\n \\n \\n \\n
Startlån\\n \\n \\n \\n \\n \\n \\n
Privatlån\\n \\n \\n \\n \\n \\n \\n
Egenkapital (oppgitt av kunde)\\n \\n \\n \\n \\n \\n \\n
\";","import markup from \"./markup.html\";\nexport default {\n bindings: {\n val: \"=\",\n text: \"<\",\n isDisabled: \"<\",\n onUpdate: \"&\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n function () {\n var model = this;\n model.$onInit = function () {};\n\n model.change = function () {\n model.onUpdate({\n newValue: model.val\n });\n };\n }\n ]\n};","export default \"
\\n \\n {{model.text}} \\n
\";","import markup from \"./markup.html\";\n\nexport default {\n bindings: {\n postCode: \"=\",\n isDisabled: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"searchApi\",\n \"systemApi\",\n function ($log, searchApi, systemApi) {\n var setPostCode = function () {\n systemApi.getPostCodeById(model.postCode).then(response => {\n if (response.data) {\n model.postCodes = [response.data];\n }\n });\n };\n\n var model = this;\n var previousValue;\n\n model.$doCheck = function () {\n var currentValue = model && model.postCode;\n if (previousValue !== currentValue) {\n setPostCode();\n\n previousValue = currentValue;\n }\n };\n model.searchPostCodes = function (s) {\n if (!s) return;\n searchApi.searchPostCodes(s).then(function (res) {\n model.postCodes = res.data;\n });\n };\n }\n ]\n};\n","export default \"\\n\\n {{$select.selected.display}}\\n \\n
\\n
\\n
\";","import markup from \"./markup.html\";\nexport default {\n bindings: {\n value: \"<\",\n starSize: \"<\",\n onUpdate: \"&\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n function () {\n function setStar(val) {\n model.stars = [];\n for (var i = 1; i < 6; i++) {\n if (i <= val) {\n model.stars.push({\n value: i,\n filled: true\n });\n } else {\n model.stars.push({\n value: i,\n filled: false\n });\n }\n }\n }\n\n var model = this;\n model.$onInit = function () {\n var numberOfStars = model.value / 20;\n setStar(numberOfStars);\n };\n\n model.changeStar = function (s, event) {\n event.preventDefault();\n event.stopPropagation();\n\n setStar(s.value);\n model.value = s.value * 20;\n\n model.onUpdate({\n rating: model.value\n });\n };\n\n model.rateThis = function () {};\n }\n ]\n};","export default \"\\n\";","import {\n forEach,\n filter\n} from \"lodash\";\nimport markup from \"./markup.html\";\nexport default {\n bindings: {\n sections: \"<\",\n onUpdate: \"&\",\n projCust: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n function () {\n var model = this;\n\n model.removeSection = function (section) {\n var removeSectionFromProjCust = model.projCust.id === section.reservedBy;\n section.reservedStatus = 0;\n section.status = \"Ledig\";\n section.fullName = \"\";\n model.selectedSection = -1;\n section.reservedBy = -1;\n\n if (removeSectionFromProjCust) {\n model.onUpdate({\n section: {\n id: -1\n }\n });\n }\n };\n model.selectSection = function (section) {\n //deSelect other reserved\n var reservedByProjCust = filter(model.sections, {\n reservedBy: model.projCust.id\n });\n\n forEach(reservedByProjCust, function (r) {\n model.removeSection(r);\n });\n\n if (section) {\n section.reservedStatus = 1;\n section.status = \"Kjøpstilbud mottatt\";\n section.fullName = model.projCust.name;\n section.reservedBy = model.projCust.id;\n model.selectedSection = section.id;\n model.onUpdate({\n section: section\n });\n }\n };\n }\n ]\n};","export default \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
StatusHusSeksjonNummerKunde
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n {{section.status}}\\n {{section.status}}\\n {{section.status}}\\n {{section.houseNum}}{{section.apartmentKey}}{{section.sectionNum}}{{section.fullName}}\\n\\n \\n \\n
\";","import markup from \"./markup.html\";\nexport default {\n bindings: {\n phone: \"=\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n function() {\n var model = this;\n\n model.callPhone = function() {\n window.location.href = \"tel:\" + model.phone;\n };\n }\n ]\n};\n","export default \"
\\n \\n
\\n\";","import markup from \"./markup.html\";\nexport default {\n\n bindings: {\n checklists: \"<\",\n availableChecklists: \"<\",\n contextId: \"<\",\n context: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\"$log\", \"$confirm\", \"checklistApi\", \"$state\", \"haveRoleFilter\", function ($log, $confirm, checklistApi, $state, haveRole) {\n\n var addChecklist = haveRole([\"AddChecklist\"], \"any\");\n var editVisibleToCustomer = haveRole([\"Admin\", \"ChecklistAdmin\"], \"any\");\n var model = this;\n\n model.$onInit = function () {\n model.addChecklist = addChecklist;\n model.editVisibleToCustomer = editVisibleToCustomer;\n model.displayVisibleToCustomer = model.context == 3;\n };\n\n model.deleteCheckList = function (checklist) {\n\n $confirm({\n text: \"Sikker på at du vil slette sjekklisten?\"\n })\n .then(function () {\n\n checklistApi.deleteCheckList(checklist).then(function () {\n $state.reload();\n });\n });\n };\n\n model.toogleVisibleToCustomer = (ev, chk) => {\n\n let confirmText = !chk.visibleToCustomer ?\n `Synliggjøre sjekkliste '${chk.name}' i Mitt Trysilhus for seksjonens kunder?` :\n `Ta bort synligheten av sjekkliste '${chk.name}' i Mitt Trysilhus for seksjonens kunder?`;\n\n $confirm({\n text: confirmText\n })\n .then(function () {\n\n chk.visibleToCustomer = !chk.visibleToCustomer;\n checklistApi.postVisibleToCustomer(chk.id, chk.visibleToCustomer)\n .then(function () {\n });\n });\n\n ev.preventDefault();\n };\n }]\n\n};","export default \"
\\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdSjekklisteAnsvarligOpprettetOppdatertFullførtSynlig for\\n kunde
{{chk.id}}{{chk.name}}\\n {{chk.task.assignedToContactPersonPersonFullName}}{{chk.createdString}}{{chk.updatedString}}{{chk.completedString}}{{ chk.visibleToCustomer\\n ? 'Ja' : 'Nei'}}\\n \\n \\n \\n \\n
\\n
\\n
\";","import {\n map\n} from \"lodash\";\nexport default [\"$uibModalInstance\", \"$log\", \"checklistItemTypes\", \"item\", \"contextState\", \"bluePrints\",\n function ($uibModalInstance, $log, checklistItemTypes, item, contextState, bluePrints) {\n var modalvm = this;\n modalvm.item = item;\n modalvm.checklistItemTypes = checklistItemTypes.data;\n modalvm.contextState = contextState;\n\n\n modalvm.bluePrints = map(bluePrints, function (bp) {\n bp.label = bp.fileName;\n\n\n return bp;\n });\n\n\n modalvm.delete = function () {\n $uibModalInstance.close({\n item: modalvm.item,\n delete: true\n });\n\n };\n\n modalvm.save = function () {\n $uibModalInstance.close({\n item: modalvm.item\n });\n\n };\n modalvm.close = function () {\n $uibModalInstance.close();\n };\n }\n];","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"actions\",\n \"item\",\n \"contextState\",\n function ($uibModalInstance, $log, actions, item, contextState) {\n var modalvm = this;\n modalvm.actions = actions.data;\n modalvm.totalActions = actions.data.aberrationActions.totalActions\n ? actions.data.aberrationActions.totalActions\n : 0;\n modalvm.actionsTypes = actions.data.aberrationActionTypes;\n modalvm.actionSeverities = actions.data.actionSeverities;\n modalvm.item = item;\n modalvm.aberrationId = item.aberration\n ? item.aberration.aberrationId\n : null;\n modalvm.contextState = contextState;\n modalvm.aberrationAction = {};\n modalvm.aberrationAction;\n modalvm.item.category = actions.data.aberrationActionTypes[0].id;\n\n // modalvm.delete = function () {\n // $uibModalInstance.close({\n // item: modalvm.item,\n // delete: true\n // });\n // };\n\n modalvm.save = function () {\n $uibModalInstance.close({\n item: modalvm.item,\n actions: modalvm.aberrationAction,\n aberrationId: modalvm.aberrationId\n });\n };\n modalvm.close = function () {\n $uibModalInstance.close();\n };\n }\n];\n","import saveFile from \"shared/saveFile\";\nimport markup from \"./markup.html\";\nimport editItemModal from \"./editItemModal\";\nimport editItemModalHtml from \"./editItemModal.html\";\nimport Autolinker from \"autolinker\";\nimport aberrationActionsModalTemplate from \"./aberrationActionsModalTemplate.html\";\nimport aberrationActionsModal from \"./aberrationActionsModal\";\n\nimport { forEach, find, random, replace } from \"lodash\";\nexport default {\n bindings: {\n item: \"=\",\n contextState: \"<\",\n disabled: \"<\",\n completed: \"<\",\n bluePrints: \"<\",\n discrepancyType: \"<\",\n projId: \"<\",\n phaseId: \"<\",\n sectionId: \"<\",\n aberrationCategories: \"<\",\n onUpdate: \"&\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"$scope\",\n \"$q\",\n \"toastr\",\n \"commonApi\",\n \"$element\",\n \"$uibModal\",\n \"haveRoleFilter\",\n \"ibmApi\",\n \"checklistApi\",\n \"aberrationApi\",\n \"registrationApi\",\n \"moment\",\n function (\n $log,\n $scope,\n $q,\n toastr,\n commonApi,\n $element,\n $uibModal,\n haveRole,\n ibmApi,\n checklistApi,\n aberrationApi,\n registrationApi,\n moment\n ) {\n function editChecklistItemModal(item) {\n var modalInstance = $uibModal.open({\n template: editItemModalHtml,\n backdrop: \"static\",\n controllerAs: \"modalvm\",\n size: \"lg\",\n resolve: {\n item: [\n function () {\n return item;\n }\n ],\n checklistItemTypes: [\n \"checklistApi\",\n function (checklistApi) {\n return checklistApi.getChecklistItemTypes();\n }\n ],\n contextState: [\n function () {\n return model.contextState;\n }\n ],\n bluePrints: [\n function () {\n return model.bluePrints;\n }\n ]\n },\n controller: editItemModal\n });\n\n return modalInstance.result;\n }\n\n var model = this;\n model.$onInit = function () {\n model.allowEdit =\n haveRole([\"PRL\", \"PL\"], \"any\") &&\n model.contextState &&\n !model.completed;\n\n model.showAberrationActionBtn = model.discrepancyType == 2;\n\n model.showAberrationButton =\n model.discrepancyType == 0 &&\n model.contextState &&\n model.item.checklistId !== 0 &&\n !model.completed;\n\n model.aberrationHelpText = model.item.aberration\n ? `Avvik #${model.item.aberration.id} er allerede opprettet `\n : model.discrepancyType == 0\n ? \"Opprett nytt avvik\"\n : \"\";\n\n model.showRegLineButton =\n model.discrepancyType == 1 &&\n model.contextState &&\n model.item.checklistId !== 0 &&\n !model.completed;\n\n model.regLineHelpText = model.item.regLine\n ? `Reklamasjon #${model.item.regLine.lineIndexLineId} er allerede opprettet `\n : model.discrepancyType == 1\n ? \"Opprett ny reklamasjon\"\n : \"\";\n\n model.aberrationActionsHelpText =\n model.discrepancyType == 2\n ? model.item.actionAberrationId\n ? `Opprett ny tiltak.\\n Avvik #${\n model.item.actionAberrationId\n } er allerede opprettet.\n ${\n model.item.actionsInfo\n ? `\\nTiltak som er opprettet allerede: ${model.item.actionsInfo}.`\n : \"\"\n }`\n : \"Opprett ny tiltak\"\n : \"\";\n\n model.aberrationId =\n model.discrepancyType == 0 &&\n model.completed &&\n model.item.aberration\n ? model.item.aberration.id\n : null;\n model.aberrationCategory =\n model.discrepancyType == 0 &&\n model.completed &&\n model.item.aberration\n ? model.item.aberration.category\n : null;\n model.regLineId =\n model.discrepancyType == 1 &&\n model.completed &&\n model.item.regLine\n ? model.item.regLine.id\n : null;\n\n model.abCategories = model.aberrationCategories;\n\n var daysAgo3 = new Date();\n daysAgo3.setDate(daysAgo3.getDate() - 3);\n\n model.options = {\n minDate: daysAgo3\n };\n\n model.item.random = random(10000);\n\n if (model.item.type === 2) {\n var optionSelected = find(\n model.item.options,\n function (opt) {\n return opt.selected;\n }\n );\n\n if (optionSelected) {\n model.item.selectedVal = optionSelected.key;\n }\n }\n };\n\n function createAberrebationActionModal(item) {\n var modalInstance = $uibModal.open({\n template: aberrationActionsModalTemplate,\n backdrop: \"static\",\n controllerAs: \"modalvm\",\n size: \"lg\",\n resolve: {\n item: [\n function () {\n return item;\n }\n ],\n actions: [\n \"checklistApi\",\n function (checklistApi) {\n return checklistApi.GetChecklistAbrrebationActions(\n {\n checklistId: model.item.checklistId,\n checklistItemId: model.item.id,\n aberrationId: \"\"\n }\n );\n }\n ],\n contextState: [\n function () {\n return model.contextState;\n }\n ]\n },\n\n controller: aberrationActionsModal\n });\n\n return modalInstance.result;\n }\n\n model.downloadBluePrint = function (x) {\n var dd = find(model.bluePrints, {\n id: x\n });\n\n if (dd) {\n ibmApi.downloadFileFromConnections(dd).then((res) => {\n saveFile(res, dd.docTitle);\n });\n } else {\n toastr.warning(\"kunne ikke finne tegning å laste ned!\");\n }\n };\n\n model.openAberrationActionsModal = function () {\n createAberrebationActionModal(model.item).then(function (\n result\n ) {\n checklistApi.SaveChecklistAbrrebationActions({\n id: result.item.id,\n projTable: model.contextState.id,\n projPhase: model.contextState.ppId,\n projSection: model.contextState.sectionId,\n checklistId: result.item.checklistId,\n aberrationId: result.aberrationId,\n timeLimit: result.actions.aberrationTimeLimit,\n aberrationActionType: result.item.category,\n action: result.actions\n });\n });\n };\n model.openAberrationModal = function () {\n aberrationApi\n .aberrationModal({\n attachments: true,\n aberrationCategories: model.abCategories\n })\n .result.then(function (aberration) {\n if (aberration) {\n aberration.projPhase = model.contextState.ppId;\n aberration.projTable = model.contextState.id;\n aberration.projSectionId =\n model.contextState.sectionId;\n\n var checklistItemAberrationRequest = {\n aberration: aberration,\n checklistItem: model.item,\n skipQaManagerNotification: true\n };\n\n aberrationApi\n .createFromChecklistItem(\n checklistItemAberrationRequest\n )\n .then(function (res) {\n model.item.aberration = res.data;\n model.aberrationHelpText = model.item\n .aberration\n ? `Avvik #${model.item.aberration.id} er allerede opprettet `\n : \"Opprett nytt avvik\";\n });\n }\n });\n };\n\n model.openRegLineModal = function (newReg) {\n newReg = newReg || {\n projRegistrationProjTable: model.projId,\n projRegistrationPhase: model.phaseId,\n projRegistrationSection: model.sectionId,\n regLineCategoryId: 1,\n regHeaderDate: moment(),\n regHeaderType: 0,\n regHeaderStatus: 6,\n lineStatus: 6,\n timeLimit: new Date()\n };\n\n registrationApi\n .regLineModal(newReg)\n .result.then(function (regLine) {\n if (regLine) {\n var checklistItemRegLineRequest = {\n regLine: regLine,\n checklistItem: model.item,\n skipQaManagerNotification: true\n };\n registrationApi\n .createFromChecklistItem(\n checklistItemRegLineRequest\n )\n .then(function (regLineResult) {\n model.item.regLine = regLineResult.data;\n model.regLineHelpText = model.item.regLine\n ? `Reklamasjon #${model.item.regLine.lineIndexLineId} er allerede opprettet `\n : \"Opprett ny reklamasjon\";\n })\n .catch(() => {\n setTimeout(() => {\n model.openRegLineModal(regLine);\n }, 1000);\n });\n }\n });\n };\n\n model.openModalEditItem = function () {\n editChecklistItemModal(model.item).then(function (modalres) {\n if (modalres.delete) {\n model.onUpdate();\n return;\n }\n\n if (modalres.item) {\n var linkedText = Autolinker.link(modalres.item.txt, {\n replaceFn: function (match) {\n var documentDownload;\n var tag = match.buildTag();\n //var anchorText = replace(match.getAnchorText(), \"album://\", \"\");\n var arr = match\n .getAnchorText()\n .split(\"/\")\n .splice(2);\n\n if (arr.length === 1) {\n documentDownload = find(model.bluePrints, {\n linkText: arr[0]\n });\n }\n if (arr.length === 2) {\n documentDownload = find(\n model.bluePrints,\n (dd) => {\n var folderId = replace(\n dd.folderId,\n new RegExp(\"-\", \"g\"),\n \"\"\n );\n return (\n dd.linkText == arr[1] &&\n folderId === arr[0]\n );\n }\n );\n }\n\n if (documentDownload) {\n tag.setInnerHtml(documentDownload.docTitle);\n tag.setAttr(\"href\", \"\");\n tag.setAttr(\n \"ng-click\",\n \"model.downloadBluePrint('\" +\n documentDownload.id +\n \"')\"\n );\n }\n\n return tag;\n }\n });\n\n modalres.item.html = \"

\" + linkedText + \"

\";\n }\n });\n };\n\n model.setSelectedOption = function () {\n forEach(model.item.options, function (opt) {\n opt.selected = model.item.selectedVal === opt.key;\n });\n };\n\n model.downloadFile = function (att) {\n $log.info(\"download\", att);\n /* if (model.item.type !== 5) return;\n\n var blob = b64toBlob(\n model.item.blob.base64,\n model.item.blob.contentType\n );\n commonApi.downloadOrOpen({\n data: {\n contentType: model.item.blob.contentType,\n name: model.item.blob.fileName,\n blob: blob\n }\n }); */\n };\n\n model.checkNumNoDecimal = function (e) {\n if (e.keyCode == 110 || e.keyCode > 190) {\n e.preventDefault();\n }\n };\n\n model.removeFile = function (att, event) {\n event.preventDefault();\n event.stopPropagation();\n $log.info(\"remove\", att);\n att.status = att.status === 2 ? -2 : -1;\n /* if (model.item.type !== 5) return;\n model.item.blob = null; */\n };\n\n $scope.checkFile = function (file, base64_object) {\n var deferred = $q.defer();\n\n if (base64_object.filesize > 10000000) {\n base64_object = null;\n toastr.warning(\"Vedlegget er fort stort, max 10 mb\");\n }\n\n deferred.resolve(base64_object);\n\n return deferred.promise;\n };\n\n $scope.afterValidate = (event, fileObjects) => {\n model.item.attachments = model.item.attachments || [];\n\n forEach(fileObjects, (fo) => {\n model.item.attachments.push({\n status: 2,\n fileName: fo.filename,\n base64: fo.base64,\n contentType: fo.filetype\n });\n });\n };\n }\n ]\n};\n","export default \"
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\";","export default \"
\\n

Tiltak #{{modalvm.totalActions + 1 }} for\\n sjekklistpunkt\\n {{modalvm.item.txt}}

\\n
\\n
\\n \\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n Vedlegg\\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n
\";","export default \"
\\n

Rediger sjekklistepunkt

\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\";","import markup from \"./markup.html\";\nimport {\n includes,\n maxBy,\n replace\n} from \"lodash\";\nexport default {\n bindings: {\n itemTypes: \"<\",\n contextState: \"<\",\n bluePrints: \"<\",\n item: \"=\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n function () {\n var model = this;\n model.$onInit = function () {\n model.showMentio = model.bluePrints && model.bluePrints.length > 0;\n\n model.item.showOptions = function () {\n return includes([2, 3], Number(model.item.type));\n };\n };\n\n model.setPosition = function (e) {\n if (e.keyCode === 16) {\n var mentioMenu = $(\"mentio-menu\");\n $(mentioMenu).css(\"position\", \"fixed\");\n }\n };\n\n model.addOption = function () {\n model.item.options = model.item.options || [];\n\n var nextKey = maxBy(model.item.options, function (o) {\n return o.key;\n }) || {\n key: 0\n };\n\n model.item.options.push({\n key: Number(nextKey.key) + 1\n });\n };\n\n model.bluePrintTagged = function (item) {\n\n var folderId = replace(item.folderId, new RegExp(\"-\", \"g\"), \"\");\n\n return \"album://\" + folderId + \"/\" + item.linkText;\n };\n }\n ]\n};","export default \"\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n\\n \\n
\\n\\n
\\n \\n\\n
\\n
\\n
\\n Valg #{{$index+1}}\\n
\\n \\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n \\n
\";","import markup from \"./markup.html\";\nexport default {\n bindings: {\n regLine: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n function() {\n var model = this;\n\n model.$onInit = function() {};\n }\n ]\n};\n","export default \"
\\n
\\n Reklamasjon\\n
\\n\\n \\n \\n
\\n \\n
\\n\\n\\n
\";","import angular from \"angular\";\nimport markup from \"./markup.html\";\nimport { first, forEach, filter, find } from \"lodash\";\nexport default {\n bindings: {\n projectId: \"<\",\n customer: \"=\"\n },\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"customerApi\",\n \"projectApi\",\n function($log, customerApi, projectApi) {\n var model = this;\n\n model.$onInit = function() {\n model.reset();\n\n projectApi.getProjectList().then(list => {\n model.projectList = list.data;\n if (model.customer.projectId) {\n model.projectList = filter(model.projectList, {\n id: model.customer.projectId\n });\n }\n });\n };\n\n var setCustomerData = function(customer) {\n model.customer = customer;\n\n model.projects = angular.copy(model.projectList);\n\n forEach(model.found, f => {\n f.selected = f.id === model.customer.id;\n });\n\n forEach(model.projects, p => {\n p.disable =\n find(model.customer.projCustomers, {\n projTable: p.id\n }) !== undefined;\n });\n };\n\n model.reset = () => {\n var mobile =\n model.customer &&\n model.customer.person &&\n model.customer.person.mobile;\n model.found = null;\n\n model.customer = {\n projCustomers: [],\n projectId: model.projectId,\n person: {\n mobile: mobile\n }\n };\n };\n\n model.selectCustomer = customer => {\n setCustomerData(customer);\n };\n model.typeSearch = function(e) {\n if (\n e.keyCode === 13 &&\n model.customer.person.mobile.length === 8\n ) {\n model.search();\n }\n };\n\n model.withOutMobile = () => {\n model.projects = angular.copy(model.projectList);\n model.searchDone = true;\n };\n\n model.search = () => {\n if (model.customer.person.mobile) {\n customerApi\n .findCustomerByMobile(model.customer.person.mobile)\n .then(apiResponse => {\n forEach(apiResponse.data, c => {\n c.projectId = model.customer.projectId;\n });\n\n model.found = apiResponse.data;\n\n if (apiResponse.data.length > 0) {\n setCustomerData(first(apiResponse.data));\n } else {\n delete model.customer.person.firstName;\n delete model.customer.person.lastName;\n delete model.customer.person.birthDate;\n delete model.customer.person.email;\n delete model.customer.person.gender;\n\n setCustomerData(model.customer);\n }\n\n model.searchDone = true;\n });\n } else {\n model.reset();\n model.searchDone = true;\n }\n };\n }\n ]\n};\n","export default \"\\n\\n
\\n
\\n

Registrering av ny\\n interessent

\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n \\n\\n\\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n

Brukere funnet med mobilnummeret:

\\n Ingen funnet med dette mobilnummeret\\n \\n
\\n\\n \\n
\\n
\\n Det vil bli opprettet en ny interessent\\n
\\n
\\n
\\n\";","import markup from \"./markup.html\";\nexport default {\n bindings: {\n process: \"<\",\n processPhases: \"<\",\n isoProcessTypes: \"<\",\n processTypes: \"<\",\n processTradeCodes: \"<\",\n projModels: \"<\",\n projTypes: \"<\",\n projLines: \"<\",\n milestoneTypes: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$stateParams\",\n function ($stateParams) {\n this.isNewVersion =\n $stateParams.isNewVersion &&\n JSON.parse($stateParams.isNewVersion);\n }\n ]\n};\n","export default \"
\\n
\\n

Spesifikasjoner

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{ $select.selected.lineNu }} | {{ $select.selected.description }}\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n

Konseptvalg

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n

Sist oppdatert {{model.process.updatedString}}

\\n
\\n\\n
\\n

Prosessinformasjon

\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\";","import markup from \"./markup.html\";\nexport default {\n bindings: {\n guarantee: \"<\",\n onUpdate: \"&\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n function () {\n var model = this;\n\n model.changeEndDate = function (date) {\n model.guarantee.endDateCopy = date;\n model.guarantee.endDate = date;\n model.onUpdate({\n guarantee: model.guarantee\n });\n };\n\n model.changeVendor = function () {\n model.guarantee.vendorCopy = model.guarantee.vendor;\n model.onUpdate({\n guarantee: model.guarantee\n });\n };\n model.changeActive = function () {\n if (model.guarantee.active) {\n model.guarantee.date = model.guarantee.dateCopy || new Date();\n model.guarantee.endDate = model.guarantee.endDateCopy;\n model.guarantee.vendor = model.guarantee.vendorCopy;\n } else {\n model.guarantee.date = null;\n model.guarantee.vendor = null;\n model.guarantee.endDate = null;\n }\n model.onUpdate({\n guarantee: model.guarantee\n });\n };\n\n model.changeDate = function (date) {\n model.guarantee.dateCopy = date;\n model.guarantee.date = date;\n model.onUpdate({\n guarantee: model.guarantee\n });\n };\n }\n ]\n};","export default \"
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\";","import {\n forEach\n} from \"lodash\";\nimport markup from \"./markup.html\";\nimport angular from \"angular\";\nexport default {\n bindings: {\n displaynameProperty: \"@\",\n abstractProxyProperty: \"@?\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"$interpolate\",\n \"$state\",\n \"$transitions\",\n \"$q\",\n \"albumConfig\",\n function ($log, $interpolate, $state, $transitions, $q, albumConfig) {\n var model = this;\n model.$onInit = function () {\n model.breadcrumbs = [];\n if ($state.$current.name !== \"\") {\n resolvePaths($state.getCurrentPath(), updateBreadcrumbsArray);\n }\n $transitions.onSuccess({}, function (transition) {\n resolveTransition(transition, updateBreadcrumbsArray);\n });\n };\n\n function resolvePaths(paths, fn) {\n var resolves = {};\n var tokens = [];\n var promises = [];\n\n forEach(paths, function (path) {\n forEach(path.resolvables, function (r) {\n tokens.push(r.token);\n promises.push(r.promise);\n });\n });\n\n $q.all(promises).then(function (promisesResolved) {\n for (var i = 0; i < tokens.length; i++) {\n var t = tokens[i];\n var p = promisesResolved[i];\n resolves[t] = p;\n }\n\n fn(resolves);\n });\n }\n\n function resolveTransition(trans, fn) {\n var tokens = trans.getResolveTokens();\n var resolves = {};\n var promises = tokens.map(function (token) {\n var resolved = trans.injector().get(token);\n resolves[token] = resolved;\n return resolved;\n });\n $q.all(promises).then(function () {\n fn(resolves);\n });\n }\n\n /**\n * Start with the current state and traverse up the path to build the\n * array of breadcrumbs that can be used in an ng-repeat in the template.\n */\n function updateBreadcrumbsArray(resolves) {\n var workingState;\n var displayName;\n var breadcrumbs = [];\n var currentState = $state.$current;\n\n while (currentState && currentState.name !== \"\") {\n workingState = getWorkingState(currentState);\n workingState.context = resolves;\n if (workingState) {\n displayName = getDisplayName(workingState);\n var routeExternal = \n getExternalRouteByWorkingState(workingState) || \n getExternalRouteByDisplay(displayName);\n if (displayName !== false && !stateAlreadyInBreadcrumbs(workingState, breadcrumbs)) {\n breadcrumbs.push({\n displayName: displayName,\n route: workingState.name,\n routeExternal: routeExternal\n });\n }\n }\n currentState = currentState.parent;\n }\n breadcrumbs.reverse();\n model.breadcrumbs = breadcrumbs;\n }\n\n /**\n * Get the state to put in the breadcrumbs array, taking into account that if the current state is abstract,\n * we need to either substitute it with the state named in the `scope.abstractProxyProperty` property, or\n * set it to `false` which means this breadcrumb level will be skipped entirely.\n * @param currentState\n * @returns {*}\n */\n function getWorkingState(currentState) {\n var proxyStateName;\n var workingState = currentState;\n if (currentState.abstract === true) {\n if (typeof model.abstractProxyProperty !== \"undefined\") { \n proxyStateName = getObjectValue(model.abstractProxyProperty, currentState);\n if (proxyStateName) {\n workingState = angular.copy($state.get(proxyStateName));\n if (workingState) {\n workingState.locals = currentState.locals;\n }\n } else {\n workingState = false;\n }\n } else {\n workingState = false;\n }\n }\n return workingState;\n }\n\n /**\n * Resolve the displayName of the specified state. Take the property specified by the `displayname-property`\n * attribute and look up the corresponding property on the state's config object. The specified string can be interpolated against any resolved\n * properties on the state config object, by using the usual {{ }} syntax.\n * @param currentState\n * @returns {*}\n */\n function getDisplayName(currentState) {\n var interpolationContext = currentState.context;\n var propertyReference;\n var displayName;\n\n if (!model.displaynameProperty) {\n // if the displayname-property attribute was not specified, default to the state's name\n return currentState.name;\n }\n propertyReference = getObjectValue(model.displaynameProperty, currentState);\n\n if (propertyReference === false) {\n return false;\n } else if (typeof propertyReference === \"undefined\") {\n return currentState.name;\n } else {\n // use the $interpolate service to handle any bindings in the propertyReference string.\n //interpolationContext = (typeof currentState.locals !== \"undefined\") ? currentState.locals.globals : currentState;\n\n displayName = $interpolate(propertyReference)(interpolationContext);\n return displayName;\n }\n }\n\n /**\n * Given a string of the type 'object.property.property', traverse the given context (eg the current $state object) and return the\n * value found at that path.\n *\n * @param objectPath\n * @param context\n * @returns {*}\n */\n function getObjectValue(objectPath, context) {\n var i;\n var propertyArray = objectPath.split(\".\");\n var propertyReference = context;\n\n for (i = 0; i < propertyArray.length; i++) {\n if (angular.isDefined(propertyReference[propertyArray[i]])) {\n propertyReference = propertyReference[propertyArray[i]];\n } else {\n // if the specified property was not found, default to the state's name\n return undefined;\n }\n }\n return propertyReference;\n }\n\n /**\n * Check whether the current `state` has already appeared in the current breadcrumbs array. This check is necessary\n * when using abstract states that might specify a proxy that is already there in the breadcrumbs.\n * @param state\n * @param breadcrumbs\n * @returns {boolean}\n */\n function stateAlreadyInBreadcrumbs(state, breadcrumbs) {\n var i;\n var alreadyUsed = false;\n for (i = 0; i < breadcrumbs.length; i++) {\n if (breadcrumbs[i].route === state.name) {\n alreadyUsed = true;\n }\n }\n return alreadyUsed;\n }\n\n function getExternalRouteByDisplay(displayName) {\n var extRoutes = {};\n\n extRoutes[\"Hjem\"] = albumConfig.useMultipleAppRouting == \"true\" ? \n window.location.protocol + \"//\" + window.location.hostname + \"/v3/dashboard\" : null;\n\n extRoutes[\"Prosjekter\"] = albumConfig.useMultipleAppRouting == \"true\" ?\n window.location.protocol + \"//\" + window.location.hostname + \"/v3/objects\" : null;\n\n extRoutes[\"Prosesser\"] = albumConfig.useMultipleAppRouting == \"true\" ? \n window.location.protocol + \"//\" + window.location.hostname + \"/v3/processes\" : null;\n\n extRoutes[\"Kunder\"] = albumConfig.useMultipleAppRouting == \"true\" ? \n window.location.protocol + \"//\" + window.location.hostname + \"/v3/customers\" : null;\n\n extRoutes[\"Kontaktpersoner\"] = albumConfig.useMultipleAppRouting == \"true\" ? \n window.location.protocol + \"//\" + window.location.hostname + \"/v3/contactPersons\" : null;\n\n extRoutes[\"Firmakontakter\"] = albumConfig.useMultipleAppRouting == \"true\" ? \n window.location.protocol + \"//\" + window.location.hostname + \"/v3/contacts\" : null;\n\n extRoutes[\"Oppgaver\"] = albumConfig.useMultipleAppRouting == \"true\" ?\n window.location.protocol + \"//\" + window.location.hostname + \"/v3/tasks\" : null;\n\n extRoutes[\"Rapporter\"] = albumConfig.useMultipleAppRouting == \"true\" ? \n window.location.protocol + \"//\" + window.location.hostname + \"/v3/reports\" : null;\n\n extRoutes[\"Avvik\"] = albumConfig.useMultipleAppRouting == \"true\" ? \n window.location.protocol + \"//\" + window.location.hostname + \"/v3/aberrations\" : null;\n\n return extRoutes[displayName];\n }\n\n function getExternalRouteByWorkingState(workingState) {\n\n if (workingState.name == \"main.projects.project.house.schedules\")\n {\n return getExternalAddress(workingState.context.$stateParams.ppId, 1, \"/schedule\");\n }\n\n if (workingState.name == \"main.projects.project.house.index\")\n {\n return getExternalAddress(workingState.context.$stateParams.ppId, 1, \"\");\n }\n\n if (workingState.name == \"main.projects.project.index\")\n {\n return getExternalAddress(workingState.context.$stateParams.id, 0, \"\");\n }\n\n if (workingState.name == \"main.checklists\" && workingState.context.$stateParams.contextId != null)\n {\n return getExternalAddress(workingState.context.$stateParams.contextId, workingState.context.$stateParams.context - 1, \"/checklists\");\n }\n\n return undefined;\n }\n\n function getExternalAddress(id, type, path) {\n return albumConfig.useMultipleAppRouting == \"true\" ? \n albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=\" + type + \"&id=\" + id + \"&path=\" + path : undefined;\n }\n }\n ]\n};","export default \"\";","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"projects\",\n function($uibModalInstance, $log, projects) {\n var modalvm = this;\n\n modalvm.projects = projects.data;\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.ok = function() {\n $uibModalInstance.close({\n project: modalvm.project,\n noteText: modalvm.noteText\n });\n };\n }\n];\n","import { range, find, forEach } from \"lodash\";\nimport markup from \"./markup.html\";\nimport addprojcustctrl from \"./addprojcust\";\nimport addprojcusthtml from \"./addprojcust.html\";\nimport saveFile from \"shared/saveFile\";\n\nexport default {\n bindings: {\n customer: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$scope\",\n \"$log\",\n \"moment\",\n \"haveRoleFilter\",\n \"$uibModal\",\n \"$state\",\n \"customerApi\",\n \"toastr\",\n \"noteApi\",\n \"$confirm\",\n \"sectionApi\",\n \"taskApi\",\n \"projectApi\",\n \"albumConfig\",\n \"contactApi\",\n function (\n $scope,\n $log,\n moment,\n haveRole,\n $uibModal,\n $state,\n customerApi,\n toastr,\n noteApi,\n $confirm,\n sectionApi,\n taskApi,\n projectApi,\n albumConfig,\n contactApi\n ) {\n var getStarRange = probability => {\n if (probability && probability > 0) {\n var stars = Math.round(probability / 20);\n\n return range(0, 5).map(i => {\n return {\n value: i,\n filled: i < stars\n };\n });\n }\n\n return undefined;\n };\n\n function addProjCustModal() {\n var modalInstance = $uibModal.open({\n template: addprojcusthtml,\n controllerAs: \"modalvm\",\n controller: addprojcustctrl,\n resolve: {\n projects: [\n \"projectApi\",\n projectApi => {\n return projectApi.getProjectList();\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var model = this;\n model.apiAddress = albumConfig.apiAddress;\n\n model.isAllowedToEditPNumer = haveRole(\n [\"Sales\", \"SalesAdmin\", \"KK\"],\n \"any\"\n );\n\n model.$onInit = function () {\n if (\n model.customer &&\n model.customer.person &&\n model.customer.pNumber\n ) {\n model.setBirthDate();\n }\n\n if (model.customer && model.customer.projCustomers ) {\n model.customer.projCustomers = \n model.orderProjects(model.customer.projCustomers);\n }\n\n model.updateCrm();\n };\n\n $scope.$on(\"$destroy\", function () {\n model.hubConnection.stop();\n });\n\n var signalR = window.signalR;\n\n model.hubUrl = \"#{AlbumWeb.HubUrl}\";\n model.hubUrl = model.hubUrl.indexOf(\"#\") > -1 ? \"http://localhost:4496\" : model.hubUrl;\n model.hubConnection = new signalR.HubConnectionBuilder().withUrl(model.hubUrl + \"/section\",\n {\n skipNegotiation: true,\n transport: signalR.HttpTransportType.WebSockets\n })\n .withAutomaticReconnect()\n .build();\n\n model.hubConnection.start();\n model.hubConnection.on(\"PurchaseProgress\", function (projCustomerId, progress) {\n \n var projCustomers = Object.assign([], model.customer.projCustomers);\n model.customer.projCustomers = [];\n\n var projCustomerIndex = projCustomers\n .findIndex(projCust => projCust.id == projCustomerId);\n\n if (projCustomerIndex > -1) {\n switch (progress) {\n case 0:\n projCustomers[projCustomerIndex]\n .purchaseProgressPercent = \"0%\";\n projCustomers[projCustomerIndex]\n .purchaseProgressText = \"Avbrutt\";\n projCustomers[projCustomerIndex]\n .hasActivePurchase = false;\n projCustomers[projCustomerIndex]\n .crmStatus.text =\n `Nettkjøp avbrutt, seksjon ${model.customer.projCustomers[projCustomerIndex].projSectionSectionNum}`;\n break;\n case 20:\n projCustomers[projCustomerIndex]\n .purchaseProgressPercent = \"20%\";\n projCustomers[projCustomerIndex]\n .purchaseProgressText = \"1/5 Intro\";\n break;\n case 40:\n projCustomers[projCustomerIndex]\n .purchaseProgressPercent = \"40%\";\n projCustomers[projCustomerIndex]\n .purchaseProgressText = \"2/5 Tilvalg\";\n break;\n case 60:\n projCustomers[projCustomerIndex]\n .purchaseProgressPercent = \"60%\";\n projCustomers[projCustomerIndex]\n .purchaseProgressText = \"3/5 Fargevalg\";\n break;\n case 80:\n projCustomers[projCustomerIndex]\n .purchaseProgressPercent = \"80%\";\n projCustomers[projCustomerIndex]\n .purchaseProgressText = \"4/5 Oppsummering\";\n break;\n case 100:\n projCustomers[projCustomerIndex]\n .purchaseProgressPercent = \"100%\";\n projCustomers[projCustomerIndex]\n .purchaseProgressText = \"5/5 Kjøpstilbud\";\n break;\n }\n\n\n model.customer.projCustomers = [...projCustomers];\n $scope.$apply();\n }\n });\n model.hubConnection.on(\"PurchaseOfferReceived\", function (projCustomerId) {\n\n var projCustomers = Object.assign([], model.customer.projCustomers);\n model.customer.projCustomers = [];\n\n var projCustomerIndex = projCustomers\n .findIndex(projCust => projCust.id == projCustomerId);\n\n if (projCustomerIndex > -1) {\n projCustomers[projCustomerIndex]\n .crmStatus.text =\n `Digitalt kjøpstilbud mottatt, seksjon ${projCustomers[projCustomerIndex].projSectionSectionNum}`;\n projCustomers[projCustomerIndex]\n .hasActivePurchase = false;\n projCustomers[projCustomerIndex].crmStatus\n .buttons.accept = true;\n projCustomers[projCustomerIndex].crmStatus\n .buttons.reject = true;\n projCustomers[projCustomerIndex].crmStatus\n .buttons.download = true;\n projCustomers[projCustomerIndex].projCustStatus = 4;\n projCustomers[projCustomerIndex].projSectionId =\n projCustomers[projCustomerIndex].purchasingSection;\n }\n\n model.customer.projCustomers = [...projCustomers];\n $scope.$apply();\n\n });\n\n model.hubConnection.on(\"PurchaseCancelled\", function (projCustomerId) {\n\n var projCustomers = Object.assign([], model.customer.projCustomers);\n model.customer.projCustomers = [];\n\n var projCustomerIndex = projCustomers\n .findIndex(projCust => projCust.id == projCustomerId);\n\n if (projCustomerIndex > -1) {\n projCustomers[projCustomerIndex]\n .crmStatus.text =\n `Nettkjøp avbrutt, seksjon ${projCustomers[projCustomerIndex].projSectionSectionNum}`;\n projCustomers[projCustomerIndex]\n .hasActivePurchase = false;\n projCustomers[projCustomerIndex].projCustStatus = 7;\n projCustomers[projCustomerIndex].crmStatus.buttons.reserve = true;\n projCustomers[projCustomerIndex].crmStatus.buttons.delete = true;\n }\n\n model.customer.projCustomers = [...projCustomers];\n $scope.$apply();\n\n });\n\n model.connectToHub = function () {\n setTimeout(function () {\n if (model.hubConnection.state != \"Connected\" || !model.customer.projCustomers) {\n model.connectToHub();\n } else {\n forEach(model.customer.projCustomers, projCustomer => {\n if (projCustomer.purchasingSection != null &&\n projCustomer.hasActivePurchase) {\n model.hubConnection.invoke(\"ConnectHub\", projCustomer.purchasingSection);\n }\n });\n }\n }, 500);\n };\n model.connectToHub();\n\n $scope.$onInit = function () {\n //console.info(\"oninit\");\n };\n\n $scope.$on(\"$destroy\", function () {\n\n });\n\n model.orderProjects = function (projects) {\n //Get all projects customer owns\n var projectsOwner = projects.filter(x => x.projCustStatus === 1);\n //Sort projects owned by date\n projectsOwner.sort(function(a,b){\n return new Date(b.date) - new Date(a.date);\n });\n //Get all projects customer not owns\n var projectsNotOwner = projects.filter(x => x.projCustStatus !== 1);\n //Sort projects not owned by date\n projectsNotOwner.sort(function(a,b){ \n return new Date(b.date) - new Date(a.date);\n });\n //First owned prjects then not owned\n var proj = [...projectsOwner, ...projectsNotOwner];\n return proj;\n };\n\n model.updateCrm = function () {\n forEach(model.customer.projCustomers, function (pc) {\n switch (pc.projCustStatus) {\n case 0:\n case 3:\n var haveReserved =\n pc.projSectionReservedStatus === 1;\n var notInterested = pc.notFollowUp;\n var haveRating = pc.probability !== undefined;\n var hasActivePurchase = pc.hasActivePurchase;\n\n var text =\n notInterested ? \"Ikke interessert\" :\n haveReserved ? \"Kjøpstilbud mottatt\" :\n hasActivePurchase ? \"Nettkjøp pågår\" : \"Interessent\";\n\n if (pc.projSectionSectionNum)\n text += ` seksjon ${pc.projSectionSectionNum}`;\n\n var buttons = notInterested\n ? {\n note: true\n }\n : haveReserved\n ? {\n note: true,\n delete: false,\n buy: true,\n removeReservation: true\n }\n : {\n note: true,\n delete: !hasActivePurchase && haveRole(\"Sales\"),\n showing: !hasActivePurchase && haveRole(\"Sales\"),\n reserve: !hasActivePurchase && haveRole(\"Sales\"),\n rate: !haveRating\n };\n\n pc.crmStatus = {\n index: 1,\n stars: getStarRange(pc.probability),\n text: text,\n buttons: buttons,\n linkTo: (pc.projSectionId || pc.purchasingSection) ? \"section\" : null\n };\n break;\n case 1:\n pc.crmStatus = {\n index: 0,\n text: `Eier seksjon ${pc.projSectionSectionNum}`,\n buttons: {\n note: true,\n regLine: true\n },\n linkTo: \"section\"\n };\n break;\n case 2:\n pc.crmStatus = {\n text: \"Kansellert\",\n buttons: {\n note: true\n }\n };\n break;\n case 4:\n case 5:\n case 6:\n case 7:\n pc.crmStatus = {\n text:\n (pc.projCustStatus == 4 ? \"Digitalt kjøpstilbud mottatt\" :\n pc.projCustStatus == 5 ? \"Digitalt kjøpstilbud akseptert\" :\n pc.projCustStatus == 6 ? \"Digitalt kjøpstilbud avvist\" :\n pc.projCustStatus == 7 ? \"Nettkjøp avbrutt\" : null) + `, seksjon ${pc.projSectionSectionNum}`,\n buttons: {\n accept: pc.projCustStatus == 4,\n reject: pc.projCustStatus == 4 || pc.projCustStatus == 5,\n buy: pc.projCustStatus == 5,\n download: pc.projCustStatus == 4 || pc.projCustStatus == 5,\n reserve: pc.projCustStatus == 7,\n delete: pc.projCustStatus == 7,\n showing: pc.projCustStatus == 7\n },\n linkTo: \"section\"\n };\n break;\n case 8:\n pc.crmStatus = {\n text: \"Ikke interessert\"\n };\n\n if (pc.projSectionSectionNum)\n pc.crmStatus.text += ` seksjon ${pc.projSectionSectionNum}`;\n\n break;\n }\n });\n };\n\n moment.parseTwoDigitYear = function (yearString) {\n if (Number(yearString) < 10) {\n return parseInt(yearString) + 2000;\n }\n\n return parseInt(yearString) + 1900;\n };\n model.setBirthDate = function () {\n if (\n model.isAllowedToEditPNumer &&\n model.customer &&\n model.customer.person &&\n model.customer.pNumber.length === 11 \n ) {\n //Siffer 7-9\n // 1855 - 1899 = 500 749\n // 1900 - 1999 = 000 499\n // 2000 - 2054 = 500 - 999\n\n //000-499 = 1900 - 1999\n //500 - 749 = 1854 - 1899\n //500 - 999 = 2000 - 2039\n //900 - 999 = 1940-1999\n\n //Siffer nr 9 viser kjønn. Partall er kvinne og oddetall er mann\n var digits = model.customer.pNumber.toString().split(\"\");\n var realDigits = digits.map(Number);\n\n var d1 = realDigits[0].toString();\n var d2 = realDigits[1].toString();\n var m1 = realDigits[2].toString();\n var m2 = realDigits[3].toString();\n var y1 = realDigits[4].toString();\n var y2 = realDigits[5].toString();\n var i1 = realDigits[6].toString();\n var i2 = realDigits[7].toString();\n var i3 = realDigits[8].toString();\n // var k1 = realDigits[9];\n // var k2 = realDigits[10];\n \n var date = d1+d2+m1+m2;\n\n var y = y1+ y2;\n var i = i1 + i2 + i3;\n var num = parseInt(i);\n \n\n if (num < 500) {\n date = date + \"19\" + y;\n } else if (num >= 500) {\n if (parseInt(y) >= 0 && parseInt(y) <= 39 ) {\n date = date + \"20\" + y;\n } else if (num >= 900 && num <= 999) {\n date = date + \"19\" + y;\n } else if (num >= 500 && num <= 750) {\n date = date + \"18\" + y;\n }\n }\n // var k1Test = 11 - \n // ((3 * d1 + 7 * d2 + 6 * m1 + 1 * m2 + \n // 8 * y1 + 9 * y2 + 4 * i1 + 5 * i2 + 2 * i3) % 11);\n\n // var k2Test = 11 - \n // ((5 * d1 + 4 * d2 + 3 * m1 + 2 * m2 + 7 * \n // y1 + 6 * y2 + 5 * i1 + 4 * i2 + 3 * i3 + 2 * k1) % 11);\n\n // if (k1Test !== k1 || k2Test !== k2 ) {\n // toastr.warning(\"Personnummer er feil!\");\n // }\n var birthDate = moment(date, \"DDMMYYYY\");\n model.customer.person.birthDate = birthDate.toDate();\n\n if (model.customer.person.gender === undefined) {\n var isWomen = parseInt(i3) % 2 === 0;\n model.customer.person.gender = isWomen ? 1 : 0;\n }\n }\n };\n model.changeBirthDate = function (date) {\n var havePNumer =\n model.customer.pNumber &&\n model.customer.pNumber.length >= 6;\n\n var uniqPart = havePNumer\n ? model.customer.pNumber.substr(6, 5)\n : \"\"; // 061170\n\n var datePart = moment(date).format(\"DDMMYY\");\n model.customer.pNumber = datePart + \"\" + uniqPart;\n };\n\n model.addprojcust = function () {\n addProjCustModal().result.then(function (m) {\n if (m) {\n customerApi\n .createProjCust({\n projTable: m.project.id,\n custTable: model.customer.id,\n noteText: m.noteText\n })\n .then(function () {\n $state.reload();\n });\n }\n });\n };\n\n let saveToDb = () => {\n customerApi.updateCustomer(model.customer).then(function () {\n toastr.info(\"Lagret\");\n $state.reload();\n });\n };\n\n model.pNumValid = () => {\n let pnum1 = model.customer && model.customer.pNumber;\n let pnum2 = model.customer && model.customer.pNumber2;\n\n pnum1 = pnum1 ? pnum1.replace(/\\*/g, \"0\") : pnum1;\n pnum2 = pnum2 ? pnum2.replace(/\\*/g, \"0\") : pnum2;\n\n let pNumLength = pnum1 && pnum1.length;\n let pNum2Length = pnum2 && pnum2.length;\n\n let pNumberValid =\n !model.customer.pNumber ||\n ((pNumLength === 0 ||\n pNumLength === 6 ||\n pNumLength === 11) &&\n !isNaN(pnum1));\n let pNumber2Valid =\n !model.customer.pNumber2 ||\n ((pNum2Length === 0 ||\n pNum2Length === 6 ||\n pNum2Length === 11) &&\n !isNaN(pnum2));\n\n return {\n pNumberInvalid: !pNumberValid,\n pNumber2Invalid: !pNumber2Valid\n };\n };\n\n model.update = function () {\n let validation = model.pNumValid();\n\n if (validation.pNumberInvalid || validation.pNumber2Invalid) {\n $confirm({\n text:\n \"Personnummer er feil format, vil du fortsatt lagre ?\"\n }).then(saveToDb);\n } else {\n saveToDb();\n }\n };\n\n model.addRegline = function (pc, event) {\n event.preventDefault();\n event.stopPropagation();\n\n var stateParams = {\n projectId: pc.projTable,\n houseId: pc.projSectionProjPhase,\n sectionId: pc.projSectionId\n };\n\n $state.go(\"main.registrations.newreg\", stateParams);\n };\n\n model.addNote = function (pc, event) {\n event.preventDefault();\n event.stopPropagation();\n noteApi\n .noteModal({\n note: {\n probability: pc.probability,\n rating: true\n },\n projCustomers: [\n {\n id: pc.id,\n name: pc.projectName\n }\n ]\n })\n .result.then(function (note) {\n if (note.note) {\n var pc = find(model.customer.projCustomers, {\n id: note.note.projCustomerId\n });\n if (pc) {\n pc.probability = note.note.probability;\n pc.crmStatus.stars = getStarRange(\n pc.probability\n );\n if (pc.crmStatus && pc.crmStatus.buttons) {\n pc.crmStatus.buttons.rate = false;\n }\n }\n\n noteApi.addNote(note.note).then(function () {\n toastr.info(\"Notat lagt til\");\n });\n }\n });\n };\n\n model.changeRating = function (rating, id) {\n customerApi.setCustomerRating({\n id: id,\n probability: rating\n });\n };\n\n model.followUp = function (notFollowUp, pc, event) {\n event.preventDefault();\n event.stopPropagation();\n\n customerApi\n .setCustomerFollowUp({\n id: pc.id,\n notFollowUp: notFollowUp\n })\n .then(() => {\n pc.notFollowUp = notFollowUp;\n pc.projCustStatus = notFollowUp ? 8 : 0;\n model.updateCrm();\n });\n };\n\n model.delete = function () {\n $confirm({\n text: \"Vil du slette denne kunden ?\"\n }).then(function () {\n customerApi.deleteCustomer(model.customer).then(function () {\n toastr.warning(\"Slettet\");\n $state.go(\"main.customers\");\n });\n });\n };\n\n model.sendSms = function () {\n var recipients = [\n {\n id: model.customer.id,\n number: model.customer.person.mobile,\n email: model.customer.person.email,\n customerId: model.customer.id,\n fullName: model.customer.person.fullName,\n acceptEmail: model.customer.person.acceptEmail,\n acceptNewsLetter:\n model.customer.person.acceptNewsLetter,\n acceptSms: model.customer.person.acceptSms\n }\n ];\n\n customerApi.openSmsModal(recipients, true);\n };\n\n model.arrangeViewing = function (projCust, event) {\n event.preventDefault();\n event.stopPropagation();\n sectionApi\n .arrangeViewingModal(projCust)\n .result.then(function (viewing) {\n if (viewing) {\n taskApi.saveTask(viewing).then(\n function () {\n toastr.info(\"Visning opprettet\");\n },\n function () {\n toastr.error(\n \"Noe gikk galt med opprettelsen av visningen\"\n );\n }\n );\n }\n });\n };\n model.reserveSection = function (projCust, event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (projCust.projCustStatus === 7) {\n projCust.projSectionId = projCust.projSectionId || projCust.purchasingSection;\n sectionApi.reserveSection(projCust).then(function () {\n $state.reload();\n });\n }\n else {\n sectionApi\n .reserveSectionModal(projCust)\n .result.then(function (section) {\n if (section) {\n projCust.projSectionId = section.id;\n sectionApi\n .reserveSection(projCust)\n .then(function () {\n $state.reload();\n });\n }\n });\n }\n };\n\n model.convert = function (projCust, event) {\n event.preventDefault();\n event.stopPropagation();\n projectApi\n .getSection(projCust.projTable, projCust.projSectionId)\n .then(function (sres) {\n var sectionToBuy = sres.data.section;\n\n sectionToBuy.reservationStatuses = sres.data.reservationStatuses;\n if (sres.data.phaseReservations.length > 0) {\n sectionToBuy.reservations =\n sectionToBuy.reservations.concat(sres.data.phaseReservations);\n }\n forEach(sectionToBuy.reservations, function (reservation) {\n if (reservation.type == 0) {\n reservation.id = 0;\n reservation.isReadOnly = true;\n }\n reservation.projPhase = null;\n reservation.projSection = sectionToBuy.id;\n });\n\n sectionToBuy.projCustomerProjSectionId =\n sectionToBuy.id;\n sectionApi\n .buySectionModal(sectionToBuy)\n .then(function (res) {\n if (res.error) {\n toastr.error(res.error);\n return;\n }\n sectionApi.buySection(res).then(function () {\n $state.reload();\n });\n });\n });\n };\n\n model.acceptOffer = function (projCust, event) {\n event.preventDefault();\n event.stopPropagation();\n\n projectApi.getSection(projCust.projTable, projCust.projSectionId)\n .then(function (res) {\n var acceptionText = `Hei!\\n\\nDitt digitale kjøpetilbud på prosjekt ${projCust.projectName}, seksjon ${projCust.projSectionSectionNum} er blitt akseptert. Ansvarlig selger vil ta kontakt med deg for å avtale tid for et kontraktsmøte. Du hører fra oss innen kort tid. Gratulerer med ny bolig!\\n\\nMed vennlig hilsen\\nTrysilhus`;\n customerApi.acceptOffer(acceptionText).result.then(function (dialogRes) {\n if (dialogRes != \"cancelled\") {\n res.data.section.purchaseOfferAcceptionText = dialogRes;\n sectionApi.acceptSectionOffer(res.data.section).then(function () {\n projCust.crmStatus.text = `Digitalt kjøpstilbud akseptert, seksjon ${projCust.projSectionSectionNum}`;\n projCust.crmStatus.buttons.accept = false;\n projCust.crmStatus.buttons.reject = true;\n projCust.crmStatus.buttons.buy = true;\n projCust.crmStatus.buttons.download = true;\n projCust.projCustStatus = 5;\n projCust.projSectionReservedStatus = 4;\n });\n }\n });\n });\n };\n\n model.rejectOffer = function (projCust, event) {\n event.preventDefault();\n event.stopPropagation();\n\n var rejectionText = \"\";\n\n if (projCust.projCustStatus == 4)\n rejectionText = `Hei!\\n\\nJeg viser til vår dialog vedrørende digitalt kjøpetilbud på prosjekt ${projCust.projectName}, seksjon ${projCust.projSectionSectionNum}.\\n\\nDette er en bekreftelse på at kjøpetilbudet er avvist fordi . Ta kontakt hvis du har spørsmål.\\n\\nMed vennlig hilsen\\n${projCust.project.salesResponsibleUserInfoContactPersonPersonFullName}\\nTrysilhus`;\n else rejectionText = `Hei!\\n\\nVi bekrefter at inngått avtale på prosjekt ${projCust.projectName}, seksjon ${projCust.projSectionSectionNum} er annullert som avtalt.\\nTa kontakt hvis du har spørsmål\\n\\nMed vennlig hilsen\\n${projCust.project.salesResponsibleUserInfoContactPersonPersonFullName}\\nTrysilhus`;\n\n customerApi.rejectOffer(rejectionText).result.then(function (dialogRes) {\n if (dialogRes != \"cancelled\") {\n projectApi.getSection(projCust.projTable, projCust.projSectionId)\n .then(function (res) {\n res.data.section.purchaseOfferRejectionText = dialogRes;\n sectionApi.rejectSectionOffer(res.data.section).then(function () {\n projCust.crmStatus.text = `Digitalt kjøpstilbud avvist, seksjon ${projCust.projSectionSectionNum}`;\n projCust.crmStatus.buttons.accept = false;\n projCust.crmStatus.buttons.reject = false;\n projCust.crmStatus.buttons.buy = false;\n projCust.crmStatus.buttons.download = false;\n projCust.projCustStatus = 6;\n projCust.projSectionReservedStatus = 0;\n });\n });\n }\n });\n };\n\n model.downloadOffer = function (projCust, event) {\n event.preventDefault();\n event.stopPropagation();\n\n sectionApi.downloadSectionOffer(projCust.projSectionId, projCust.id)\n .then(saveFile);\n };\n\n model.deleteProjCust = function (projCust, event) {\n event.preventDefault();\n event.stopPropagation();\n\n $confirm({\n text: \"Sikker på at du vil slette interessenten?\"\n }).then(function () {\n customerApi.deleteProjCust(projCust).then(function () {\n $state.go(\n \"main.customers.customer.index\",\n {\n id: projCust.customerId\n },\n {\n reload: true\n }\n );\n });\n });\n };\n\n model.removeReservation = function (projCust, event) {\n event.preventDefault();\n event.stopPropagation();\n\n $confirm({\n text: \"Er du sikker på at du vil fjerne kjøpstilbudet?\"\n }).then(function () {\n projCust.projSectionId = -1;\n sectionApi.reserveSection(projCust).then(function () {\n toastr.success(\"Reservasjon fjernet\");\n $state.reload();\n });\n });\n };\n\n model.navigate = pc => {\n if (pc.crmStatus && pc.crmStatus.linkTo) {\n switch (pc.crmStatus.linkTo) {\n case \"section\":\n $state.go(\n \"main.projects.project.house.sections.section.index\",\n {\n id: pc.projTable,\n ppId: pc.projSectionProjPhase,\n sectionId: pc.projSectionId || pc.purchasingSection\n }\n );\n break;\n }\n return;\n }\n $state.go(\"main.projects.project.index\", {\n id: pc.projTable\n });\n };\n\n model.openProfileImg = function () {\n contactApi\n .profileModal({\n firstName: model.customer.person.firstName,\n lastName: model.customer.person.lastName,\n imageUrl: (model.apiAddress + \"/person/\" + model.customer.person.id + \"/image/\" + model.tstamp)\n })\n .result.then(function () {\n });\n };\n model.tstamp = new Date().getTime();\n }\n ]\n};\n","export default \"
\\n
\\n

Kunde

\\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n\\n\\n
\\n

Kontaktinfo

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\";","export default \"
\\n

Opprett interessent

\\n
\\n
\\n
\\n \\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\";","import markup from \"./markup.html\";\nimport {\n find,\n filter\n} from \"lodash\";\n\nexport default {\n bindings: {\n categories: \"<\",\n selected: \"=\",\n required: \"<\",\n disable: \"<\"\n },\n template: markup,\n controllerAs: \"model\",\n controller: [\n function () {\n\n var model = this;\n var allSubCategories = [];\n\n model.$onInit = function () {\n\n\n model.mainCategories = filter(model.categories, c => {\n return c.parentId === undefined;\n });\n\n\n model.subCategories = filter(model.categories, c => {\n return c.parentId !== undefined;\n });\n\n allSubCategories = model.subCategories;\n\n if (model.selected) {\n var item = find(allSubCategories, {\n id: model.selected\n });\n model.subCategorySelected(item);\n }\n };\n\n model.$doCheck = function () {\n if (model.selected) {\n var item = find(allSubCategories, {\n id: model.selected\n });\n model.subCategorySelected(item);\n }\n\n };\n\n model.mainCategorySelected = () => {\n\n\n model.subCategories = filter(allSubCategories, sc => {\n if (model.mainCategory) {\n return sc.parentId == model.mainCategory;\n } else {\n return true;\n }\n\n });\n\n model.selected = undefined;\n };\n\n model.subCategorySelected = item => {\n\n if (item) {\n model.mainCategory = item.parentId;\n }\n };\n }\n ]\n};","export default \"
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n\\n
\";","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"activity\",\n \"options\",\n function ($uibModalInstance, $log, activity, options) {\n var modalvm = this;\n\n modalvm.options = options;\n modalvm.activity = activity;\n modalvm.disableComplete = activity.complete === true;\n\n if (options.date && !modalvm.activity.completedDate) {\n modalvm.activity.complete = true;\n modalvm.activity.completedDate = new Date();\n }\n\n modalvm.cancel = function () {\n\n $uibModalInstance.close();\n };\n modalvm.update = function () {\n $uibModalInstance.close(activity);\n };\n }\n];","import { forEach } from \"lodash\";\nimport markup from \"./markup.html\";\nimport activityLogHtml from \"./activityLog.html\";\nimport activityLogCtrl from \"./activityLog.js\";\n\nimport { map, remove, maxBy, isNumber } from \"lodash\";\n\nexport default {\n bindings: {\n list: \"<\",\n editorOptions: \"<\",\n allActivitiesComplete: \"=\",\n scheduleCompleted: \"<\",\n allTextsExpanded: \"=\"\n },\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"activityApi\",\n \"$log\",\n \"$uibModal\",\n \"aberrationApi\",\n \"haveRoleFilter\",\n \"$stateParams\",\n \"$state\",\n \"$confirm\",\n function (\n activityApi,\n $log,\n $uibModal,\n aberrationApi,\n haveRole,\n $stateParams,\n $state,\n $confirm\n ) {\n let modalActivityLog = (activity, options) => {\n var modalInstance = $uibModal.open({\n template: activityLogHtml,\n controllerAs: \"modalvm\",\n controller: activityLogCtrl,\n resolve: {\n activity: activity,\n options: options\n }\n });\n\n return modalInstance;\n };\n\n var model = this;\n\n model.$onInit = function () {\n model.editorOptions = model.editorOptions || {};\n\n model.projectId = model.editorOptions.hideBlueprints\n ? null\n : $stateParams.id;\n model.houseId = $stateParams.ppId;\n model.allowEdit =\n haveRole([\"PRL\", \"PL\", \"PU\"], \"any\") &&\n !model.scheduleCompleted;\n model.allowAdd =\n haveRole([\"PRL\", \"PL\", \"PU\"], \"any\") &&\n !model.scheduleCompleted;\n model.allActivitiesComplete = model.list.every(\n (a) => a.complete === true\n );\n forEach(model.list, function (activity) {\n if (activity.text) activity.open = true;\n });\n };\n\n model.$doCheck = function () {};\n\n const updateList = (dbActivity) => {\n model.list = map(model.list, (item) =>\n item.id === dbActivity.id ? dbActivity : item\n );\n\n model.allActivitiesComplete = model.list.every(\n (a) => a.complete === true\n );\n\n model.allowAdd =\n haveRole([\"PRL\", \"PL\"], \"any\") && !model.scheduleCompleted;\n model.allowEdit =\n haveRole([\"PRL\", \"PL\"], \"any\") && !model.scheduleCompleted;\n };\n\n let modalAberration = function (activity) {\n aberrationApi\n .aberrationModal({\n attachments: true\n })\n .result.then(function (aberration) {\n aberration.activityId = activity.id;\n aberration.activityLogId = activity.activityLogId;\n aberration.aberrationTypeId = 0;\n aberration.projTable = 0;\n\n activityApi\n .scheduleActivityAberration(aberration)\n .then((response) => {\n updateList(response.data);\n });\n });\n };\n model.updateActivityText = (html, activity) => {\n activity.text = html;\n };\n\n let updateActivity = (activity) => {\n activityApi.scheduleActivityUpdate(activity).then(\n (response) => {\n updateList(response.data);\n },\n (error) => {\n $log.info(error);\n activity.complete = false;\n updateList(activity);\n }\n );\n };\n model.createAberration = (activity) => {\n modalAberration(activity);\n };\n model.activityOk = (activity, openModal) => {\n let copy = {\n ...activity\n };\n\n if (openModal) {\n modalActivityLog(activity, openModal).result.then(\n (modalactivity) => {\n if (modalactivity) {\n updateActivity(modalactivity);\n } else {\n updateList(copy);\n }\n }\n );\n } else {\n activity.complete = true;\n updateActivity(activity);\n }\n };\n\n model.activityDuplicate = (activity) => {\n var duplicate = {\n scheduleId: $stateParams.scheduleId,\n planEventId: $stateParams.eventId,\n complete: false,\n text: activity.text,\n name: `${activity.name} - KOPI`\n };\n\n var indexing = [];\n var index = 1;\n model.list.forEach((a) => {\n indexing.push({ key: a.id, value: index });\n if (a.id === activity.id) {\n index++;\n duplicate.index = index;\n }\n index++;\n });\n\n activityApi.addCopy(duplicate, indexing).then(() => {\n $state.reload();\n });\n };\n\n model.activityAdd = (activity) => {\n var maxIndex = maxBy(model.list, \"index\");\n if (maxIndex && maxIndex.index && isNumber(maxIndex.index)) {\n activity.index = maxIndex.index + 1;\n }\n\n activity.scheduleId = $stateParams.scheduleId;\n activity.planEventId = $stateParams.eventId;\n activity.complete = false;\n\n model.allowAdd = false;\n model.list.push(activity);\n\n activity.inEditMode = true;\n };\n\n model.activityDelete = (activity) => {\n $confirm({\n text: \"Vil du slette denne aktiviteten ?\"\n }).then(() => {\n activityApi.scheduleActivityDelete(activity).then(() => {\n model.list = remove(model.list, (a) => {\n return a.id !== activity.id;\n });\n });\n });\n };\n\n model.activityUpdate = (activity) => {\n activityApi.upsertActivity(activity).then((response) => {\n if (!activity.id) activity.id = response.data.id;\n updateList(response.data);\n activity.inEditMode = !activity.inEditMode;\n });\n };\n\n model.goToAberration = (activity) => {\n const aberration = activity.aberration;\n\n $state.go(\"main.aberrations.aberration.index\", {\n category: aberration.category,\n aberrationId: aberration.id\n });\n };\n\n model.toggleText = (activity) => {\n activity.open = !activity.open;\n model.allTextsExpanded =\n model.list.filter((activity) => activity.text).length ==\n model.list.filter(\n (activity) => activity.text && activity.open == true\n ).length;\n };\n }\n ]\n};\n","export default \"\\n\";","export default \"
\\n

\\n
\\n
\\n
\\n \\n \\n
\\n\\n \\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\";","export default [\n \"$scope\",\n \"$uibModalInstance\",\n \"$stateParams\",\n function($scope, $uibModalInstance, $stateParams) {\n var modalvm = this;\n modalvm.selected = [];\n modalvm.projectId = Number($stateParams.id);\n modalvm.select = selectedItems => {\n modalvm.selected = selectedItems;\n };\n\n $scope.insert = function() {\n $uibModalInstance.close(modalvm.selected);\n };\n $scope.close = function() {\n $uibModalInstance.close();\n };\n }\n];\n","import { groupBy, initial, last, uniqBy } from \"lodash\";\nimport uuidv4 from \"uuid/v4\";\n\nfunction dummyHtml(html) {\n let dummyHtml = document.createElement(\"html\");\n dummyHtml.innerHTML = `titleTest${html}`;\n return dummyHtml;\n}\nfunction readFile(file) {\n return new Promise(resolve => {\n var fr = new FileReader();\n fr.onload = () => {\n if (fr.result !== \"\") {\n var blob = {\n base64: fr.result,\n fileName: file.name,\n contentType: file.type,\n status: 2\n };\n }\n\n resolve(blob);\n };\n fr.readAsDataURL(file);\n });\n}\n\nfunction getAnchorTagsWithPdfRefs(html) {\n const anchorTags = html.getElementsByTagName(\"a\");\n return [...anchorTags].filter(a => {\n const pdfref = a.getAttribute(\"pdfref\");\n return pdfref != null && pdfref.startsWith(\"<\") && pdfref.endsWith(\">\");\n });\n}\n\nfunction getSpanTagsWithPdfRefs(html) {\n const spans = html.getElementsByTagName(\"span\");\n return [...spans].filter(s => {\n const pdfref = s;\n return pdfref.innerText &&\n pdfref.innerText.trim().startsWith(\"<\") &&\n pdfref.innerText.trim().endsWith(\">\");\n });\n}\n\nfunction getParagraphTagsWithPdfRefs(html) {\n const paragraphs = html.getElementsByTagName(\"p\");\n return [...paragraphs].filter(s => {\n const pdfref = s;\n return pdfref.innerText &&\n pdfref.innerText.trim().startsWith(\"<\") &&\n pdfref.innerText.trim().endsWith(\">\");\n });\n}\n\nfunction getPdfRefs(html) {\n const dHtml = dummyHtml(html);\n\n var pdfRefs = getAnchorTagsWithPdfRefs(dHtml).map(a => {\n return {\n linkText: a.innerText,\n pdfRef: a.getAttribute(\"pdfref\"),\n groupId: a.dataset.batchid\n };\n });\n\n var pdfRefsInSpans = getSpanTagsWithPdfRefs(dHtml).map(s => {\n return {\n linkText: s.innerText.trim(),\n pdfRef: s.innerText.trim(),\n groupId: uuidv4()\n };\n });\n\n var pdfRefsInParagraphs = getParagraphTagsWithPdfRefs(dHtml).map(s => {\n return {\n linkText: s.innerText.trim(),\n pdfRef: s.innerText.trim(),\n groupId: uuidv4()\n };\n });\n\n var pdfRefsFirst = pdfRefsInSpans.concat(pdfRefsInParagraphs);\n pdfRefsFirst = uniqBy(pdfRefsFirst, \"pdfRef\");\n\n pdfRefs = pdfRefs.concat(pdfRefsFirst);\n console.info(\"pdfrefs\", pdfRefs);\n\n let refList = [];\n for (let [key, value] of Object.entries(groupBy(pdfRefs, \"groupId\"))) {\n refList.push({\n groupId: key,\n linkText: value.map(r => r.linkText).join(\",\"),\n pdfRef: value[0].pdfRef\n });\n }\n\n return refList;\n}\n\nfunction replaceRefs(html, linksToReplace, newHtml) {\n const dHtml = dummyHtml(html);\n const tagsToReplace = getAnchorTagsWithPdfRefs(dHtml);\n\n linksToReplace.forEach(link => {\n const group = tagsToReplace.filter(\n t => t.dataset.batchid === link.groupId\n );\n const toRemove = initial(group);\n toRemove.forEach(r => {\n if (\n r.nextSibling &&\n r.nextSibling.nodeType === 3 &&\n r.nextSibling.textContent == \",\"\n ) {\n r.nextSibling.textContent = \"\";\n }\n r.outerHTML = \"\";\n });\n\n const toReplace = last(group);\n const replacement = newHtml.find(\n x => x.oldGroupId === toReplace.dataset.batchid\n );\n toReplace.outerHTML = replacement.html;\n });\n\n return dHtml.querySelector(\"body\").innerHTML;\n}\n\nfunction handlePdfRefLink(link, text, attrs) {\n if (link.startsWith(\"<\") && link.endsWith(\">\")) {\n attrs.pdfref = link;\n attrs[\"data-batchid\"] = uuidv4();\n }\n}\n\nexport { readFile, getPdfRefs, replaceRefs, handlePdfRefLink };\n","import { getPdfRefs } from \"./helpers\";\n\nexport default [\n \"$scope\",\n \"$uibModalInstance\",\n \"htmlText\",\n function($scope, $uibModalInstance, htmlText) {\n let modalvm = this;\n modalvm.links = getPdfRefs(htmlText);\n\n modalvm.close = () => {\n $uibModalInstance.close();\n };\n modalvm.replace = () => {\n $uibModalInstance.close(modalvm.links);\n };\n }\n];\n","import albumDocuments from \"album/shared/albumDocuments/component.js\";\nimport albumPdfRefs from \"album/shared/albumPdfRefs/component.js\";\n\nimport albumRegistrations from \"album/shared/albumRegistrations/component.js\";\nimport albumDatePicker from \"album/common/albumDatePicker/component.js\";\n\nimport albumEditColumn from \"album/common/albumEditColumn/component.js\";\nimport albumTextPopup from \"album/common/albumTextPopup/component.js\";\nimport albumHouseBody from \"album/common/albumHouseBody/component.js\";\nimport albumSectionTable from \"album/common/albumSectionTable/component.js\";\nimport albumContactPersonInput from \"album/common/albumContactPersonInput/component.js\";\nimport albumOrderTable from \"album/common/albumOrderTable/component.js\";\nimport albumCalculatePrice from \"album/common/albumCalculatePrice/component.js\";\nimport albumContactWizard from \"album/common/albumContactWizard/component.js\";\nimport albumAberration from \"album/shared/albumAberration/component.js\";\nimport albumFileDownload from \"album/shared/albumFileDownload/component.js\";\nimport albumBlobs from \"album/shared/albumBlobs/component.js\";\nimport albumComments from \"album/shared/albumComments/component.js\";\nimport albumDocIcon from \"album/shared/albumDocIcon/component.js\";\n\nimport albumPdfViewer from \"album/shared/albumPdfViewer/component.js\";\nimport albumFinancesTable from \"album/shared/albumFinancesTable/component.js\";\nimport albumCheckBox from \"album/shared/albumCheckBox/component.js\";\nimport albumPostCode from \"album/shared/albumPostCode/component.js\";\nimport albumRating from \"album/common/albumRating/component.js\";\nimport albumReserveSection from \"album/shared/albumReserveSection/component.js\";\nimport albumPhone from \"album/shared/albumPhone/component.js\";\nimport albumChecklists from \"album/shared/albumChecklists/component.js\";\nimport albumChecklistItem from \"album/shared/albumChecklistItem/component.js\";\nimport albumChecklistItemEdit from \"album/shared/albumChecklistItemEdit/component.js\";\nimport albumChecklistRegLine from \"album/shared/albumChecklistRegLine/component.js\";\nimport albumAddCustomer from \"album/shared/albumAddCustomer/component.js\";\nimport albumProcessEdit from \"album/shared/albumProcessEdit/component.js\";\nimport albumInsuranceRow from \"album/shared/albumInsuranceRow/component.js\";\n\nimport albumBreadCrumbs from \"album/common/albumBreadCrumbs/component.js\";\nimport albumCustomerPage from \"album/common/albumCustomerPage/component.js\";\nimport albumCategoryPicker from \"album/shared/albumCategoryPicker/component.js\";\nimport albumActivityList from \"album/shared/albumActivityList/component.js\";\nimport albumEditor from \"album/shared/albumEditor/component.js\";\nimport albumFileViewer from \"album/shared/albumFileViewer/component.js\";\nimport albumContactPersonPicker from \"album/shared/albumContactPersonPicker/component.js\";\nimport albumContactPicker from \"album/shared/albumContactPicker/component.js\";\n\nimport albumCrudStatus from \"album/shared/albumCrudStatus/component.js\";\n\nexport default [\n {\n name: \"albumDocuments\",\n component: albumDocuments\n },\n {\n name: \"albumPdfRefs\",\n component: albumPdfRefs\n },\n\n {\n name: \"albumRegistrations\",\n component: albumRegistrations\n },\n\n {\n name: \"albumDatePicker\",\n component: albumDatePicker\n },\n {\n name: \"albumEditColumn\",\n component: albumEditColumn\n },\n {\n name: \"albumTextPopup\",\n component: albumTextPopup\n },\n {\n name: \"albumHouseBody\",\n component: albumHouseBody\n },\n {\n name: \"albumSectionTable\",\n component: albumSectionTable\n },\n {\n name: \"albumContactPersonInput\",\n component: albumContactPersonInput\n },\n {\n name: \"albumOrderTable\",\n component: albumOrderTable\n },\n {\n name: \"albumCalculatePrice\",\n component: albumCalculatePrice\n },\n {\n name: \"albumContactWizard\",\n component: albumContactWizard\n },\n {\n name: \"albumAberration\",\n component: albumAberration\n },\n {\n name: \"albumFileDownload\",\n component: albumFileDownload\n },\n\n {\n name: \"albumBlobs\",\n component: albumBlobs\n },\n {\n name: \"albumComments\",\n component: albumComments\n },\n {\n name: \"albumDocIcon\",\n component: albumDocIcon\n },\n\n {\n name: \"albumPdfViewer\",\n component: albumPdfViewer\n },\n {\n name: \"albumFinancesTable\",\n component: albumFinancesTable\n },\n {\n name: \"albumCheckBox\",\n component: albumCheckBox\n },\n {\n name: \"albumPostCode\",\n component: albumPostCode\n },\n {\n name: \"albumRating\",\n component: albumRating\n },\n {\n name: \"albumReserveSection\",\n component: albumReserveSection\n },\n {\n name: \"albumPhone\",\n component: albumPhone\n },\n {\n name: \"albumChecklists\",\n component: albumChecklists\n },\n {\n name: \"albumChecklistItem\",\n component: albumChecklistItem\n },\n\n {\n name: \"albumChecklistItemEdit\",\n component: albumChecklistItemEdit\n },\n\n {\n name: \"albumChecklistRegLine\",\n component: albumChecklistRegLine\n },\n\n {\n name: \"albumAddCustomer\",\n component: albumAddCustomer\n },\n {\n name: \"albumProcessEdit\",\n component: albumProcessEdit\n },\n {\n name: \"albumInsuranceRow\",\n component: albumInsuranceRow\n },\n {\n name: \"albumBreadCrumbs\",\n component: albumBreadCrumbs\n },\n {\n name: \"albumCustomerPage\",\n component: albumCustomerPage\n },\n {\n name: \"albumCategoryPicker\",\n component: albumCategoryPicker\n },\n {\n name: \"albumActivityList\",\n component: albumActivityList\n },\n {\n name: \"albumEditor\",\n component: albumEditor\n },\n {\n name: \"albumFileViewer\",\n component: albumFileViewer\n },\n {\n name: \"albumContactPersonPicker\",\n component: albumContactPersonPicker\n },\n {\n name: \"albumContactPicker\",\n component: albumContactPicker\n },\n {\n name: \"crudStatus\",\n component: albumCrudStatus\n }\n];\n","import markup from \"./markup.html\";\nimport FroalaEditor from \"froala-editor\";\nimport bluePrintHtml from \"./blueprints.html\";\nimport bluePrintCtrl from \"./blueprints.js\";\nimport replaceRefsHtml from \"./replaceRefs.html\";\nimport replaceRefsCtrl from \"./replaceRefs\";\nimport \"froala-editor/js/plugins/lists.min.js\";\nimport \"froala-editor/js/plugins/link.min.js\";\nimport \"froala-editor/js/plugins/colors.min.js\";\nimport \"froala-editor/js/plugins/image.min.js\";\nimport \"froala-editor/js/plugins/font_size.min.js\";\nimport \"froala-editor/js/plugins/font_family.min.js\";\nimport \"froala-editor/css/froala_editor.min.css\";\nimport \"froala-editor/css/plugins/colors.min.css\";\nimport \"froala-editor/css/plugins/image.min.css\";\n\nimport { forEach } from \"lodash\";\nimport { readFile, getPdfRefs, replaceRefs, handlePdfRefLink } from \"./helpers\";\n\nexport default {\n bindings: {\n text: \"<\",\n projectId: \"<\",\n houseId: \"<\",\n updateText: \"&\"\n },\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"attachmentApi\",\n \"$log\",\n \"$uibModal\",\n \"documentApi\",\n \"albumConfig\",\n\n function (attachmentApi, $log, $uibModal, documentApi, albumConfig) {\n const showHideRefButton = html => {\n const showButton = getPdfRefs(html).length > 0;\n const ele = document.querySelector(\n \"[data-cmd='bluePrintRefsWin']\"\n );\n if (ele) {\n ele.hidden = !showButton;\n }\n };\n\n const initEditor = () => {\n FroalaEditor.DefineIcon(\"previewIcon\", {\n SVG_KEY: \"search\"\n });\n FroalaEditor.DefineIcon(\"bluePrintIcon\", {\n FA5NAME: \"drafting-compass\",\n template: \"font_awesome_5\"\n });\n\n FroalaEditor.DefineIcon(\"bluePrintRefsIcon\", {\n FA5NAME: \"clone\",\n template: \"font_awesome_5\"\n });\n\n FroalaEditor.RegisterCommand(\"bluePrintRefsWin\", {\n title: \"Håndter tegningsreferanser\",\n icon: \"bluePrintRefsIcon\",\n callback: function () {\n const editor = this;\n const html = editor.html.get();\n\n $uibModal\n .open({\n template: replaceRefsHtml,\n controllerAs: \"modalvm\",\n controller: replaceRefsCtrl,\n resolve: {\n htmlText: () => html\n },\n size: \"lg\"\n })\n .result.then(linksToReplace => {\n if (linksToReplace) {\n documentApi\n .replacePdfRefs(\n linksToReplace,\n model.houseId\n )\n .then(response => {\n editor.html.set(\n replaceRefs(\n html,\n linksToReplace,\n response.data\n )\n );\n });\n }\n });\n }\n });\n\n FroalaEditor.RegisterCommand(\"preview\", {\n title: \"Forhåndsvis\",\n icon: \"previewIcon\",\n focus: false,\n undo: true,\n refreshAfterCallback: true,\n\n callback: function () {\n let htmlContent = this.html.get();\n\n $uibModal.open({\n template:\n \" \",\n controller: [\n \"$scope\",\n \"$uibModalInstance\",\n function ($scope, $uibModalInstance) {\n $scope.content = htmlContent;\n $scope.close = function () {\n $uibModalInstance.close();\n };\n }\n ],\n\n size: \"lg\"\n });\n }\n });\n\n FroalaEditor.RegisterCommand(\"insertBlueprints\", {\n title: \"Sett inn tegninger\",\n focus: false,\n icon: \"bluePrintIcon\",\n undo: true,\n\n refreshAfterCallback: true,\n\n callback: function () {\n var editor = this;\n editor.selection.save();\n\n $uibModal\n .open({\n template: bluePrintHtml,\n controller: bluePrintCtrl,\n controllerAs: \"modalvm\",\n size: \"lg\"\n })\n .result.then(function (blueprints) {\n if (blueprints) {\n var links = [];\n\n forEach(blueprints, function (bp) {\n links.push(\n `${bp.title}`\n );\n });\n editor.selection.restore();\n editor.html.insert(links.join(\", \"), true);\n }\n });\n }\n });\n\n let toolbarLast = [\"preview\"];\n if (model.projectId) {\n toolbarLast.push(\"insertBlueprints\");\n }\n\n toolbarLast.push(\"bluePrintRefsWin\", \"undo\", \"redo\");\n //toolbarLast.push(\"undo\", \"redo\");\n\n var bearerToken = localStorage.getItem(\"msal.idtoken\");\n\n let options = {\n imageUploadURL: `${albumConfig.apiAddress}/blob/image/upload`,\n key:\n \"lSA3D-17C1A1C1F1F2H1rD-17bhazxA-7cdB3wugC3E3G3C2B7A4D3F4D2D2==\",\n requestHeaders: {\n Authorization: `Bearer ${bearerToken}`\n },\n\n toolbarButtons: [\n [\"underline\", \"strikeThrough\", \"bold\"],\n [\n \"fontFamily\",\n \"fontSize\",\n \"textColor\",\n \"backgroundColor\"\n ],\n [\"insertLink\", \"formatOL\", \"formatUL\", \"insertImage\"],\n toolbarLast\n ],\n heightMin: 100,\n heightMax: 300,\n htmlAllowedAttrs: [\n \"accept\",\n \"accept-charset\",\n \"accesskey\",\n \"action\",\n \"align\",\n \"allowfullscreen\",\n \"allowtransparency\",\n \"alt\",\n \"aria-.*\",\n \"async\",\n \"autocomplete\",\n \"autofocus\",\n \"autoplay\",\n \"autosave\",\n \"background\",\n \"bgcolor\",\n \"border\",\n \"charset\",\n \"cellpadding\",\n \"cellspacing\",\n \"checked\",\n \"cite\",\n \"class\",\n \"color\",\n \"cols\",\n \"colspan\",\n \"content\",\n \"contenteditable\",\n \"contextmenu\",\n \"controls\",\n \"coords\",\n \"data\",\n \"data-.*\",\n \"datetime\",\n \"default\",\n \"defer\",\n \"dir\",\n \"dirname\",\n \"disabled\",\n \"download\",\n \"draggable\",\n \"dropzone\",\n \"enctype\",\n \"for\",\n \"form\",\n \"formaction\",\n \"frameborder\",\n \"headers\",\n \"height\",\n \"hidden\",\n \"high\",\n \"href\",\n \"hreflang\",\n \"http-equiv\",\n \"icon\",\n \"id\",\n \"ismap\",\n \"itemprop\",\n \"keytype\",\n \"kind\",\n \"label\",\n \"lang\",\n \"language\",\n \"list\",\n \"loop\",\n \"low\",\n \"max\",\n \"maxlength\",\n \"media\",\n \"method\",\n \"min\",\n \"mozallowfullscreen\",\n \"multiple\",\n \"muted\",\n \"name\",\n \"novalidate\",\n \"open\",\n \"optimum\",\n \"pattern\",\n \"ping\",\n \"placeholder\",\n \"playsinline\",\n \"poster\",\n \"preload\",\n \"pubdate\",\n \"radiogroup\",\n \"readonly\",\n \"rel\",\n \"required\",\n \"reversed\",\n \"rows\",\n \"rowspan\",\n \"sandbox\",\n \"scope\",\n \"scoped\",\n \"scrolling\",\n \"seamless\",\n \"selected\",\n \"shape\",\n \"size\",\n \"sizes\",\n \"span\",\n \"src\",\n \"srcdoc\",\n \"srclang\",\n \"srcset\",\n \"start\",\n \"step\",\n \"summary\",\n \"spellcheck\",\n \"style\",\n \"tabindex\",\n \"target\",\n \"title\",\n \"type\",\n \"translate\",\n \"usemap\",\n \"value\",\n \"valign\",\n \"webkitallowfullscreen\",\n \"width\",\n \"wrap\",\n \"blobid\",\n \"ta-blob-link\",\n \"ibm-blob-link\",\n \"uuid\",\n \"pdfref\"\n ],\n\n events: {\n \"link.beforeInsert\": handlePdfRefLink,\n initialized: function () {\n var editor = this;\n editor.html.set(model.text);\n showHideRefButton(model.text);\n\n editor.events.on(\n \"drop\",\n function (dropEvent) {\n // Focus at the current posisiton.\n editor.markers.insertAtPoint(\n dropEvent.originalEvent\n );\n var $marker = editor.$el.find(\".fr-marker\");\n $marker.replaceWith(FroalaEditor.MARKERS);\n editor.selection.restore();\n\n // Save into undo stack the current position.\n if (!editor.undo.canDo())\n editor.undo.saveStep();\n\n let readFilesPromises = [];\n let uploadFilesPromises = [];\n forEach(\n dropEvent.originalEvent.dataTransfer\n .files,\n file => {\n readFilesPromises.push(\n readFile(file)\n );\n }\n );\n\n Promise.all(readFilesPromises).then(\n function (blobs) {\n forEach(blobs, blob => {\n uploadFilesPromises.push(\n attachmentApi.upload([blob])\n );\n });\n\n Promise.all(\n uploadFilesPromises\n ).then(uploads => {\n forEach(\n uploads,\n (upload, index) => {\n var blobUploaded =\n upload.data[0];\n let isLastFile =\n index ===\n uploads.length - 1;\n let append = !isLastFile\n ? \", \"\n : \"\";\n editor.html.insert(\n `${blobUploaded.fileName}${append}`\n );\n }\n );\n });\n }\n );\n\n // Save into undo stack the changes.\n editor.undo.saveStep();\n\n // Stop event propagation.\n dropEvent.preventDefault();\n dropEvent.stopPropagation();\n\n // Firefox show cursor.\n if (\n editor.core.hasFocus() &&\n editor.browser.mozilla\n ) {\n editor.events.disableBlur();\n setTimeout(function () {\n editor.$el.blur().focus();\n editor.events.enableBlur();\n }, 0);\n }\n\n return false;\n },\n true\n );\n },\n\n contentChanged: function () {\n var newHtml = this.html.get();\n\n showHideRefButton(newHtml);\n model.updateText({\n html: newHtml\n });\n }\n }\n };\n new FroalaEditor(\"#edit\", options);\n };\n\n var model = this;\n\n model.$onInit = function () {\n initEditor();\n };\n\n model.$doCheck = function () { };\n }\n ]\n};\n","export default \"\\n\\n
\\n\\n
\";","export default \"\\n\\n\";","export default \"\\n\\n\\n\\n\\n\";","import markup from \"./markup.html\";\n\nexport default {\n bindings: {\n files: \"<\",\n file: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"$log\",\n \"attachmentApi\",\n \"$q\",\n function($log, attachmentApi, $q) {\n var reader = new FileReader();\n var model = this;\n\n model.$onInit = function() {\n $(\"#carouselExampleIndicators\").on(\"slid.bs.carousel\", function(\n event\n ) {\n var oldActiveFile = model.files[event.from];\n var newActiveFile = model.files[event.to];\n newActiveFile.isActive = true;\n oldActiveFile.isActive = false;\n loadImg(newActiveFile);\n });\n\n model.files.map(delActive => (delActive.isActive = false));\n var activeFile = model.files.find(\n x => x.guid === model.file.guid\n );\n activeFile.isActive = true;\n activeFile.blob = model.file.blob;\n\n loadImg(activeFile);\n };\n\n function loadImg(file) {\n if (file.url) {\n return;\n }\n var haveData = file.blob !== undefined;\n var noBlob = file.base64 == \"\";\n if (!haveData && noBlob) {\n attachmentApi.downloadAttachment(file).then(response => {\n file.blob = response.data.blob;\n readImg(file).then(url => {\n file.url = url;\n });\n });\n } else {\n if (file.base64) {\n file.url =\n \"data:\" +\n file.contentType +\n \";base64,\" +\n file.base64;\n } else {\n readImg(file).then(url => {\n file.url = url;\n });\n }\n }\n }\n\n function readImg(file) {\n var deferred = $q.defer();\n\n reader.onload = function() {\n deferred.resolve(reader.result);\n };\n reader.readAsDataURL(file.blob);\n return deferred.promise;\n }\n }\n ]\n};\n","export default \"
\\n
    1\\\">\\n
  1. \\n
  2. \\n
\\n\\n
\\n
\\n\\n \\n
{{file.fileName || file.filename}}
\\n
\\n
\\n 1\\\">\\n \\n \\n 1\\\">\\n \\n \\n
\";","import markup from \"./markup.html\";\n\nexport default {\n bindings: {\n contactPersonId: \"=\",\n contactId: \"=\",\n minInputLength: \"<\",\n projectId: \"<\",\n displayName: \"<\",\n onUpdate: \"&\",\n isDisabled: \"<\"\n },\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"contactApi\",\n \"toastr\",\n \"$log\",\n function(contactApi, toastr, $log) {\n var model = this;\n model.searched = false;\n\n model.$onInit = function() {\n model.minInputLength = model.minInputLength || 3;\n model.projectId = model.projectId || 0;\n model.placeholder = `Søk etter kontaktperson (minimum ${model.minInputLength} tegn)`;\n\n if (model.contactPersonId) {\n contactApi\n .searchContactPersons(\n null,\n null,\n model.contactPersonId,\n model.contactId\n )\n .then(response => {\n model.results = response.data;\n });\n }\n };\n\n model.search = function(txt) {\n model.searched = txt && txt.length > 0;\n if (!txt) return;\n\n if (txt.length >= model.minInputLength) {\n model.searched = false;\n contactApi.searchContactPersons(model.projectId, txt).then(\n response => {\n model.searched = true;\n model.results = response.data;\n },\n err => {\n $log.error(err);\n toastr.error(\"Søk etter kontaktperson feilet\");\n }\n );\n } else {\n model.results = [];\n model.searched = false;\n }\n };\n\n model.changed = item => {\n model.contactId = item && item.contactId;\n model.searched = false;\n model.onUpdate({\n item: item\n });\n };\n }\n ]\n};\n","export default \"\\n \\n {{ $select.selected.fullNameAndCompanyName }}\\n {{ $select.selected.fullName }}\\n\\n \\n\\n \\n \\n
\\n {{\\n cp.tradeCodeName\\n }}\\n |\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n Ingen treff!\\n
\";","import markup from \"./markup.html\";\n\nexport default {\n bindings: {\n contactId: \"=\",\n minInputLength: \"<\"\n },\n template: markup,\n controllerAs: \"model\",\n controller: [\n \"contactApi\",\n \"toastr\",\n \"$log\",\n function (contactApi, toastr, $log) {\n var model = this;\n model.searched = false;\n\n model.$onInit = function () {\n model.minInputLength = model.minInputLength || 3;\n\n model.placeholder = `Søk etter firmaer (minimum ${model.minInputLength} tegn)`;\n\n if (model.contactId) {\n contactApi\n .searchContacts(model.contactId)\n .then(response => {\n model.results = response.data;\n });\n }\n };\n\n model.search = function (txt) {\n model.searched = txt && txt.length > 0;\n if (!txt) return;\n\n if (txt.length >= model.minInputLength) {\n model.searched = false;\n contactApi.searchContacts(txt).then(\n response => {\n model.results = response.data;\n model.searched = true;\n },\n err => {\n $log.error(err);\n toastr.error(\"Søk etter firmaer feilet\");\n }\n );\n } else {\n model.results = [];\n model.searched = false;\n }\n };\n\n\n }\n ]\n};","export default \"\\n \\n {{ $select.selected.contactName }}\\n \\n\\n \\n \\n\\n \\n\\n
\\n Ingen treff!\\n
\";","import markup from \"./markup.html\";\n\nexport default {\n bindings: {\n status: \"<\"\n },\n\n template: markup,\n controllerAs: \"model\",\n controller: [function() {}]\n};\n","export default \"Uendret\\nEndret\\nNy\";","import translate from \"album/filters/translateFilter\";\nimport singleSpace from \"album/filters/singleSpaceFilter\";\nimport range from \"album/filters/range\";\nimport bytes from \"album/filters/bytes\";\nimport percentage from \"album/filters/percentage\";\nimport getdoctype from \"album/filters/getdoctype\";\nimport filearraytotext from \"album/filters/filearraytotext\";\nimport emptyif0 from \"album/filters/emptyif0\";\nimport bSum from \"album/filters/budgetSumFilter\";\nimport sumOfValue from \"album/filters/sumOfValue\";\nimport validEmail from \"album/filters/validEmail\";\nimport haveRole from \"album/filters/haveRoleFilter\";\nimport searchResult from \"album/filters/searchResultFilter\";\nimport smartTableStrictFilter from \"album/filters/smartTableStrictFilter\";\nimport updatedByColText from \"album/filters/updatedByColText\";\nimport cut from \"album/filters/cutFilter\";\nimport notDeleted from \"album/filters/notDeleted\";\n\nimport albumWord from \"album/filters/albumWord\";\nimport projectContactFilter from \"album/filters/projectContactFilter\";\nimport moduleFilter from \"album/filters/moduleFilter\";\nimport albumLimitTo from \"album/filters/albumLimitTo\";\nimport startFrom from \"album/filters/startFromFilter\";\n\nexport default [{\n name: \"translate\",\n filter: translate\n },\n {\n name: \"singleSpace\",\n filter: singleSpace\n },\n {\n name: \"range\",\n filter: range\n },\n {\n name: \"bytes\",\n filter: bytes\n },\n {\n name: \"percentage\",\n filter: percentage\n },\n {\n name: \"getdoctype\",\n filter: getdoctype\n },\n {\n name: \"filearraytotext\",\n filter: filearraytotext\n },\n {\n name: \"emptyif0\",\n filter: emptyif0\n },\n {\n name: \"bSum\",\n filter: bSum\n },\n {\n name: \"sumOfValue\",\n filter: sumOfValue\n },\n {\n name: \"validEmail\",\n filter: validEmail\n },\n {\n name: \"haveRole\",\n filter: haveRole\n },\n {\n name: \"searchResult\",\n filter: searchResult\n },\n {\n name: \"smartTableStrictFilter\",\n filter: smartTableStrictFilter\n },\n {\n name: \"updatedByColText\",\n filter: updatedByColText\n },\n {\n name: \"cut\",\n filter: cut\n },\n {\n name: \"notDeleted\",\n filter: notDeleted\n },\n {\n name: \"albumWord\",\n filter: albumWord\n },\n {\n name: \"projectContactFilter\",\n filter: projectContactFilter\n },\n {\n name: \"moduleFilter\",\n filter: moduleFilter\n },\n {\n name: \"albumLimitTo\",\n filter: albumLimitTo\n },\n {\n name: \"startFrom\",\n filter: startFrom\n }\n];","export default [\n \"translations\",\n function(translations) {\n return function(key, doNotCapitalize) {\n if (!translations) return \"\";\n\n var str = translations[key];\n\n if (!str) {\n return \"\";\n }\n if (str && doNotCapitalize) {\n return str;\n }\n if (str && !doNotCapitalize) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n };\n }\n];\n","export default [function () {\n\n\n return function (input) {\n\n input = input ? input : \"\";\n\n input = input.replace(/ +(?= )/g, \"\");\n\n return input;\n };\n\n\n}];","export default [\n function () {\n return function (input, min, max) {\n min = parseInt(min); //Make string input int\n max = parseInt(max);\n for (var i = min; i < max; i++)\n input.push(i);\n return input;\n };\n }\n];","export default [function () {\n return function (bytes, precision) {\n if (isNaN(parseFloat(bytes)) || !isFinite(bytes)) return \"-\";\n if (typeof precision === \"undefined\") precision = 1;\n var units = [\"bytes\", \"kB\", \"MB\", \"GB\", \"TB\", \"PB\"],\n number = Math.floor(Math.log(bytes) / Math.log(1024));\n return (bytes / Math.pow(1024, Math.floor(number))).toFixed(precision) + \" \" + units[number];\n };\n}];","export default [\"$filter\", function ($filter) {\n return function (input, decimals, mult) {\n\n var n = mult ? input * 100 : input;\n\n return $filter(\"number\")(n, decimals) + \" %\";\n };\n}];","import {\n find\n} from \"lodash\";\nexport default [\"mimetypecoll\", function (mimetypecoll) {\n return function (input) {\n\n\n var linkForType = find(input.fileLinks, {\n rel: \"enclosure\"\n });\n var contentType = \"application/octet-stream\";\n\n if (linkForType) {\n contentType = linkForType.type;\n }\n\n\n var el = find(mimetypecoll, {\n mime: contentType\n });\n if (el) {\n return el.name;\n }\n return \"\";\n\n };\n}];","export default [\n function () {\n return function (input) {\n if (input === undefined) return input;\n\n var fileCount = input.length;\n var file = input[0];\n\n switch (fileCount) {\n case 0:\n return \"Ingen filer valgt\";\n case 1:\n return file.name;\n default:\n return fileCount + \" filer\";\n }\n };\n }\n];","export default [\"$log\", function ($log) {\n return function (input, percent, debug) {\n\n if (debug) {\n $log.debug(input);\n }\n\n\n if (isNaN(input) || !isFinite(input) || input === 0 || input === \"0\" || input === \"\") {\n return \"\";\n }\n\n\n if (percent) {\n return input + \"%\";\n }\n return input;\n\n\n };\n}];","import {\n forEach\n} from \"lodash\";\nexport default [\n \"$log\",\n function ($log) {\n return function (input, type, total) {\n if (input === undefined) return input;\n\n var sum = 0;\n\n var allBudgets = [];\n\n if (total) {\n forEach(input.budgets, function (cb) {\n forEach(cb.budgets, function (b) {\n allBudgets.push(b);\n });\n });\n } else {\n if (!input.budgets) {\n allBudgets.push(input);\n } else {\n allBudgets = input.budgets;\n }\n }\n\n switch (type) {\n case \"jan\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.january.value);\n });\n break;\n case \"feb\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.february.value);\n });\n break;\n case \"mar\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.march.value);\n });\n break;\n case \"apr\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.april.value);\n });\n break;\n case \"may\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.may.value);\n });\n break;\n case \"jun\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.june.value);\n });\n break;\n case \"jul\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.july.value);\n });\n break;\n case \"aug\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.august.value);\n });\n break;\n case \"sep\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.september.value);\n });\n break;\n case \"oct\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.october.value);\n });\n break;\n case \"nov\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.november.value);\n });\n break;\n case \"dec\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.december.value);\n });\n break;\n case \"q1\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.january.value) + parseInt(b.february.value) + parseInt(b.march.value);\n });\n break;\n case \"q2\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.april.value) + parseInt(b.may.value) + parseInt(b.june.value);\n });\n break;\n case \"q3\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.july.value) + parseInt(b.august.value) + parseInt(b.september.value);\n });\n break;\n case \"q4\":\n forEach(allBudgets, function (b) {\n sum +=\n parseInt(b.october.value) + parseInt(b.november.value) + parseInt(b.december.value);\n });\n break;\n case \"q5\":\n forEach(allBudgets, function (b) {\n sum += parseInt(b.january.value) + parseInt(b.february.value) + parseInt(b.march.value);\n sum += parseInt(b.april.value) + parseInt(b.may.value) + parseInt(b.june.value);\n sum += parseInt(b.july.value) + parseInt(b.august.value) + parseInt(b.september.value);\n sum +=\n parseInt(b.october.value) + parseInt(b.november.value) + parseInt(b.december.value);\n });\n break;\n\n default:\n $log.error(\"filter failed, check input\", type, input);\n }\n\n return sum;\n };\n }\n];","import {\n isNaN\n} from \"lodash\";\nimport angular from \"angular\";\nexport default [\n function () {\n return function (data, key) {\n\n\n function fetchFromObject(obj, prop) {\n if (typeof obj === \"undefined\") {\n return false;\n }\n\n var _index = prop.indexOf(\".\");\n if (_index > -1) {\n return fetchFromObject(obj[prop.substring(0, _index)], prop.substr(_index + 1));\n }\n\n return obj[prop];\n }\n\n if (angular.isUndefined(data) && angular.isUndefined(key)) return 0;\n var sum = 0;\n angular.forEach(data, function (value) {\n\n var r = parseFloat(fetchFromObject(value, key));\n r = isNaN(r) ? 0 : r;\n sum = sum + r;\n });\n return sum;\n };\n }\n];","/* eslint-disable no-useless-escape */\nexport default [\n function() {\n var validateEmail = function(email) {\n var re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(email);\n };\n return function(input) {\n return validateEmail(input);\n };\n }\n];\n","import { isArray } from \"lodash\";\nexport default [\n \"$log\",\n \"userApi\",\n function($log, userApi) {\n return function(input, op) {\n var roles = [];\n\n if (input) {\n roles = isArray(input) ? input : [input];\n }\n\n if (op) {\n switch (op) {\n case \"all\":\n return userApi.haveAllRolesRequired(roles);\n case \"any\":\n return userApi.haveAnyRoleRequired(roles);\n }\n } else {\n return userApi.haveAllRolesRequired(roles);\n }\n };\n }\n];\n","export default [\n function () {\n return function (input) {\n switch (input.objectType) {\n case \"Customer\":\n case \"PreCustomer\":\n return input.firstName + \" \" + input.lastName;\n case \"Project\":\n return input.name;\n }\n };\n }\n];","export default [\"$filter\", function ($filter) {\n return function (input, predicate) {\n return $filter(\"filter\")(input, predicate, true);\n };\n}];","export default [\"$filter\", function ($filter) {\n\n\n return function (input) {\n\n\n if (input.updatedByUser) {\n return input.updatedByUser.userName + \" (\" + $filter(\"date\")(input.updated, \"dd.MM.yyyy\") + \")\";\n }\n return \"\";\n\n\n };\n\n\n}];","export default [function () {\n return function (value, wordwise, max, tail) {\n if (!value) return \"\";\n\n max = parseInt(max, 10);\n if (!max) return value;\n if (value.length <= max) return value;\n\n value = value.substr(0, max);\n if (wordwise) {\n var lastspace = value.lastIndexOf(\" \");\n if (lastspace != -1) {\n //Also remove . and , so its gives a cleaner result.\n if (value.charAt(lastspace - 1) == \".\" || value.charAt(lastspace - 1) == \",\") {\n lastspace = lastspace - 1;\n }\n value = value.substr(0, lastspace);\n }\n }\n\n return value + (tail || \" …\");\n };\n}];","import {\n forEach\n} from \"lodash\";\nexport default [function () {\n return function (arr) {\n var filtered = [];\n forEach(arr, function (item) {\n\n\n if (item && item.status !== -1 && item.status !== -2 && !item.deletedDate) {\n filtered.push(item);\n }\n });\n return filtered;\n };\n}];","import { find } from \"lodash\";\nexport default [\n \"$sce\",\n \"$log\",\n \"store\",\n function($sce, $log, store) {\n return function(input) {\n var definitions = store.get(\"definitions\");\n if (!input) return input;\n if (!definitions) return input;\n\n var words = input.split(\" \");\n if (definitions === null) return input;\n\n for (var i = 0; i < words.length; i++) {\n var w = words[i].replace(\",\", \".\", \"\");\n\n var haveDef = find(definitions, function(d) {\n return d.word.toLowerCase() === w.toLowerCase();\n });\n if (haveDef) {\n words[i] =\n \"\" +\n w +\n \"\";\n }\n }\n\n return $sce.trustAsHtml(\"\" + words.join(\" \") + \"\");\n };\n }\n];\n","import {\n forEach,\n find\n} from \"lodash\";\nexport default [\n function () {\n return function (arr, inColl, search) {\n var filtered = [];\n forEach(arr, function (item) {\n if (item.contactPerson.person.fullName.toLowerCase().indexOf(search.toLowerCase()) > -1) {\n var found = find(inColl, function (x) {\n return x.contactPerson.id === item.contactPerson.id;\n });\n\n if (!found) {\n filtered.push(item);\n }\n }\n });\n return filtered;\n };\n }\n];","import { forEach, includes } from \"lodash\";\nexport default [\n function() {\n return function(arr, projTypeId, showRight, showLeft, floors) {\n var filtered = [];\n forEach(arr, function(m) {\n var leftFilter = showLeft && m.left;\n var rightFilter = showRight && m.right;\n var floorFilter =\n projTypeId !== 2 || includes(floors, m.floor.toString());\n\n var addToFilter = (leftFilter || rightFilter) && floorFilter;\n if (addToFilter) {\n filtered.push(m);\n }\n });\n return filtered;\n };\n }\n];\n","import { find, isArray } from \"lodash\";\nexport default [\n \"$filter\",\n\n function($filter) {\n return function(input, limit, where) {\n var itemToInclude = find(input, where);\n\n var limited = $filter(\"limitTo\")(input, limit);\n\n if (isArray(limited)) {\n var found = find(limited, itemToInclude);\n if (!found) {\n limited.unshift(itemToInclude);\n }\n }\n\n return limited;\n };\n }\n];\n","export default [function () {\n return function (input, start) {\n if (input) {\n start = +start;\n return input.slice(start);\n }\n return [];\n };\n}];"," function detectIE(ua) {\n\n\n // Test values; Uncomment to check result …\n\n // IE 10\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\n\n // IE 11\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\n\n // Edge 12 (Spartan)\n // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';\n\n // Edge 13\n // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';\n var browser = {\n ie:false,\n inputEvent:undefined\n };\n var msie = ua.indexOf(\"MSIE \");\n if (msie > 0) {\n // IE 10 or older => return version number\n browser.ie = parseInt(ua.substring(msie + 5, ua.indexOf(\".\", msie)), 10);\n browser.inputEvent = \"change\";\n return browser;\n }\n\n var trident = ua.indexOf(\"Trident/\");\n if (trident > 0) {\n // IE 11 => return version number\n var rv = ua.indexOf(\"rv:\");\n browser.ie = parseInt(ua.substring(rv + 3, ua.indexOf(\".\", rv)), 10);\n browser.inputEvent = \"change\";\n return browser;\n }\n\n var edge = ua.indexOf(\"Edge/\");\n if (edge > 0) {\n // Edge (IE 12+) => return version number\n \n browser.inputEvent = \"change\";\n return browser;\n //return parseInt(ua.substring(edge + 5, ua.indexOf(\".\", edge)), 10);\n }\n\n // other browser\n return browser;\n }\n\n\nexport default detectIE(window.navigator.userAgent);","export default task => {\n var taskType = task.taskType || 0;\n switch (taskType) {\n case 2: // Prosess\n if (task.houseId == null) { // Not on building/house level but project level\n return {\n state: \"main.projects.project.scheduleactivities\",\n name: \"Prosess\",\n stateParams: {\n id: task.projectId,\n scheduleId: task.scheduleId\n }\n };\n }\n\n // Building/house level\n return {\n state:\n \"main.projects.project.house.schedules.schedule.activities\",\n name: \"Prosess\",\n stateParams: {\n id: task.projectId,\n ppId: task.houseId,\n scheduleId: task.scheduleId\n }\n };\n case 5: //Reklamasjonspunkt\n return {\n // state: \"main.reg.index\",\n route: `registrations/${task.registrationLineId}`,\n name: \"Reklamasjon\"\n // stateParams: {\n // reglineId: task.registrationLineId\n // }\n };\n case 6: //Tiltak = 6,\n return {\n state: \"main.aberrations.aberration.actions.action\",\n name: \"Tiltak\",\n stateParams: {\n actionId: task.aberrationActionId,\n aberrationId: task.aberrationId,\n category: task.aberrationCategory\n }\n };\n\n case 9: //Avvik = 9,\n return {\n state: \"main.aberrations.aberration.index\",\n name: \"Avvik\",\n stateParams: {\n aberrationId: task.aberrationId,\n category: task.aberrationCategory\n }\n };\n\n case 10: //Checklist = 10,\n return {\n state: \"main.checklists.checklist.index\",\n name: \"Sjekkliste\",\n stateParams: {\n checklistId: task.checklistId,\n contextId: task.checklistContextId\n }\n };\n\n case 11: //Støtteprosess = 11,\n return {\n state: \"main.plannedprocess\",\n name: \"Støtteprosess\",\n stateParams: {\n eventId: task.eventId\n }\n };\n case 13: //Ledelseprosess = 13,\n return {\n state: \"main.plannedprocess\",\n name: \"Ledelseprosess\",\n stateParams: {\n eventId: task.eventId\n }\n };\n\n default:\n return {\n state: \"main.tasks.view\",\n name: \"Oppgave\",\n stateParams: {\n taskId: task.id\n }\n };\n }\n};\n","var config = {\n chart: {\n plotBackgroundColor: null,\n plotBorderWidth: null,\n plotShadow: false,\n type: \"pie\"\n },\n title: {\n text: \"Interesse pr prosjekt siste måned\"\n },\n tooltip: {\n //pointFormat: \"{series.name}: {point.percentage:.1f}%\"\n pointFormatter: function() {\n return `${this.series.name} ${this.y} interessenter`;\n }\n },\n plotOptions: {\n pie: {\n allowPointSelect: true,\n cursor: \"pointer\",\n dataLabels: {\n enabled: false\n },\n showInLegend: true\n }\n },\n series: [\n {\n name: \"Prosjekter\",\n colorByPoint: true,\n data: []\n }\n ]\n};\n\nexport default config;\n","var config = {\n chart: {\n type: \"line\"\n },\n title: {\n text: \"Solgte seksjoner\"\n },\n /* subtitle: {\n text: \"Source: WorldClimate.com\"\n }, */\n xAxis: {\n categories: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Okt\",\n \"Nov\",\n \"Des\"\n ],\n crosshair: true\n },\n yAxis: {\n min: 0,\n title: {\n text: \"Salg\"\n }\n },\n tooltip: {\n headerFormat: \"{point.key}\",\n pointFormat:\n \"\" +\n \"\",\n footerFormat: \"
{series.name}: {point.y} seksjoner
\",\n shared: true,\n useHTML: true\n },\n plotOptions: {\n column: {\n pointPadding: 0.2,\n borderWidth: 0\n }\n },\n series: []\n};\n\nexport default config;\n","import { forEach, map, find, uniq, includes } from \"lodash\";\n\nimport stateRef from \"../tasks/taskLink\";\n\nimport createCharts from \"./charts\";\nimport FileSaver from \"file-saver\";\nimport { VERSION } from \"hammerjs\";\nimport navigation from \"shared/navigation.js\";\n\nexport default [\n \"$log\",\n \"moment\",\n \"mailApi\",\n \"commonApi\",\n \"reportApi\",\n \"documentApi\",\n \"ibmApi\",\n \"toastr\",\n \"store\",\n \"$state\",\n \"$window\",\n \"tasks\",\n \"haveRoleFilter\",\n \"favorites\",\n \"$localForage\",\n\n function (\n $log,\n moment,\n mailApi,\n commonApi,\n reportApi,\n documentApi,\n ibmApi,\n toastr,\n store,\n $state,\n $window,\n tasks,\n haveRole,\n favorites,\n $localForage\n ) {\n // var rootUrl = window.location.protocol + \"//\" + window.location.host;\n // if (window.location.host.toLowerCase().indexOf(\"localhost\") == -1)\n // window.location.href = rootUrl + \"/planning.html\";\n\n var vm = this;\n vm.nav = navigation;\n vm.showDashboardCategory = 1;\n\n vm.loaders = {\n calendar: true,\n blogs: true,\n regLines: true\n };\n\n vm.collapsed = {\n calendar: null,\n tasks: null,\n regLines: null\n };\n\n vm.attendees = [];\n\n vm.newAberration = function (category) {\n $state.go(\"main.aberrations.aberration.index\", {\n aberrationId: -1,\n category: category\n });\n };\n\n vm.myTasks = tasks.data;\n vm.anyTasksOverdue = find(vm.myTasks.tasks, t => {\n return t.isOverDue;\n });\n vm.navigateToTask = task => {\n var ref = stateRef(task);\n if (ref.state) {\n $state.go(ref.state, ref.stateParams);\n } else {\n vm.nav(ref.route);\n }\n };\n\n if (haveRole(\"KK\")) {\n commonApi.getRegLines().then(regLinesResponse => {\n vm.regLines = regLinesResponse.data.regLines;\n vm.loaders.regLines = false;\n\n if (vm.collapsed.regLines == null) {\n vm.collapsed.regLines = vm.regLines.length == 0;\n }\n });\n }\n\n vm.workplaceSettings = false;\n vm.workplaceHiddenGroupsChanged = false;\n\n vm.workplaceFeedSizes =\n [{ size: 5, label: \"5 innlegg\" },\n { size: 10, label: \"10 innlegg\" },\n { size: 15, label: \"15 innlegg\" }];\n vm.workplaceFeedSize = { size: 5 };\n vm.workplaceHiddenGroups = [];\n vm.workplaceHiddenGroupsStr = \"\";\n\n var storedWorkplaceHiddenGroups = localStorage.getItem(\"workplace-hidden-groups\");\n var storedWorkplaceFeedSize = localStorage.getItem(\"workplace-feed-size\");\n\n if (storedWorkplaceHiddenGroups &&\n storedWorkplaceHiddenGroups.length &&\n storedWorkplaceHiddenGroups.length > 0) {\n vm.workplaceHiddenGroups = JSON.parse(storedWorkplaceHiddenGroups);\n }\n\n if (storedWorkplaceFeedSize &&\n storedWorkplaceFeedSize.length &&\n storedWorkplaceFeedSize.length > 0) {\n vm.workplaceFeedSize = JSON.parse(storedWorkplaceFeedSize);\n }\n\n vm.getWorkplaceFeed = function () {\n vm.loaders.workplace = true;\n var hiddenGroups = vm.workplaceHiddenGroups.join(\";\");\n var profile = store.get(\"profile\");\n commonApi.getNewsfeed(profile.albumUserName,\n vm.workplaceFeedSize.size,\n hiddenGroups).then(result => {\n vm.workplaceGroups = result.data.groups;\n forEach(vm.workplaceGroups, group => {\n group.hidden = vm.workplaceHiddenGroups.indexOf(group.id) > -1;\n });\n vm.workplaceHiddenGroupsStr = vm.workplaceGroups.filter(group => group.hidden).map(group => group.name).join(\", \");\n vm.workplacePosts = result.data.posts;\n vm.loaders.workplace = false;\n\n setTimeout(function () {\n $(\".reactions\").each(function () {\n $(this).tooltip();\n });\n }, 500);\n });\n };\n\n vm.workplaceFeedsize = function () {\n localStorage.setItem(\"workplace-feed-size\", JSON.stringify(vm.workplaceFeedSize));\n vm.getWorkplaceFeed();\n };\n\n vm.workplaceGroupVisibility = function (groupId, event) {\n event.stopPropagation();\n\n if (groupId == \"582915169069030\") //IT-nytt\n return;\n\n var workplaceHiddenGroupsIndex = vm.workplaceHiddenGroups.indexOf(groupId);\n if (workplaceHiddenGroupsIndex == -1)\n vm.workplaceHiddenGroups.push(groupId);\n else\n vm.workplaceHiddenGroups.splice(workplaceHiddenGroupsIndex, 1);\n\n var workplaceGroupIndex =\n vm.workplaceGroups.findIndex(group => group.id == groupId);\n vm.workplaceGroups[workplaceGroupIndex].hidden =\n !vm.workplaceGroups[workplaceGroupIndex].hidden;\n\n vm.workplaceHiddenGroupsStr = vm.workplaceGroups.filter(group => group.hidden).map(group => group.name).join(\", \");\n vm.workplaceHiddenGroupsChanged = true;\n\n localStorage.setItem(\"workplace-hidden-groups\", JSON.stringify(vm.workplaceHiddenGroups));\n };\n\n vm.workplaceSettingsToogle = function () {\n vm.workplaceSettings = !vm.workplaceSettings;\n };\n\n vm.workplaceDropDownOpen = false;\n vm.workplaceDropDownButtonClicked = function () {\n vm.workplaceDropDownOpen = !vm.workplaceDropDownOpen;\n if (vm.workplaceDropDownOpen) {\n vm.workplaceDropDownCheckClosed();\n }\n };\n\n vm.workplaceDropDownCheckClosed = function () {\n setTimeout(function () {\n let hasClass = $(\"#workplaceGroupsDropdown\").hasClass(\"show\");\n if (hasClass)\n vm.workplaceDropDownCheckClosed();\n else {\n vm.workplaceDropDownOpen = false;\n if (vm.workplaceHiddenGroupsChanged) {\n vm.workplaceHiddenGroupsChanged = !vm.workplaceHiddenGroupsChanged;\n vm.getWorkplaceFeed();\n }\n }\n }, 500);\n };\n\n vm.getWorkplaceFeed();\n\n commonApi.getDefinitions().then(definitionsResponse => {\n store.set(\"definitions\", definitionsResponse.data);\n });\n\n documentApi.browseConnections(\"0e3364f5-9a1d-48b3-afa2-7412d08eec3e\").then(documents => {\n documents.data.forEach(document => {\n document.iconClass = \"far fa-file\";\n if (document.title.endsWith(\"docx\")) {\n document.iconClass = \"far fa-file-word bg-word\";\n } else if (document.title.endsWith(\"xlsx\")) {\n document.iconClass = \"far fa-file-excel bg-excel\";\n } else if (document.title.endsWith(\"pptx\")) {\n document.iconClass = \"far fa-file-powerpoint bg-powerpoint\";\n }\n });\n vm.coronaDocuments = documents;\n });\n\n vm.downloadConnectionsDoc = function (doc) {\n ibmApi.download(doc.uuid, true).then(response => {\n FileSaver.saveAs(response.data.blob, response.data.name);\n });\n };\n\n vm.showIntranet = true;\n\n vm.goToBlog = function (bp) {\n if (!bp.url) {\n toastr.warning(\"Fant ikke link til sak i connections\");\n } else {\n $window.open(bp.url, \"_blank\");\n }\n };\n\n vm.favorites = favorites.data;\n\n reportApi.getSalesDiagram().then(res => {\n createCharts(res).then(reports => {\n vm.reports = reports;\n });\n });\n\n vm.showDays = 0;\n\n vm.currentDate = new Date();\n vm.displayDate = {};\n\n vm.displayDateEnd = {};\n\n vm.changeDate = function (dir) {\n switch (dir) {\n case \"next\":\n vm.currentDate = moment(vm.currentDate)\n .add(1, \"days\")\n .toDate();\n break;\n case \"prev\":\n vm.currentDate = moment(vm.currentDate)\n .subtract(1, \"days\")\n .toDate();\n break;\n }\n\n mailApi\n .getCalendar(vm.currentDate, vm.showDays)\n .then(function (res) {\n vm.displayDate.text = moment(vm.currentDate).format(\n \"dddd DD. MMMM\"\n );\n vm.displayDate.weekOfYear = moment(vm.currentDate).format(\n \"ww\"\n );\n vm.displayDate.dayOfMonth = vm.currentDate.getUTCDate();\n\n vm.displayDateEnd.text = moment(vm.currentDate)\n .add(vm.showDays, \"days\")\n .format(\"dddd DD. MMMM\");\n\n vm.calendar = res.data;\n vm.loaders.calendar = false;\n\n if (vm.collapsed.calendar == null) {\n vm.collapsed.calendar = vm.calendar.length == 0;\n }\n });\n };\n\n vm.changeDate(vm.currentDate);\n vm.showMore = function () {\n vm.showDays += 7;\n vm.changeDate(vm.currentDate);\n };\n\n vm.openAppointment = appointment => {\n if (!vm.attendees[appointment.id]) {\n commonApi.getAppointment(appointment.id).then(response => {\n var index = vm.calendar.findIndex(i => i.id == appointment.id);\n vm.calendar[index].webLink = response.data.webLink;\n vm.attendees[appointment.id] = response.data.attendees;\n });\n }\n };\n }\n];\n","import { map, orderBy, forOwn, groupBy } from \"lodash\";\nimport propectsLastMonth from \"./prospectsDiagram\";\nimport salesTotal from \"./salesDiagram\";\n\nexport default function createCharts(serverResponse) {\n let res = serverResponse;\n let reports = {\n salesTotal: salesTotal,\n propectsLastMonth: propectsLastMonth\n };\n\n const myPromise = new Promise(resolve => {\n var haveSalesStats = res.data.stats && res.data.stats.length > 0;\n var haveProspects = res.data.projcusts && res.data.projcusts.length > 0;\n\n if (haveProspects) {\n const totalNum = res.data.projcusts.reduce(\n (total, amount) => total.data + amount.data\n );\n\n reports.propectsLastMonth.subtitle = {\n text: `${totalNum} interessenter totalt siste måned`\n };\n\n reports.propectsLastMonth.series[0].data = map(\n res.data.projcusts,\n d => {\n return {\n name: d.label,\n y: d.data\n };\n }\n );\n }\n\n if (haveSalesStats) {\n reports.salesTotal.series = [];\n\n var groups = groupBy(res.data.stats, \"year\");\n forOwn(groups, (months, name) => {\n reports.salesTotal.series.push({\n name: name,\n data: map(orderBy(months, \"month\"), \"count\")\n });\n });\n\n reports.salesTotal.series.push({\n name: `Budsjett ${new Date().getFullYear()}`,\n data: map(orderBy(res.data.budget, \"month\"), \"count\")\n });\n }\n\n resolve(reports);\n });\n\n return myPromise;\n}\n","import angular from \"angular\";\nimport navigation from \"shared/navigation.js\";\nimport { clearTimeout } from \"highcharts\";\nexport default [\n \"msalAuthenticationService\",\n \"$log\",\n \"$state\",\n \"store\",\n \"moment\",\n \"userApi\",\n \"toastr\",\n \"albumConfig\",\n \"searchApi\",\n \"$window\",\n \"favorites\",\n \"$location\",\n \"$rootScope\",\n function (\n msalService,\n $log,\n $state,\n store,\n moment,\n userApi,\n toastr,\n albumConfig,\n searchApi,\n $window,\n favorites,\n $location,\n $rootScope\n ) {\n var setTimeOfDay = function () {\n var natt = moment().startOf(\"day\");\n var morgen = moment()\n .startOf(\"day\")\n .hour(6);\n var ettermiddag = moment()\n .startOf(\"day\")\n .hour(12);\n var kveld = moment()\n .startOf(\"day\")\n .hour(18);\n var midnatt = moment().endOf(\"day\");\n\n if (moment().isBetween(natt, morgen)) {\n return \"natt\";\n }\n if (moment().isBetween(morgen, ettermiddag)) {\n return \"morgen\";\n }\n if (moment().isBetween(ettermiddag, kveld)) {\n return \"ettermiddag\";\n }\n if (moment().isBetween(kveld, midnatt)) {\n return \"kveld\";\n }\n };\n\n let transformSearch = res => {\n\n var hits = [];\n\n hits = res.data.map(sr => {\n\n return {\n score: sr.score,\n type: sr.type,\n title: sr.highlightTitle,\n fullText: sr.text,\n projectName: sr.type == 2 ? sr.title : null,\n customerId: sr.type == 0 || sr.type == 1 ? sr.tableId : null,\n projectId: sr.type == 2 ? sr.tableId : null,\n regLineId: sr.type == 7 ? sr.tableId : null,\n sectionId: sr.type == 4 ? sr.tableId : null,\n contactPersonId: sr.type == 5 ? sr.tableId : null,\n contactId: sr.type == 6 ? sr.tableId : null,\n processId: sr.type == 3 ? sr.tableId : null\n };\n });\n\n hits.push({\n title: \"Se alle treff for '\" + vm.searchText + \"'\",\n searchText: vm.searchText,\n score: 0\n });\n vm.hits = hits;\n };\n\n var vm = this;\n\n vm.location = $location.path();\n\n $rootScope.$on(\"$locationChangeStart\", function () {\n vm.location = $location.path();\n });\n\n var profile = store.get(\"profile\");\n\n var currentRoles = profile && profile.roles ? profile.roles : [];\n\n vm.userIsAdmin = userApi.haveAllRolesRequired([\"Admin\"], currentRoles);\n\n vm.firstName = profile.firstName;\n vm.favorites = favorites.data;\n\n vm.env = albumConfig.env;\n if (window.location.hostname == \"testalbum.trysilhus.no\") { \n vm.env = \"test\";\n }\n\n vm.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n\n vm.nav = navigation;\n\n vm.showSystem = userApi.haveAnyRoleRequired([\n \"Admin\",\n \"Sales\",\n \"SalesAdmin\",\n \"PL\",\n \"OptionAdmin\",\n \"KS\",\n \"Market\",\n \"KK\",\n \"Support\",\n \"ProductionPlanEditor\",\n \"PRL\"\n ]);\n\n vm.timeOfToday = setTimeOfDay();\n\n vm.logout = function () {\n msalService.logout();\n };\n vm.open = doc => {\n if (!doc) return;\n\n switch (doc.type) {\n case 0:\n case 1:\n $state.go(\"main.customers.customer.index\", {\n id: doc.customerId\n });\n break;\n case 2:\n if (albumConfig.useMultipleAppRouting == \"true\") { \n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=0\" + \"&id=\" + doc.projectId;\n } else {\n $state.go(\"main.projects.project.index\", {\n id: doc.projectId\n });\n }\n break;\n case 3:\n $state.go(\n \"main.processes.process.index\",\n {\n id: doc.processId\n },\n { reload: true }\n );\n break;\n case 4:\n if (albumConfig.useMultipleAppRouting == \"true\") { \n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=2\" + \"&id=\" + doc.sectionId;\n } else {\n searchApi.getPhaseAndProject(doc.sectionId).then(function (res) {\n $state.go(\n \"main.projects.project.house.sections.section.index\",\n {\n id: res.data.id,\n ppId: res.data.ppId,\n sectionId: doc.sectionId\n });\n });\n }\n break;\n case 5:\n $state.go(\"main.contactpersons.contactperson.index\", {\n contactPersonId: doc.contactPersonId\n });\n break;\n case 6:\n $state.go(\"main.contacts.contact.index\", {\n contactId: doc.contactId\n });\n break;\n case 7:\n if (albumConfig.useMultipleAppRouting == \"true\") { \n window.location.href = window.location.href = \n window.location.protocol + \"//\" + window.location.hostname + \"/v2/#/registrations/\" + doc.regLineId;\n } else\n {\n $state.go(\n \"main.reg.index\",\n {\n reglineId: doc.regLineId\n },\n { reload: true }\n );\n }\n break;\n default:\n vm.searchText = doc.searchText;\n vm.search();\n break;\n }\n };\n\n vm.searchAlbum = function (search) {\n if (!search) return;\n clearTimeout(this._searchTimeout);\n this._searchTimeout = setTimeout(() => {\n vm.searchText = search;\n searchApi\n .headerSearch({\n searchText: vm.searchText\n })\n .then(transformSearch);\n }, 500);\n };\n\n vm.search = function () {\n angular.element(\"#navbar\").collapse(\"hide\");\n\n $state.go(\"main.search\", {\n st: vm.searchText,\n page: null,\n types: null\n });\n };\n\n vm.newNote = function () {\n toastr.info(\"Nytt notat, ikke implementert enda\");\n };\n vm.newAberration = function (category) {\n $state.go(\"main.aberrations.aberration.index\", {\n aberrationId: -1,\n category: category\n });\n };\n\n vm.back = function () {\n window.history.back();\n };\n\n $(function () {\n var navMain = $(\".navbar-collapse\");\n\n navMain.on(\"click\", \".mobile-close\", null, function () {\n navMain.collapse(\"hide\");\n });\n });\n }\n];\n","export default [\n \"$log\",\n \"userApi\",\n \"store\",\n \"$cacheFactory\",\n \"$state\",\n function ($log, userApi, store, $cacheFactory, $state) {\n var vm = this;\n\n window.location.href = \"/\";\n\n // vm.errorMessage = undefined;\n // vm.forgotpassword = () => {\n // window.open(\"http://www.trysilbygg.no/pm\", \"_blank\");\n // };\n\n // vm.login = () => {\n // userApi\n // .login({\n // userName: vm.userName,\n // password: vm.password\n // })\n // .then(response => {\n // switch (response.data.status) {\n // case 0:\n // vm.errorMessage =\n // \"Brukernavn eller passord er feil!\";\n // break;\n // case 2:\n // vm.errorMessage =\n // \"Du har ikke tilgang til Album, ta kontakt med IT for å få tilgang\";\n // break;\n // case 3:\n // vm.errorMessage = \"Serverfeil\";\n // break;\n // default:\n // store.set(\"token\", response.data.token);\n // store.set(\"expires_at\", response.data.expires);\n // var httpCache = $cacheFactory.get(\"$http\");\n // httpCache.removeAll();\n // var returnUrl = store.get(\"album-return-url\");\n // if (returnUrl && returnUrl.length > 1) {\n // store.remove(\"album-return-url\");\n // var newHref = albumAddress + returnUrl;\n\n // window.location.href = newHref;\n // } else {\n // $state.go(\"main\");\n // }\n\n // break;\n // }\n // });\n // };\n }\n];\n","export default [\n \"msalAuthenticationService\",\n \"$state\",\n function (msalService, $state) {\n msalService.logout();\n var rootUrl = window.location.protocol + \"//\" + window.location.host;\n window.location.href = rootUrl;\n }\n];","export default \"
Logger ut..
\";","// Main\nimport main from \"album/main/state\";\nimport notFound from \"album/main/notFound\";\nimport login from \"album/login/state\";\nimport logout from \"album/logout/state\";\n//import accessdenied from \"album/main/accessdenied\";\n\nexport default [main, notFound, login, logout];\n","import ctrl from \"./ctrl\";\nimport html from \"./dashboard.html\";\nimport headerctrl from \"./header\";\nimport headerhtml from \"./header.html\";\n\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main\", {\n url: \"/\",\n\n params: {\n id: undefined\n },\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Hjem\"\n },\n resolve: {\n tasks: [\n \"taskApi\",\n taskApi => {\n return taskApi.getTasks();\n }\n ],\n profile: [\n \"commonApi\",\n commonApi => {\n return commonApi.getProfile();\n }\n ],\n favorites: [\n \"userApi\",\n userApi => {\n return userApi.getFavorites();\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controllerAs: \"vm\",\n controller: ctrl\n },\n header: {\n controllerAs: \"vm\",\n template: headerhtml,\n controller: headerctrl\n }\n }\n });\n }\n];\n","export default \"
\\n\\t
\\n\\t\\t Uløste oppgaver med utløpt frist\\n\\t\\t\\n\\t
\\n
\\n\\n\\n\\n\\n\\n
\\n\\t
\\n\\t\\t\\n\\t\\t\\n\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t Henter reklamasjoner...\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\tBra jobbet! Ingen reklamasjoner er ubehandlet/ubesvarte\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{rl.name}}\\n\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t{{rl.projectName}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{rl.timeLimit | date: \\\"dd.MMM\\\"}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t Henter avtaler...\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\tIngen avtaler idag\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t{{vm.displayDate.text}}\\n\\t\\t\\t\\t\\t\\t, uke\\n\\t\\t\\t\\t\\t\\t\\t{{vm.displayDate.weekOfYear}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t
0\\\" ng-repeat=\\\"a in vm.calendar\\\">\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t{{a.title}}\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\tSted: {{a.location}}\\n\\t\\t\\t\\t\\t\\t\\t{{a.start | date : 'dd.MMMHH:mm' }} - {{a.end | date :\\n\\t\\t\\t\\t\\t\\t\\t\\t'HH:mm' }}\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\tÅpne møtet i webmailen\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t\\t {{users}}\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t

{{fav.name}}

\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\tSeksjoner\\n\\t\\t\\t\\t\\t\\t\\t\\tTilvalg\\n\\t\\t\\t\\t\\t\\t\\t\\tForandringer\\n\\t\\t\\t\\t\\t\\t\\t\\tDokumenter\\n\\t\\t\\t\\t\\t\\t\\t\\tTidplan\\n\\t\\t\\t\\t\\t\\t\\t\\tAvvik\\n\\t\\t\\t\\t\\t\\t\\t\\tSjekklister\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\n\\t\\t\\n\\t
\\n
\\n\\n
\\n\\t\\n
\\n\\n\\n
\\n\\t\\n\\t
\\n\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t Dine avtaler\\n\\t\\t\\t\\t(ingen\\n\\t\\t\\t\\t\\ti dag)\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t Henter avtaler...\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\tIngen avtaler idag\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t{{vm.displayDate.text}}\\n\\t\\t\\t\\t\\t\\t, uke\\n\\t\\t\\t\\t\\t\\t\\t{{vm.displayDate.weekOfYear}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t
0\\\" ng-repeat=\\\"a in vm.calendar\\\">\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{a.title}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\tSted: {{a.location}}\\n\\t\\t\\t\\t\\t\\t\\t{{a.start | date : 'dd.MMMHH:mm' }} - {{a.end | date :\\n\\t\\t\\t\\t\\t\\t\\t\\t'HH:mm' }}\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\tÅpne møtet i webmailen\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t

\\n\\n\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t\\t {{users.name}}\\n\\t\\t\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t
Salg
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\t
\\n\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t Interesse\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n
\\n\\t\\n\\n\\t\\n
\\n\\n\\n
\\n\\n\\t\\n\\t\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\tAlle prosjekter\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t

{{fav.name}}

\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\tSeksjoner\\n\\t\\t\\t\\t\\t\\tTilvalg\\n\\t\\t\\t\\t\\t\\tForandringer\\n\\t\\t\\t\\t\\t\\tDokumenter\\n\\t\\t\\t\\t\\t\\tTidplan\\n\\t\\t\\t\\t\\t\\tAvvik\\n\\t\\t\\t\\t\\t\\tSjekklister\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n
\\n\\n\\n
\\n\\n\\t\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\tAktivitetsstrøm\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\tLaster inn...\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\tMaks\\n\\t\\t\\t\\t\\tantall\\n\\t\\t\\t\\t\\tinnlegg i strøm\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\tGjem\\n\\t\\t\\t\\t\\t\\tinnlegg\\n\\t\\t\\t\\t\\t\\tfra\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{vm.workplaceHiddenGroupsStr || 'Ingen grupper valgt'}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\tIngen innlegg funnet i aktivitetsstrøm\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t{{post.profileName}}\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t{{post.timeAgo}} i {{post.groupName}}\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t{{post.profileName}} har delt en lenke\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t{{post.numOfReacts}}\\n\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t{{post.numOfComments}}\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t
\\n\\t\\t
\\n\\n\\t
\\n
\\n\\n\\n\\n\\n\\n\\n\\n
\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","export default \"
\\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n
    \\n
  1. \\n \\n \\n \\n \\n
  2. \\n
\\n
\";","export default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.404\", {\n url: \"404\",\n aData: {\n name: \"Side ikke funnet\"\n },\n views: {\n \"@\": {\n template: \"

Denne siden finnes ikke

Siden kan ha blitt flyttet, eller du har klikket på en gammel link.


For å komme til forsiden, trykk på knappen under.

Gå til forsiden
\"\n }\n\n }\n });\n}];","import ctrl from \"./ctrl\";\nimport html from \"./login.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"login\", {\n url: \"/login\",\n views: {\n header: {\n controllerAs: \"vm\",\n template: \"\"\n },\n \"@\": {\n template: \"\"\n },\n login: {\n template: html,\n controllerAs: \"vm\",\n controller: ctrl\n }\n }\n });\n }\n];\n","export default \"\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./logout.html\";\nexport default [\n \"$stateProvider\",\n function ($stateProvider) {\n $stateProvider.state(\"logout\", {\n url: \"/logout\",\n views: {\n header: {\n controllerAs: \"vm\",\n template: \"\"\n },\n \"@\": {\n template: html,\n controllerAs: \"vm\",\n controller: ctrl\n },\n logout: {\n template: html,\n controllerAs: \"vm\",\n controller: ctrl\n }\n }\n });\n }\n];","import saveFile from \"shared/saveFile\";\nexport default [\n \"$log\",\n \"book\",\n \"ksApi\",\n \"ibmApi\",\n function ($log, book, ksApi, ibmApi) {\n var vm = this;\n\n vm.book = book.data;\n vm.load = function (item) {\n if (item.list) {\n item.show = !item.show;\n return;\n }\n ksApi.book(item.uuid).then(function (res) {\n item.list = res.data;\n item.show = !item.show;\n });\n };\n\n vm.downloadFile = function (doc) {\n if (doc.ibmItemType !== 1) return;\n\n ibmApi\n .downloadFileFromConnections({\n id: doc.uuid,\n fileName: doc.name,\n href: doc.download,\n useAlbumUser: true\n })\n .then(saveFile);\n };\n }\n];\n","import saveFile from \"shared/saveFile\";\nimport { range, maxBy } from \"lodash\";\nexport default [\n \"$log\",\n \"ksApi\",\n \"ibmApi\",\n \"processPhases\",\n \"$stateParams\",\n \"$state\",\n function ($log, ksApi, ibmApi, processPhases, $stateParams, $state) {\n var vm = this;\n vm.projTypeId = $stateParams.projtype;\n vm.projTypeName = processPhases.data.projType;\n vm.processPhases = processPhases.data.processPhases;\n\n if (vm.processPhases && vm.processPhases.length) {\n vm.maxIndex = maxBy(vm.processPhases, \"index\").index;\n vm.range = range(1, vm.maxIndex + 1);\n } else {\n vm.noData = true;\n }\n\n vm.fileChange = function () {\n ksApi.uploadKsFile(vm.ksFile, vm.projTypeId).then(function () {\n $state.reload();\n });\n };\n vm.fileDownload = function () {\n ksApi.downloadKsFile(vm.projTypeId).then(saveFile);\n };\n }\n];\n","export default [\"$log\", \"ksApi\", \"ibmApi\", \"phase\", \"$stateParams\",\n function ($log, ksApi, ibmApi, phase, $stateParams) {\n\n\n var vm = this;\n vm.phase = phase.data.processesInPhase;\n vm.phaseName = phase.data.phase;\n vm.projTypeName = phase.data.projType;\n vm.projTypeId = Number($stateParams.projtype);\n vm.phaseId = Number($stateParams.phase);\n\n\n }\n];","import ks from \"album/ks/state\";\nimport ksindex from \"album/ks/index/state\";\nimport kslevel2 from \"album/ks/level2/state\";\nimport kslevel3 from \"album/ks/level3/state\";\n\n\nexport default [\n ks, ksindex, kslevel2, kslevel3\n];","import html from \"./ks.html\";\n\n\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.ks\", {\n url: \"ks\",\n abstract: true,\n data: {\n requiresLogin: true\n },\n aData: {\n breadcrumbProxy: \"main.ks.index\"\n },\n views: {\n \"@\": {\n\n template: html,\n controllerAs: \"vm\"\n }\n\n },\n resolve: {\n book: [\"ksApi\", function (ksApi) {\n return ksApi.book();\n }]\n }\n\n\n });\n}];","export default \"\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.ks.index\", {\n\n url: \"/start\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Kvalitetssystem\"\n },\n views: {\n \"kscontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve:{\n book:[\"ksApi\",function(ksApi){\n return ksApi.book();\n }]\n }\n \n\n });\n}];","export default \"
\\n\\t
\\n\\t\\t

Kvalitetsstyringssystem

\\n\\t\\t
\\n\\t\\t\\t

0\\\">\\n\\t\\t\\t\\t{{level1.name}}\\n\\t\\t\\t\\t\\n\\t\\t\\t

\\n\\n\\t\\t\\t
    \\n\\t\\t\\t\\t
  • \\n\\t\\t\\t\\t\\t0\\\">{{level2.name}}\\n\\t\\t\\t\\t\\t{{level2.name}}\\n\\t\\t\\t\\t\\t0\\\" ng-click=\\\"vm.load(level2)\\\"\\n\\t\\t\\t\\t\\t\\tng-class=\\\"{'fa-chevron-right':!level2.show,'fa-chevron-down':level2.show}\\\">\\n\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t\\t
    • \\n\\t\\t\\t\\t\\t\\t\\t0\\\">{{level3.name}}\\n\\t\\t\\t\\t\\t\\t\\t{{level3.name}}\\n\\t\\t\\t\\t\\t\\t\\t0\\\" ng-click=\\\"vm.load(level3)\\\"\\n\\t\\t\\t\\t\\t\\t\\t\\tng-class=\\\"{'fa-chevron-right':!level3.show,'fa-chevron-down':level3.show}\\\">\\n\\t\\t\\t\\t\\t\\t\\t
        \\n\\t\\t\\t\\t\\t\\t\\t\\t
      • \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t{{level4.name}}\\n\\t\\t\\t\\t\\t\\t\\t\\t
      • \\n\\t\\t\\t\\t\\t\\t\\t
      \\n\\t\\t\\t\\t\\t\\t
    • \\n\\t\\t\\t\\t\\t
    \\n\\t\\t\\t\\t
  • \\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\t
\\n\\t\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t

Prosesskart

\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\n\\n\\t\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\t\\n\\n\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
Ledelsesprosesser\\n\\t\\t\\t\\t\\t\\t\\t
Trysilhus\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tKonsepter
Trysilhus\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tTrykon
Støtteprosesser\\n\\t\\t\\t\\t\\t\\t\\t
Følgeprosesser\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./level2.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.ks.level2\", {\n url: \"/level/phases/{projtype:int}\",\n\n data: {\n requiresLogin: true\n },\n aData: { name: \"{{$stateParams.projtype == 1 ? 'Trysilhus Konsepter' : $stateParams.projtype == 4 ? 'Trysilhus Trykon' : 'Trysilhus Areal'}}\" },\n views: {\n \"kscontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n processPhases: [\"ksApi\", \"$stateParams\", function (ksApi, $stateParams) {\n return ksApi.getProcessPhases($stateParams.projtype);\n }]\n }\n\n\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\tTrysilhus\\n\\t\\t\\t\\tKonsepter\\n\\t\\t\\t

|

\\n\\t\\t\\tTrysilhus\\n\\t\\t\\t\\tTrykon\\n\\t\\t\\t

|

\\n\\t\\t\\tTrysilhus\\n\\t\\t\\t\\tAreal\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\tLast ned\\n\\t\\t
\\n\\t
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

Kundebehov \\n\\t\\t\\t

\\n\\t\\t\\t\\n\\t\\t\\t

Kundetilfredshet

\\n\\t\\t
\\n\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t{{pt.phase}}\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t
\\n\\t\\tLedelsesprosesser\\n\\t\\tStøtteprosesser\\n\\t\\tFølgeprosesser\\n\\n\\t\\t
\\n\\t\\t\\t

Detaljerte flytskjemaer for hver prosjektfase finner dere under: KS/HR --> Kvalitetsstyringssystem -> Kap\\n\\t\\t\\t\\t6.\\n\\t\\t\\t\\tDokumentbibliotek -> KS Veiledere og informasjon

\\n\\t\\t\\tTilbake til start\\n\\t\\t
\\n\\t
\\n\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./level3.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.ks.level3\", {\n url: \"/level/processes/{projtype}/{phase}\",\n data: {\n requiresLogin: true\n },\n aData: { name: \"{{phase.data.phase}}\" },\n views: {\n kscontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n phase: [\n \"$stateParams\",\n \"ksApi\",\n function($stateParams, ksApi) {\n return ksApi.getProcessPhase({\n projTypeId: $stateParams.projtype,\n processPhaseId: $stateParams.phase\n });\n }\n ]\n }\n });\n }\n];\n","export default \"
\\n\\t
\\n\\t\\tTrysilhus\\n\\t\\t\\tKonsepter\\n\\t\\t

|

\\n\\t\\tTrysilhus\\n\\t\\t\\tTrykon\\n\\t\\t

|

\\n\\t\\tTrysilhus\\n\\t\\t\\tAreal\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t

Kundebehov

\\n\\t\\t\\t\\n\\t\\t\\t

Kundetilfredshet

\\n\\t\\t
\\n\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t{{ph.key}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t{{n.name}}\\n\\t\\t\\t\\t\\t\\t
PLRPrefab bestillingBestille husmontering\\n\\t\\t\\t\\t\\t\\tByggemøte 1Bestille utv.komplBestille snekkerinnr
PLGOppstarts møte grunn
OPSeksjonering
KKUavhengig kontroll
BSAKBrukstillatelse
\\n\\t\\t
\\n\\t\\tLedelsesprosesser\\n\\t\\tStøtteprosesser\\n\\t\\tFølgeprosesser\\n\\t
\\n
\";","export default [\n \"section\",\n function (section) {\n var vm = this;\n vm.section = section.data.section;\n vm.customerstab = vm.section.customers.length > 1;\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./section.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n //$stateProvider.state('main.projects.project.sections.section', {\n $stateProvider.state(\"main.projects.project.house.sections.section\", {\n\n\n url: \"/{sectionId}\",\n abstract: true,\n data: {\n requiresLogin: true\n },\n aData: {\n breadcrumbProxy: \"main.projects.project.house.sections.section.index\"\n },\n views: {\n\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n\n },\n resolve: {\n section: [\"projectApi\", \"$stateParams\", function (projectApi, $stateParams) {\n\n return projectApi.getSection($stateParams.id, $stateParams.sectionId);\n }]\n }\n });\n}];","export default \"
\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n\\n
\";","export default [\"$uibModalInstance\", \"$log\", \"parkinglot\", \"gnrsAndBnrs\",\n function ($uibModalInstance, $log, parkinglot, gnrsAndBnrs) {\n\n var modalvm = this;\n modalvm.gnrs = gnrsAndBnrs.data.gnrs;\n modalvm.bnrs = gnrsAndBnrs.data.bnrs;\n modalvm.parkinglot = parkinglot;\n\n if (!parkinglot.id) {\n modalvm.parkinglot.bnr = modalvm.bnrs[0].key;\n modalvm.parkinglot.gnr = modalvm.gnrs[0].key;\n } else {\n modalvm.showCustomBnr = true;\n modalvm.showCustomGnr = true;\n }\n\n\n modalvm.cancel = function () {\n\n\n $uibModalInstance.close();\n };\n\n\n modalvm.ok = function () {\n\n $uibModalInstance.close(modalvm.parkinglot);\n };\n }\n];","export default [\n \"$uibModalInstance\",\n \"sectionApi\",\n \"toastr\",\n \"$state\",\n \"fromSection\",\n \"availableSections\",\n function(\n $uibModalInstance,\n sectionApi,\n toastr,\n $state,\n fromSection,\n availableSections\n ) {\n var modalvm = this;\n modalvm.fromSection = fromSection;\n modalvm.availableSections = availableSections;\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n\n modalvm.ok = function() {\n sectionApi\n .swapSection(modalvm.fromSection.id, modalvm.toSection.id)\n .then(() => {\n toastr.success(\"Kunde(r) flyttet til ny seksjon\");\n $state.go(\n \"main.projects.project.house.sections.section.index\",\n {\n ppId: modalvm.toSection.houseId,\n sectionId: modalvm.toSection.id\n }\n );\n $uibModalInstance.close();\n });\n };\n }\n];\n","import {\n filter\n} from \"lodash\";\nexport default [\"$log\", \"projcustomers\", \"$uibModalInstance\", function ($log, projcustomers, $uibModalInstance) {\n var modalvm = this;\n\n\n modalvm.projcustomers = filter(projcustomers.data, function (pc) {\n return pc.projCustStatus === 0 || pc.projCustStatus === 7;\n });\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n\n $uibModalInstance.close(modalvm.projcustomer);\n\n };\n\n}];","import parkinglotctrl from \"./parkinglot\";\nimport parkinglothtml from \"./parkinglot.html\";\nimport changesectionctrl from \"./changesection\";\nimport changesectionhtml from \"./changesection.html\";\nimport projcustomersctrl from \"./projcustomers\";\nimport projcustomershtml from \"./projcustomers.html\";\nimport { find, findIndex, forEach } from \"lodash\";\nimport saveFile from \"shared/saveFile\";\n\nvar signalR = window.signalR;\n\nexport default [\n \"$scope\",\n \"$log\",\n \"section\",\n \"toastr\",\n \"sectionApi\",\n \"customerApi\",\n \"$state\",\n \"$confirm\",\n \"sections\",\n \"$uibModal\",\n \"haveRoleFilter\",\n \"moment\",\n \"albumConfig\",\n function (\n $scope,\n $log,\n section,\n toastr,\n sectionApi,\n customerApi,\n $state,\n $confirm,\n sections,\n $uibModal,\n haveRole,\n moment,\n albumConfig\n ) {\n function projCustomerListModal() {\n var modalInstance = $uibModal.open({\n template: projcustomershtml,\n controllerAs: \"modalvm\",\n controller: projcustomersctrl,\n resolve: {\n projcustomers: [\n \"projectApi\",\n function (projectApi) {\n return projectApi.getProjectCustomers(\n section.data.section.projectPhaseProjTable\n );\n }\n ]\n }\n });\n\n return modalInstance;\n }\n function changeSectionModal(fromSection) {\n var modalInstance = $uibModal.open({\n template: changesectionhtml,\n controllerAs: \"modalvm\",\n backdrop: \"static\",\n controller: changesectionctrl,\n resolve: {\n fromSection: () => fromSection,\n\n availableSections: [\n \"projectApi\",\n \"$stateParams\",\n function (projectApi, $stateParams) {\n return projectApi\n .getSections($stateParams.id)\n .then((response) => {\n return response.data\n .filter((x) => x.reservedStatus === 0)\n .map((x) => ({\n sectionNum: x.sectionNum,\n id: x.id,\n houseId: x.projPhase,\n display: `Bygg ${x.projectPhaseHouseNum}, seksjon ${x.sectionNum}`\n }));\n });\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var vm = this;\n\n vm.setPreviewUrl = function () {\n vm.selectedPlan = find(vm.planUrls, {\n id: vm.section.planUrl\n });\n };\n\n vm.navigateToSection = function (sectionId) {\n sectionApi.saveSection(vm.section).then(function () {\n $state.go(\n \"main.projects.project.house.sections.section.index\",\n {\n sectionId: sectionId\n },\n {\n reload: true\n }\n );\n });\n };\n vm.previewPlanUrl = function () {\n toastr.info(vm.section.planUrl + \" Ikke ferdig enda\");\n };\n\n vm.removeFromSection = function () {\n $confirm({\n text:\n \"Er du sikker på at du vil fjerne kunden fra seksjonen? Dette kan ikke angres\"\n }).then(function () {\n sectionApi\n .leaveSection(vm.section.projCustomerId, vm.section.id)\n .then(function () {\n $state.reload();\n });\n });\n };\n vm.changeSection = () => {\n changeSectionModal(vm.section);\n };\n\n vm.currentCustomers = function (item) {\n return !item.to;\n };\n\n vm.reserveSection = function () {\n projCustomerListModal().result.then(function (projcust) {\n projcust.projSectionId = vm.section.id;\n\n sectionApi.reserveSection(projcust).then(function () {\n $state.reload();\n });\n });\n };\n vm.removeReservation = function () {\n $confirm({\n title: \"Fjerne kjøpstilbud\",\n text: \"Er du sikker på at du vil fjerne kjøpstilbudet?\"\n }).then(function () {\n sectionApi\n .reserveSection({\n id: vm.section.projCustomerId,\n projSectionId: -1\n })\n .then(function () {\n toastr.success(\"Kjøpstilbud fjernet!\");\n $state.reload();\n });\n });\n };\n vm.buySection = function () {\n vm.section.projCustomerProjSectionId = vm.section.id;\n vm.section.reservationStatuses = vm.reservationStatuses;\n if (vm.phaseReservations.length > 0) {\n vm.section.reservations = vm.section.reservations.concat(vm.phaseReservations);\n }\n forEach(vm.section.reservations, function (reservation) {\n if (reservation.type == 0) {\n reservation.id = 0;\n reservation.isReadOnly = true;\n }\n reservation.projPhase = null;\n reservation.projSection = vm.section.id;\n });\n sectionApi.buySectionModal(vm.section).then(function (res) {\n if (res.error) {\n toastr.error(res.error);\n return;\n }\n\n sectionApi.buySection(res).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.acceptPurchaseOffer = function () {\n var acceptionText = `Hei!\\n\\nDitt digitale kjøpetilbud på prosjekt ${vm.section.projectPhaseProjectName}, seksjon ${vm.section.sectionNum} er blitt akseptert. Ansvarlig selger vil ta kontakt med deg for å avtale tid for et kontraktsmøte. Du hører fra oss innen kort tid. Gratulerer med ny bolig!\\n\\nMed vennlig hilsen\\nTrysilhus`;\n customerApi.acceptOffer(acceptionText).result.then(function (dialogRes) {\n if (dialogRes != \"cancelled\") {\n vm.section.purchaseOfferAcceptionText = dialogRes;\n sectionApi.acceptSectionOffer(vm.section).then(function (res) {\n $state.reload();\n });\n }\n });\n };\n\n vm.rejectPurchaseOffer = function () {\n var rejectionText = \"\";\n if (vm.section.reservedStatus === 3) {\n rejectionText = `Hei!\\n\\nJeg viser til vår dialog vedrørende digitalt kjøpetilbud på prosjekt ${vm.section.projectPhaseProjectName}, seksjon ${vm.section.sectionNum}.\\n\\nDette er en bekreftelse på at kjøpetilbudet er avvist fordi . Ta kontakt hvis du har spørsmål.\\n\\nMed vennlig hilsen\\n${vm.section.projectPhaseProjectSalesResponsibleUserInfoContactPersonPersonFullName}\\nTrysilhus`;\n }\n else {\n rejectionText = `Hei!\\n\\nVi bekrefter at inngått avtale på prosjekt ${vm.section.projectPhaseProjectName}, seksjon ${vm.section.sectionNum} er annullert som avtalt.\\nTa kontakt hvis du har spørsmål\\n\\nMed vennlig hilsen\\n${vm.section.projectPhaseProjectSalesResponsibleUserInfoContactPersonPersonFullName}\\nTrysilhus`;\n }\n customerApi.rejectOffer(rejectionText).result.then(function (dialogRes) {\n if (dialogRes != \"cancelled\") {\n vm.section.purchaseOfferRejectionText = dialogRes;\n sectionApi.rejectSectionOffer(vm.section).then(function (res) {\n $state.reload();\n });\n }\n });\n };\n\n vm.downloadPurchaseOffer = function () {\n sectionApi.downloadSectionOffer(vm.section.id, vm.section.projCustomerId)\n .then(saveFile);\n };\n\n vm.save = function () {\n //Price selected from autocomplet\n if (!vm.section.price) {\n var price = document.getElementById(\"txtPrice\").value;\n if (price) {\n //remove \"Kr\", space and \",\" \n vm.section.price = price.replace(/\\s/g, \"\").replaceAll(\",\", \"\").replaceAll(\"kr\", \"\");\n }\n }\n //Price selected from autocomplet\n if (!vm.section.atticPrice) {\n\n var atticPrice = document.getElementById(\"txtAtticPrice\").value;\n if (atticPrice) {\n //remove \"Kr\", space and \",\" \n vm.section.atticPrice = atticPrice.replace(/\\s/g, \"\").replaceAll(\",\", \"\").replaceAll(\"kr\", \"\");\n }\n }\n\n sectionApi.saveSection(vm.section).then(function (res) {\n if (res.data.sectionBecomesUnavailable == true) {\n vm.hubConnection.off(\"SectionUnavailable\", vm.onSectionUnavailable);\n vm.hubConnection.invoke(\"SendSectionUnavailable\", vm.section.id).then(function () {\n $state.go(\n \"main.projects.project.house.sections\",\n {},\n {\n reload: true\n }\n );\n });\n }\n else\n $state.go(\n \"main.projects.project.house.sections\",\n {},\n {\n reload: true\n }\n );\n });\n };\n vm.delete = function () {\n $confirm({\n text: \"Vil du slette denne seksjonen ?\"\n }).then(function () {\n sectionApi.deleteSection(vm.section).then(function () {\n toastr.warning(\"Slettet\");\n $state.go(\"main.projects.project.house.sections\", null, {\n reload: true\n });\n });\n });\n };\n vm.parkingLotDialog = function (fn, obj) {\n if (fn === \"delete\") {\n $confirm({\n text: \"Er du sikker på at du vil slette parkeringsplassen ?\"\n }).then(function () {\n sectionApi.deleteParkingLot(obj).then(function () {\n $state.reload();\n });\n });\n } else {\n var modalInstance = $uibModal.open({\n template: parkinglothtml,\n controllerAs: \"modalvm\",\n resolve: {\n parkinglot: [\n function () {\n return obj;\n }\n ],\n gnrsAndBnrs: [\n \"projectApi\",\n function (projectApi) {\n return projectApi.gnrsAndBnrs(\n section.data.section.projectPhaseProjTable\n );\n }\n ]\n },\n size: \"lg\",\n controller: parkinglotctrl\n });\n\n modalInstance.result.then(function (parkinglot) {\n if (parkinglot) {\n parkinglot.status = fn === \"new\" ? 2 : 1;\n sectionApi.saveParkingLot(obj).then(function () {\n $state.reload();\n });\n }\n });\n }\n };\n\n vm.onSectionUnavailable = function () {\n $confirm({\n text:\n \"Seksjonen har fått ny salgsstatus. Vil du laste inn siden på nytt?\"\n }).then(function () {\n $state.reload();\n });\n };\n\n vm.$onInit = function () {\n\n var hubUrl = \"#{AlbumWeb.HubUrl}\";\n hubUrl = hubUrl.indexOf(\"#\") > -1 ? \"http://localhost:4496\" : hubUrl;\n\n vm.hubConnection = new signalR.HubConnectionBuilder().withUrl(hubUrl + \"/section\",\n {\n skipNegotiation: true,\n transport: signalR.HttpTransportType.WebSockets\n })\n .withAutomaticReconnect()\n .build();\n\n vm.hubConnection.on(\"SectionUnavailable\", vm.onSectionUnavailable);\n\n vm.hubConnection.start().then(function () {\n vm.hubConnection.invoke(\"ConnectHub\", section.data.section.id);\n }).catch(function (err) {\n console.error(\"HubConnection error\", err);\n });\n };\n\n $scope.$on(\"$destroy\", function () {\n vm.hubConnection.invoke(\"DisconnectHub\", section.data.section.id).then(function () {\n vm.hubConnection.off(\"SectionUnavailable\", vm.onSectionUnavailable);\n vm.hubConnection.stop();\n });\n });\n\n vm.section = section.data.section;\n vm.phaseReservations = section.data.phaseReservations;\n vm.reservationStatuses = section.data.reservationStatuses;\n vm.sectionTypes = section.data.sectionTypes;\n vm.modules = section.data.modules;\n vm.planUrls = section.data.planUrls;\n vm.users = section.data.users;\n vm.section.buildNum =\n vm.section.buildNum || vm.section.projectPhaseHouseNum;\n vm.onlinePurchaseInProgress = section.data.onlinePurchaseInProgress;\n\n vm.env = albumConfig.env;\n\n var SalesAdmin = haveRole([\"SalesAdmin\"], \"any\");\n\n //ng-disabled=\"!(('Admin'|haveRole) || ('SalesAdmin'|haveRole)) && !(vm.section.reservedStatus === 0 || vm.section.reservedStatus === -1)\"\n\n vm.reservedStatuses =\n Object.entries(section.data.reservedStatuses).map(([key, value]) => {\n return {\n id: key,\n name: value,\n disable:\n (vm.section.reservedStatus == 1 ||\n vm.section.reservedStatus == 3 ||\n vm.section.reservedStatus == 4 ||\n vm.section.reservedStatus == 5) ||\n (key == \"1\" || key == \"3\" || key == \"4\" || key == \"5\") ||\n (!SalesAdmin && key == \"0\") ||\n (!SalesAdmin && key == \"2\") ||\n (!SalesAdmin && key == \"-1\")\n };\n });\n\n vm.showRemove =\n vm.section.projCustomerId !== undefined &&\n haveRole([\"SalesAdmin\"], \"any\") &&\n !vm.section.reservedStatus == 3 &&\n !vm.section.reservedStatus == 4;\n\n vm.disableCompletionDeadline =\n !haveRole([\"SalesAdmin\", \"Sales\"], \"any\") || vm.section.reservedStatus > 0;\n\n vm.showswap =\n vm.section.projCustomerId !== undefined &&\n haveRole([\"SalesAdmin\"], \"any\") &&\n !vm.section.reservedStatus == 3 &&\n !vm.section.reservedStatus == 4;\n\n vm.showDelete =\n vm.section.projCustomerId === undefined &&\n haveRole([\"SalesAdmin\", \"Sales\", \"PRL\", \"PU\"], \"any\");\n\n var sectionsOnHouse = sections.data.sections;\n var sectionIndex = findIndex(sectionsOnHouse, function (s) {\n return s.id === vm.section.id;\n });\n\n //Find all previous owner\n vm.firstBuyer = vm.section.customers.filter((x) => x.to);\n //If no previous owner set current to first buyer\n if (vm.firstBuyer.length > 0) {\n var oldestDate = null;\n //Finde the first registrert owner\n vm.firstBuyer.forEach((x) => {\n if (oldestDate) {\n var isOldest = moment(oldestDate).isBefore(x.from);\n if (!isOldest) {\n oldestDate = x.from;\n }\n } else {\n oldestDate = x.from;\n }\n });\n //Find all owners with the oldest date.\n vm.firstBuyer = vm.firstBuyer.filter(\n (x) => moment(x.from).isSame(oldestDate, \"day\") && x.to\n );\n } else {\n vm.firstBuyer = vm.section.customers;\n }\n\n vm.nav = {\n nextSection:\n sectionIndex + 1 > sectionsOnHouse.length - 1\n ? null\n : sectionsOnHouse[sectionIndex + 1].id,\n prevSection:\n sectionIndex - 1 < 0\n ? null\n : sectionsOnHouse[sectionIndex - 1].id\n };\n\n vm.section.planUrl = parseInt(vm.section.planUrl);\n\n vm.setPreviewUrl();\n vm.addCustomer = () => {\n $state.go(\n \"main.projects.project.house.sections.section.customers\",\n {\n openadd: true\n }\n );\n };\n\n vm.trafficLights = [];\n vm.buySectionOnWebIsActive = false;\n sectionApi.getTrafficLights(vm.section.id).then(function (res) {\n vm.trafficLights = res.data;\n console.info(res.data);\n vm.buySectionOnWebIsActive = vm.buySectionOnWebActive(res.data);\n });\n\n\n vm.buySectionOnWeb = function (sectionInfo) {\n var url = \"\";\n if (vm.env === \"dev\") {\n url = \"http://localhost:8888\";\n } else {\n url = \"https://mt2.trysilhus.no\";\n }\n url = url + `/design/${sectionInfo.id}/intro`;\n window.open(url, \"_blank\");\n };\n vm.buySectionOnWebActive = function (trafficLights) {\n var readyForWeb = trafficLights.find(x => x.dependency === 0);\n if (readyForWeb && readyForWeb.ok) {\n return true;\n }\n\n return false;\n };\n\n }\n];\n","export default \"
\\n

Flytt kunde til annen seksjon

\\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n\\n\\n\\n
\\n\\n \\n \\n
\\n
\";","export default \"
\\n

Velg kunde

\\n
\\n
\\n\\n\\n\\n
\\n \\n\\n \\n {{$select.selected.customerPersonFullName}}\\n \\n
\\n
\\n
\\n\\n\\n
\\n\\n\\n\\n\\n
\\n
\\n \\n \\n
\";","export default \"\\n
\\n

Parkeringsplass

\\n
\\n
\\n \\n\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n \\n Skriv inn eget\\n
\\n
\\n \\n \\n \\n Skriv inn eget\\n
\\n
\\n \\n \\n
\\n\\n\\n
\\n\\n \\n \\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.house.sections.section.index\", {\n\n url: \"/sectionindex\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Seksjon\" + \" {{section.data.section.sectionNum}}\"\n },\n views: {\n \"sectioncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n
\\n
\\n

Seksjon {{vm.section.sectionNum}}\\n

\\n

\\n Kjøpstilbud mottatt fra:\\n Kjøper:\\n Digitalt kjøpstilbud mottatt fra:\\n Digitalt kjøpstilbud akseptert til:\\n Digitalt kjøpstilbud avvist til:\\n \\n {{cust.customerPerson.fullName}},\\n \\n

\\n

\\n Nåværende eier:\\n \\n {{cust.customerPerson.fullName}},\\n \\n

\\n

\\n Leilighetsnummer: {{vm.section.apartmentKey}}\\n

\\n
\\n \\n
\\n
\\n
\\n\\n
\\n
\\n

Seksjon info

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n
\\n\\n

Pris & Salg

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n\\n \\n\\n
\\n\\n
\\n\\n\\n\\n
\\n

Leilighet

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n \\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n Kontaktinfo beboer\\n skal ikke fylles ut, legg til\\n kunde isteden.\\n
\\n
\\n\\n

Trafikklys

\\n
\\n Laster inn..\\n
\\n
    \\n
  • \\n {{tl.text}}\\n
      \\n
    • \\n {{tld.text}}\\n
    • \\n
    \\n
  • \\n
\\n
\\n\\n\\n\\n\\n\";","import { forEach, includes, map, filter } from \"lodash\";\nexport default [\n \"$uibModalInstance\",\n \"$log\",\n \"projectApi\",\n \"projectOptions\",\n \"sectionOptions\",\n \"section\",\n function (\n $uibModalInstance,\n $log,\n projectApi,\n projectOptions,\n sectionOptions,\n section\n ) {\n var modalvm = this;\n modalvm.projectOptions = [];\n var alreadyOnSection = map(\n sectionOptions.filter((x) => !x.isDeleted),\n \"optionId\"\n );\n\n // const alreadyConfirmed = sectionOptions\n // .filter((x) => {\n // return x.isConfirmed && x.type === 2;\n // })\n // .map((y) => {\n // return y.categoryName;\n // });\n\n forEach(projectOptions.data, function (po) {\n // if (\n // !(\n // includes(alreadyConfirmed, po.categoryName) && po.type === 2\n // ) &&\n // !includes(alreadyOnSection, po.optionId) &&\n // po.type !== 1 &&\n // po.categoryName\n // ) {\n // po.selected = false;\n // modalvm.projectOptions.push(po);\n // }\n \n //If section is not soldt. Then options deadlineExpired to add\n if (\n (section.reservedStatus !== 2 ? po.deadlineExpired : true) &&\n !includes(alreadyOnSection, po.optionId) &&\n po.type !== 1 &&\n po.categoryName\n ) {\n po.selected = false;\n modalvm.projectOptions.push(po);\n }\n });\n\n modalvm.packages = function () {\n $uibModalInstance.close({\n packages: true\n });\n };\n\n modalvm.toogleSelected = function (opt) {\n opt.selected = !opt.selected;\n\n if (opt.selected && opt.type == 2) {\n var selectedOpts = modalvm.projectOptions.filter(\n (item) => item.selected == true && item.id != opt.id\n );\n\n forEach(selectedOpts, function (selectedOpt) {\n if (\n selectedOpt.categoryName == opt.categoryName &&\n opt.categoryName != null &&\n selectedOpt.type == opt.type\n ) {\n selectedOpt.selected = !selectedOpt.selected;\n }\n });\n }\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n var selectedCollection = filter(modalvm.projectOptions, function (\n po\n ) {\n return po.selected;\n });\n\n $uibModalInstance.close(selectedCollection);\n };\n }\n];\n","export default [\"$uibModalInstance\", \"$log\", \"projectApi\", \"packages\",\n function ($uibModalInstance, $log, projectApi, packages) {\n\n var modalvm = this;\n modalvm.packages = packages.data;\n\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n\n\n $uibModalInstance.close(modalvm.selectedPackage);\n\n };\n\n\n }\n];","import addoptionhtml from \"./addoption.html\";\nimport addoptionctrl from \"./addoption\";\nimport addpackagehtml from \"./addpackage.html\";\nimport addpackagectrl from \"./addpackage\";\n\nimport { map } from \"lodash\";\nexport default [\n \"$log\",\n \"store\",\n \"section\",\n \"options\",\n \"optionsMt\",\n \"$uibModal\",\n \"$state\",\n \"sectionApi\",\n \"$confirm\",\n \"albumConfig\",\n function (\n $log,\n store,\n section,\n options,\n optionsMt,\n $uibModal,\n $state,\n sectionApi,\n $confirm,\n albumConfig\n ) {\n function openAddOptionModal() {\n var modalInstance = $uibModal.open({\n template: addoptionhtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n controller: addoptionctrl,\n resolve: {\n projectOptions: [\n \"projectApi\",\n function () {\n return sectionApi.getAvailableSectionOptions(\n section.data.section.id\n );\n }\n ],\n sectionOptions: [\n function () {\n return options.data;\n }\n ],\n section: [\n function () {\n return vm.section;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n function openAddPackageOptionModal() {\n var modalInstance = $uibModal.open({\n template: addpackagehtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n controller: addpackagectrl,\n resolve: {\n packages: [\n \"optionApi\",\n function (optionApi) {\n return optionApi.getOptionPackages();\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var vm = this;\n vm.section = section.data.section;\n vm.profile = store.get(\"profile\");\n vm.options = options.data.filter((x) => {\n return x.type !== 1;\n });\n\n vm.canConfirm = options.data.filter((x) => !x.isConfirmed).length > 0;\n // vm.sum =\n // sum(\n // vm.options\n // .filter((x) => x.isDeleted === false)\n // .map((x) => (x.priceChange > -1 ? x.priceChange : x.price))\n // ) || 0;\n vm.optionsIsAvailableForMt = optionsMt.data.isAvailable;\n vm.optionsAvailableAfterDt = optionsMt.data.availableAfterDate;\n\n //Make copy of options. vi can no change in options without change vm.optionFilterData\n vm.optionFilterData = JSON.parse(JSON.stringify(vm.options));\n\n //Find all item that is deleted and added but not confirmed\n vm.inCart = vm.optionFilterData.filter((x) => {\n return !x.isConfirmed;\n });\n //Remove when item is confirmed => deleted => added again\n vm.inCart = vm.inCart.filter((x) => {\n var isDuplicate = vm.inCart.some(\n (y) => y.optionId === x.optionId && y.id !== x.id\n );\n return !isDuplicate ? x : null;\n });\n vm.sumCart = vm.inCart.reduce(function (accumulator, item) {\n if (item.isDeleted) {\n return (\n accumulator -\n (item.priceChange ? item.priceChange : item.price)\n );\n } else {\n return (\n accumulator +\n (item.priceChange ? item.priceChange : item.price)\n );\n }\n }, 0);\n\n //Find all options that is confirmed or deleted (deleted from confirme)\n vm.options = vm.options.filter((x) => {\n //sets delited to confirmed also\n if (x.isDeleted) {\n x.isConfirmed = true;\n }\n return x.isConfirmed;\n });\n\n vm.sumConfirmed = vm.options.reduce(function (accumulator, item) {\n return (\n accumulator + (item.priceChange != null ? item.priceChange : item.price)\n );\n }, 0);\n\n vm.deleteOption = function (option) {\n $confirm({\n text: \"Vil du slette tilvalget?\"\n }).then(function () {\n sectionApi.deleteOption(option).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.changePrice = function (option) {\n option.priceChange = option.priceChange || option.price;\n option.priceChanging = true;\n setTimeout(() => {\n var input = document.getElementById(\"inputPrice_\" + option.id);\n input.focus();\n }, 500);\n };\n\n vm.priceChangeKeyUp = function (option, event) {\n if (event.which === 13) {\n option.priceChanging = false;\n if (option.priceChange != undefined) {\n option.priceChange = option.priceChange.replace(\",\", \".\");\n option.priceChange = parseFloat(option.priceChange);\n if (isNaN(option.priceChange)) {\n option.priceChange = null;\n }\n } else option.priceChange = null;\n\n sectionApi.changeOptionPrice(option).then(() => {\n $state.reload();\n });\n }\n if (event.key === \"Escape\") {\n $state.reload();\n }\n };\n\n vm.addOption = function () {\n openAddOptionModal().result.then(function (options) {\n if (options.packages) {\n openAddPackageOptionModal().result.then(function (\n selectedPackage\n ) {\n sectionApi\n .addPackageToSection({\n packageId: selectedPackage.id,\n sectionId: vm.section.id\n })\n .then(function () {\n $state.reload();\n });\n });\n\n return;\n }\n\n if (options) {\n var sectionOptions = map(options, function (po) {\n return {\n projSectionId: vm.section.id,\n id: po.id\n };\n });\n\n sectionApi\n .createSectionOptions(sectionOptions)\n .then(function () {\n $state.reload();\n });\n }\n });\n };\n\n vm.confirmOptions = function () {\n $confirm({\n title: \"Bekreft tilvalg\",\n text:\n \"Kvittering på bekreftet tilvalg vil bli sendt til kunde på e-post. Er du sikker på at du vil bekrefte?\"\n }).then(function () {\n sectionApi.confirmOptions(vm.section.id).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.openStore = function () {\n window.open(\n albumConfig.apiAddress +\n \"/section/\" +\n vm.section.id +\n \"/options/store?personId=\" + vm.profile.personId,\n \"_blank\"\n );\n };\n }\n];\n","export default \"\\n
\\n

Velg tilvalg

\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnTypeKategoriPrisValgt
\\n \\n \\n \\n \\n \\n
\\n Utgått! \\n {{opt.name}}\\n \\n {{opt.typeName}}\\n \\n {{opt.categoryName}}\\n Kr\\n {{opt.price | number :0}}
\\n
\\n
\\n \\n \\n \\n
\";","export default \"
\\n

Velg tilvalgspakke

\\n
\\n
\\n
\\n \\n \\n
\\n

\\n Ingen pakke valgt enda\\n

\\n
\\n\\n

Kr {{modalvm.selectedPackage.price | number:0}}

\\n\\n
    \\n
  • {{o.name}}
  • \\n
\\n
\\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./options.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.options\", {\n url: \"/sectionoptions\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Tilvalg\"\n },\n resolve: {\n options: [\"sectionApi\", \"$stateParams\", function (sectionApi, $stateParams) {\n return sectionApi.getSectionOptions($stateParams.sectionId);\n }],\n optionsMt: [\"sectionApi\", \"$stateParams\", function (sectionApi, $stateParams) {\n return sectionApi.getOptionsIsAvailableForMt($stateParams.sectionId);\n }]\n },\n views: {\n \"sectioncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\tTilvalgsbestilling er ikke tilgjengelig for kunde i Mitt Trysilhus. Er ikke tilgjengelig for kunder som\\n\\t\\t\\thar bestilt tilvalg før {{ vm.optionsAvailableAfterDt | date }}\\n\\t\\t
\\n\\n\\t
\\n\\n\\t
\\n\\n\\n\\t\\t
\\n\\t\\t\\t

Bestilt

\\n\\t\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
NavnTypeKategoriNotatBeskrivelsePrisOpprettetOpprettet avBekreftetBekreftet av
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
{{o.name}}\\n\\t\\t\\t\\t\\t\\t{{o.name}}\\n\\t\\t\\t\\t\\t{{o.typeName}}{{o.categoryName}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tENTER=Bekreft, ESC=Avbryt\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t -1}\\\">Kr {{o.price | number : 0}}\\n\\t\\t\\t\\t\\t\\t -1\\\">Kr {{o.priceChange | number : 0}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t{{o.createdDate | date}}{{o.createdBy}}{{o.isConfirmed ? (o.confirmedDate | date) : 'Nei'}}{{o.confirmedBy}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
Total \\n\\t\\t\\t\\t\\t\\tKr {{ vm.sumConfirmed | number : 0 }}\\n\\t\\t\\t\\t\\t
\\n\\t
\\n\\n\\t\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

Handlekurv

\\n\\t\\t\\tVarsel om ubekreftede tilvalg blir sendt til kunde per e-post 30, 14 og 3 dager før\\n\\t\\t\\t\\tfrist går ut.\\n\\t\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
NavnTypeKategoriNotatBeskrivelsePrisOpprettetOpprettet avBekreftetBekreftet av
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
{{o.name}}\\n\\t\\t\\t\\t\\t\\t{{o.name}}\\n\\t\\t\\t\\t\\t{{o.typeName}}{{o.categoryName}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tENTER=Bekreft, ESC=Avbryt\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t -1}\\\">Kr {{o.price | number : 0}}\\n\\t\\t\\t\\t\\t\\t -1\\\">Kr {{o.priceChange | number : 0}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t{{o.createdDate | date}}{{o.createdBy}}{{o.isConfirmed ? (o.confirmedDate | date) : 'Nei'}}{{o.confirmedBy}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
Sub total \\n\\t\\t\\t\\t\\t\\tKr {{ vm.sumCart | number : 0 }}\\n\\t\\t\\t\\t\\t
\\n\\t
\\n\\n\\n\\n
\";","import { forEach } from \"lodash\";\nexport default [\n \"$log\",\n \"optionApi\",\n \"sectionOption\",\n \"$state\",\n \"projectApi\",\n \"$stateParams\",\n function($log, optionApi, sectionOption, $state, projectApi, $stateParams) {\n var vm = this;\n vm.sectionOption = sectionOption.data.sectionOption;\n vm.sectionOption.priceCalc = optionApi.setPriceCalc(\n vm.sectionOption,\n vm.sectionOption.costs\n );\n vm.accounts = sectionOption.data.accounts;\n\n vm.goToProjectOption = function() {\n projectApi.getOptions($stateParams.id).then(function(poptions) {\n forEach(poptions.data, function(po) {\n if (po.optionId === vm.sectionOption.optionId) {\n $state.go(\"main.projects.project.options.option\", {\n projectOptionId: po.id\n });\n }\n });\n });\n };\n\n vm.priceCalcUpdate = function(pc) {\n vm.sectionOption.amountEnt = pc.amountEnt;\n vm.sectionOption.amountPercentageEnt = pc.amountPercentageEnt;\n vm.sectionOption.amountPercentageSales = pc.amountPercentageSales;\n vm.sectionOption.amountSales = pc.amountSales;\n vm.sectionOption.amountTax = pc.amountTax;\n vm.sectionOption.price = pc.price;\n };\n vm.saveOptionCalc = function() {\n optionApi.saveSectionOptionCalc(vm.sectionOption).then(function() {\n $state.reload();\n });\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./option.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\n \"main.projects.project.house.sections.section.options.option\",\n {\n url: \"/{sectionOptionId}\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{sectionOption.data.sectionOption.name}}\"\n },\n\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n sectionOption: [\n \"sectionApi\",\n \"$stateParams\",\n function(sectionApi, $stateParams) {\n return sectionApi.getOption(\n $stateParams.sectionOptionId\n );\n }\n ]\n }\n }\n );\n }\n];\n","export default \"
\\n
\\n

Seksjon tilvalg: {{vm.sectionOption.name}}

\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n\\n
\\n

Utregning

\\n \\n \\n
\";","import { forEach, sum } from \"lodash\";\nimport moment from \"moment\";\n\nvar ncsColor = window.ncsColor;\n\nexport default [\n \"$log\",\n \"store\",\n \"section\",\n \"colorOptions\",\n \"colorOptionsReadyResult\",\n \"$uibModal\",\n \"$state\",\n \"sectionApi\",\n \"$confirm\",\n \"albumConfig\",\n function (\n $log,\n store,\n section,\n colorOptions,\n colorOptionsReadyResult,\n $uibModal,\n $state,\n sectionApi,\n $confirm,\n albumConfig\n ) {\n\n var vm = this;\n\n vm.section = section.data.section;\n vm.profile = store.get(\"profile\");\n\n vm.canConfirm = colorOptions.data.filter((x) => !x.isConfirmed).length > 0;\n forEach(colorOptions.data, function (colorOption) {\n colorOption.hex = ncsColor.hex(colorOption.ncs);\n colorOption.ncs = colorOption.ncs.replace(\"NCS \", \"\");\n });\n\n vm.confirmedColorOptions = colorOptions.data.filter(x => x.isConfirmed == true);\n vm.unconfirmedColorOptions = colorOptions.data.filter(x => x.isConfirmed == false);\n\n vm.sumConfirmed = sum(vm.confirmedColorOptions.filter(x => x.price > 0).map(x => x.price));\n vm.sumCart = sum(vm.unconfirmedColorOptions.filter(x => x.price > 0).map(x => x.price));\n\n vm.errorMessage = null;\n vm.canEdit = colorOptionsReadyResult.data.state == 0;\n\n if (!vm.canEdit) {\n vm.errorMessage = colorOptionsReadyResult.data.errorMessage;\n }\n\n vm.deleteColorOption = function (option) {\n $confirm({\n text: \"Vil du slette fargevalget?\"\n }).then(function () {\n sectionApi.deleteColorOption(option).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.confirmColorOptions = function () {\n $confirm({\n title: \"Bekreft fargevalg\",\n text:\n \"Kvittering på bekreftet fargevalg vil bli sendt til kunde på e-post. Er du sikker på at du vil bekrefte?\"\n }).then(function () {\n sectionApi.confirmColorOptions(vm.section.id).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.openStore = function () {\n window.open(\n albumConfig.apiAddress +\n \"/section/\" +\n vm.section.id +\n \"/coloroptions/store?personId=\" + vm.profile.personId,\n \"_blank\"\n );\n };\n\n vm.changePrice = function (colorOption) {\n colorOption.priceChanging = true;\n setTimeout(() => {\n var input = document.getElementById(\"inputPrice_\" + colorOption.id);\n input.focus();\n }, 500);\n };\n\n vm.priceChangeKeyUp = function (colorOption, event) {\n if (event.which === 13) {\n colorOption.priceChanging = false;\n if (colorOption.price != undefined) {\n colorOption.price = colorOption.price.replace(\",\", \".\");\n colorOption.price = parseFloat(colorOption.price);\n if (isNaN(colorOption.price)) {\n colorOption.price = 2000;\n }\n } else colorOption.price = 2000;\n\n sectionApi.changeColorOptionPrice(colorOption).then(() => {\n $state.reload();\n });\n }\n if (event.key === \"Escape\") {\n $state.reload();\n }\n };\n vm.colorAvalible = function () {\n //If section is not sold and time is not out then user cant change color\n if (vm.section.reservedStatus !== 2 && \n moment(colorOptionsReadyResult.data.deadline).isAfter(moment().format())) {\n return false;\n }\n return true;\n };\n }\n];\n","export default [\n \"$uibModalInstance\",\n \"section\",\n \"sectionApi\",\n \"$log\",\n \"toastr\",\n \"systemApi\",\n \"searchApi\",\n function(\n $uibModalInstance,\n section,\n sectionApi,\n $log,\n toastr,\n systemApi,\n searchApi\n ) {\n var modalvm = this;\n modalvm.addressType = \"new\";\n modalvm.mode = -1;\n\n modalvm.readOnlyNote =\n section.contactInfoNote && section.contactInfoNote.length > 3\n ? section.contactInfoNote\n : undefined;\n modalvm.customerPerson = {};\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n\n modalvm.resetNote = () => {\n if (modalvm.resetProjSectionContactInfoNote) {\n modalvm.projSectionContactInfoNote = \"REMOVE\";\n } else {\n modalvm.projSectionContactInfoNote = modalvm.readOnlyNote;\n }\n };\n\n modalvm.searchExistingCustomers = search => {\n if (search) {\n searchApi.searchCustomers(search).then(response => {\n modalvm.existingCustomers = response.data;\n });\n }\n };\n\n modalvm.addressChange = () => {\n switch (modalvm.addressType) {\n case \"section\":\n modalvm.customerPerson.address = section.streetAddress;\n modalvm.customerPerson.postCodeId =\n section.projectPhaseProjectPostCodeId;\n break;\n case \"primary\":\n modalvm.customerPerson.address =\n section.projCustomerCustomerPersonAddress;\n modalvm.customerPerson.postCodeId =\n section.projCustomerCustomerPersonPostCodeId;\n break;\n case \"new\":\n modalvm.customerPerson.address = undefined;\n modalvm.customerPerson.postCodeId = undefined;\n modalvm.customerPerson.postCodeDisplay = undefined;\n break;\n }\n\n switch (modalvm.addressType) {\n case \"section\":\n case \"primary\":\n var postCodeId = Number(modalvm.customerPerson.postCodeId);\n\n systemApi.getPostCodeById(postCodeId).then(response => {\n if (response.data) {\n modalvm.customerPerson.postCodeDisplay =\n response.data.display;\n }\n });\n\n /* systemApi.getPostCodes(true).then(function(res) {\n var found = find(res.data, function(pc) {\n return pc.id === postCodeId;\n });\n if (found) {\n modalvm.customerPerson.postCodeDisplay =\n found.display;\n }\n }); */\n\n break;\n }\n };\n\n modalvm.ok = function() {\n switch (modalvm.mode) {\n case -1:\n modalvm.projSectionId = section.id;\n\n sectionApi.addSectionCustomer(modalvm).then(\n () => {\n $uibModalInstance.close(modalvm);\n },\n err => {\n $log.error(err);\n toastr.error(\n \"Noe gikk galt med å opprette ny kunde!\"\n );\n }\n );\n break;\n case -2:\n var request = {\n customerId: modalvm.existingCustomer.id,\n from: modalvm.from,\n changePrimaryOwner: modalvm.changePrimaryOwner\n };\n\n sectionApi.addCustomerToSection(section.id, request).then(\n response => {\n $uibModalInstance.close(response);\n },\n err => {\n $log.error(err);\n toastr.error(\n \"Noe gikk galt med å opprette ny kunde!\"\n );\n }\n );\n\n break;\n }\n };\n }\n];\n","import addcustomerhtml from \"./addcustomer.html\";\nimport addcustomerctrl from \"./addcustomer\";\nexport default [\n \"$log\",\n \"section\",\n \"$uibModal\",\n \"$confirm\",\n \"sectionApi\",\n \"$state\",\n \"$stateParams\",\n function ($log, section, $uibModal, $confirm, sectionApi, $state, $stateParams) {\n function openAddCustomersModal(section) {\n var modalInstance = $uibModal.open({\n template: addcustomerhtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n controller: addcustomerctrl,\n resolve: {\n section: [\n function () {\n return section;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var vm = this;\n vm.customers = section.data.section.customers;\n\n\n vm.addCustomer = () => {\n\n openAddCustomersModal(section.data.section).result.then(function (newcustomer) {\n if (newcustomer) {\n\n var params = {\n id: $stateParams.id,\n ppId: $stateParams.ppId,\n sectionId: $stateParams.sectionId,\n openadd: false\n };\n\n\n $state.go(\"main.projects.project.house.sections.section.customers\", params, {\n reload: true\n });\n\n }\n });\n };\n\n vm.removeCustomer = (projCustomerId, personFullName) => {\n $confirm({\n text:\n `Er du sikker på at du vil fjerne kunde '${personFullName}' fra seksjonen? Dette kan ikke angres`\n }).then(function () {\n sectionApi\n .leaveSection(projCustomerId, $stateParams.sectionId)\n .then(function () {\n $state.reload();\n });\n });\n };\n\n if ($stateParams.openadd) {\n vm.addCustomer();\n }\n }\n];","export default \"
\\n

Legg til kunde på seksjon

\\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n\\n\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{$select.selected.person.fullName}}\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n\\n\\n\\n\\n
\\n
\\n\\n
\\n
{{modalvm.readOnlyNote}}
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\";","export default [\n \"$log\",\n \"sectionCustomer\",\n \"sectionApi\",\n \"$state\",\n function ($log, sectionCustomer, sectionApi, $state) {\n var vm = this;\n vm.customer = sectionCustomer.data;\n\n\n vm.save = () => {\n sectionApi.saveSectionCustomer(vm.customer).then(() => {\n $state.reload();\n });\n };\n }\n];","export default [\"section\", \"$log\", \"financeStatuses\", \"sectionApi\", \"$state\",\n function (section, $log, financeStatuses, sectionApi, $state) {\n\n var vm = this;\n vm.section = section.data.section;\n vm.financeStatuses = financeStatuses.data;\n vm.save = function () {\n\n\n var finances = [{\n loanType: 0,\n financeStatus: vm.section.financeHB,\n date: vm.section.financeHBDate,\n amount: vm.section.hbLoan\n },\n {\n loanType: 1,\n financeStatus: vm.section.financeStart,\n date: vm.section.financeStartDate,\n amount: vm.section.startLoan\n\n },\n {\n loanType: 2,\n financeStatus: vm.section.financePrivate,\n date: vm.section.privateLoanDate,\n amount: vm.section.privateLoan\n }\n ];\n\n\n sectionApi.saveFinances(vm.section.id, finances).then(function () {\n $state.reload();\n });\n };\n\n }\n];","import { forEach } from \"lodash\";\nexport default [\n \"$log\",\n \"section\",\n \"contracts\",\n \"$uibModal\",\n \"$state\",\n \"sectionApi\",\n \"$stateParams\",\n \"sumOfValueFilter\",\n \"$confirm\",\n function(\n $log,\n section,\n contracts,\n $uibModal,\n $state,\n sectionApi,\n $stateParams,\n sumOfValueFilter,\n $confirm\n ) {\n var vm = this;\n\n vm.section = section.data.section;\n vm.contracts = contracts.data;\n\n forEach(vm.contracts, function(c) {\n c.contractTotal = sumOfValueFilter(c.changes, \"price\");\n });\n\n vm.deleteContract = function(contract) {\n $confirm({\n text: \"Vil du slette kontrakten?\"\n }).then(function() {\n sectionApi.deleteContract(contract).then(function() {\n $state.reload();\n });\n });\n };\n }\n];\n","export default [\n \"$log\",\n \"sectionApi\",\n \"$state\",\n \"$stateParams\",\n \"contract\",\n \"toastr\",\n \"$confirm\",\n \"haveRoleFilter\",\n function(\n $log,\n sectionApi,\n $state,\n $stateParams,\n contract,\n toastr,\n $confirm,\n haveRole\n ) {\n var vm = this;\n vm.contract = contract.data;\n\n vm.showAccept =\n vm.contract.status !== 2 &&\n haveRole(\"SalesAdmin\") &&\n !vm.contract.accepted;\n\n vm.save = function() {\n sectionApi.saveContract(vm.contract).then(function(res) {\n $state.go(\n \"main.projects.project.house.sections.section.changes.contract\",\n {\n contractId: res.data.id\n },\n {\n reload: true\n }\n );\n });\n };\n\n vm.deleteChange = function(change) {\n $confirm({\n text: \"Vil du slette forandringen fra kontrakten?\"\n }).then(function() {\n sectionApi.deleteChange(change).then(function() {\n $state.reload();\n });\n });\n };\n\n vm.accept = function(accept) {\n sectionApi\n .acceptChangeContract({\n id: vm.contract.id,\n accepted: accept\n })\n .then(function() {\n $state.reload();\n });\n };\n }\n];\n","export default [\n \"$log\",\n \"$state\",\n \"$stateParams\",\n \"change\",\n \"optionApi\",\n \"sectionApi\",\n function($log, $state, $stateParams, change, optionApi, sectionApi) {\n var vm = this;\n vm.change = change.data.change;\n\n vm.change.priceCalc = optionApi.setPriceCalc(\n vm.change,\n vm.change.calculations\n );\n vm.accounts = change.data.accounts;\n\n vm.priceCalcUpdate = function(pc) {\n vm.change.amountEnt = pc.amountEnt;\n vm.change.amountPercentageEnt = pc.amountPercentageEnt;\n vm.change.amountPercentageSales = pc.amountPercentageSales;\n vm.change.amountSales = pc.amountSales;\n vm.change.amountTax = pc.amountTax;\n vm.change.price = pc.price;\n };\n\n vm.saveChange = function() {\n sectionApi.saveChange(vm.change).then(function() {\n $state.go(\n \"main.projects.project.house.sections.section.changes.contract\",\n {},\n {\n reload: true\n }\n );\n });\n };\n }\n];\n","import {\n join\n} from \"lodash\";\nexport default [\n \"documents\",\n \"myContract\",\n \"$log\",\n \"section\",\n function (documents, myContract, $log, section) {\n var vm = this;\n\n vm.section = section.data.section;\n\n vm.tags = join([vm.section.id, vm.section.projCustomerCustomerId], \",\");\n\n vm.documents = documents.data;\n vm.myContract = myContract.data;\n vm.myContract.sectionId = vm.section.id;\n }\n];","import saveFile from \"shared/saveFile\";\nimport angular from \"angular\";\nimport { maxBy, filter } from \"lodash\";\nexport default [\n \"$log\",\n \"settlement\",\n \"sectionApi\",\n \"$state\",\n \"ibmApi\",\n\n function ($log, settlement, sectionApi, $state, ibmApi) {\n var vm = this;\n vm.settlement = settlement.data;\n vm.hasJointDebt =\n vm.settlement && vm.settlement.transactions &&\n vm.settlement.transactions.filter(tr => tr.transactionCategory === 5).length > 0;\n\n vm.settlement.updatedDate = vm.settlement.changedDate || vm.settlement.createdDate;\n\n vm.downloadSettlement = function () {\n ibmApi.download(vm.settlement.documentId).then(saveFile);\n };\n\n vm.deleteSettlement = function () {\n vm.settlement.status = -1;\n sectionApi.saveSettlement(vm.settlement).then(function () {\n $state.reload();\n });\n };\n\n vm.saveSettlement = function () {\n vm.settlement.status = vm.settlement.status === 0 ? 1 : 2;\n\n sectionApi.saveSettlement(vm.settlement).then(function () {\n $state.reload();\n });\n };\n vm.addTransaction = function (type) {\n var index = maxBy(\n filter(vm.settlement.transactions, {\n transactionCategory: type\n }),\n \"index\"\n );\n\n vm.settlement.transactions.push({\n transDate: new Date(),\n transactionCategory: type,\n amount: 0,\n index: index ? index.index + 1 : 1,\n status: 2\n });\n };\n vm.change = function (tr) {\n tr.status = tr.status === 2 ? 2 : 1;\n };\n vm.delete = function (tr, opt) {\n if (opt) {\n tr.oldStatus = angular.copy(tr.status);\n tr.status = -2;\n } else {\n tr.status = -1;\n }\n };\n vm.undo = function (tr) {\n tr.status = angular.copy(tr.oldStatus);\n };\n\n vm.filterOptions = function (tr) {\n if (tr.transactionCategory === 2 && tr.status !== -2) {\n return true;\n } else {\n return false;\n }\n };\n\n vm.totalJointDebt = function (tr) {\n if (tr.transactionCategory === 5) {\n return true;\n }\n return false;\n };\n\n vm.totalTransactionSum = function (tr) {\n if (\n tr.transactionCategory === 1 ||\n tr.transactionCategory === 4 ||\n tr.transactionCategory === 5 ||\n (tr.transactionCategory === 2 && tr.status !== -2)\n ) {\n return true;\n } else {\n return false;\n }\n };\n }\n];\n","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"toastr\",\n \"sig\",\n \"readonly\",\n \"personsPresent\",\n \"$timeout\",\n function(\n $uibModalInstance,\n $log,\n toastr,\n sig,\n readonly,\n personsPresent,\n $timeout\n ) {\n var modalvm = this;\n modalvm.readonly = readonly;\n modalvm.dataUrl = sig.dataUrl;\n modalvm.fullName = sig.fullName;\n modalvm.uuid = sig.uuid;\n modalvm.personsPresent = personsPresent;\n\n $timeout(function() {\n $(\"canvas\").on(\"mouseleave\", e => {\n $log.info(\"mouse left signature canvas\");\n $(e.currentTarget).trigger(\"mouseup\");\n });\n }, 50);\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.delete = function() {\n $uibModalInstance.close({\n delete: true,\n uuid: modalvm.uuid\n });\n };\n\n modalvm.ok = function() {\n if (!modalvm.fullName) {\n toastr.warning(\"Du må fylle inn navn\");\n return;\n }\n\n var signature = modalvm.accept();\n\n signature.fullName = modalvm.fullName;\n\n if (signature.isEmpty || !signature.dataUrl) {\n toastr.warning(\"Du må signere\");\n return;\n }\n\n if (modalvm.uuid === undefined) {\n signature.uuid = Date.now();\n } else {\n signature.uuid = modalvm.uuid;\n }\n\n signature.updated = new Date();\n\n $uibModalInstance.close(signature);\n };\n }\n];\n","export default \"
\\n

Signer protokoll

\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n \\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n \\n
\";","import saveFile from \"shared/saveFile\";\nimport protocolsignaturectrl from \"shared/protocolsignature\";\nimport protocolsignaturehtml from \"shared/protocolsignature.html\";\nimport { findIndex, maxBy, find, get, forEach, remove, reject, isArray } from \"lodash\";\nexport default [\n \"$uibModal\",\n \"$log\",\n \"$state\",\n \"protocolResponse\",\n \"$stateParams\",\n \"sectionApi\",\n \"$localForage\",\n \"toastr\",\n \"moment\",\n function (\n $uibModal,\n $log,\n $state,\n protocolResponse,\n $stateParams,\n sectionApi,\n $localForage,\n toastr,\n moment\n ) {\n function setTitles() {\n forEach(vm.protocol.aberrationActions, aa => {\n var cat = find(vm.regLineCategories, {\n id: aa.regLineCategoryId\n });\n aa.Title = aa.title ? aa.title : cat && cat.display;\n });\n }\n\n function openSignature(sig, readonly) {\n var modalInstance = $uibModal.open({\n template: protocolsignaturehtml,\n controllerAs: \"modalvm\",\n backdrop: \"static\",\n size: \"lg\",\n resolve: {\n readonly: [\n function () {\n return readonly;\n }\n ],\n personsPresent: [\n function () {\n return protocolResponse.data.personsPresent;\n }\n ],\n sig: [\n function () {\n return sig || {};\n }\n ]\n },\n controller: protocolsignaturectrl\n });\n\n return modalInstance;\n }\n\n var vm = this;\n vm.protocol = protocolResponse.protocol;\n var draftKey = \"preinspectionprotocol-\" + vm.protocol.sectionId;\n vm.protocol.preInspectionDate = new Date();\n\n if (vm.protocol.acquisitionDateTime) {\n var m = moment(vm.protocol.acquisitionDateTime);\n vm.protocol.acquisitionTime = m.format(\"HH:mm\");\n }\n vm.protocol.aberrationActions = vm.protocol.aberrationActions || [];\n vm.readonly = vm.protocol.id !== 0;\n\n vm.personsPresent = protocolResponse.data.personsPresent;\n vm.contactPersons = protocolResponse.data.contactPersons;\n vm.templates = protocolResponse.data.templates;\n vm.regLineCategories = protocolResponse.data.regLineCategories;\n\n vm.download = function () {\n sectionApi\n .downloadPreInspectionProtocol(\n vm.protocol.sectionId,\n vm.protocol.id\n )\n .then(saveFile);\n };\n\n vm.addPersonToPresent = pp => {\n let haveText =\n vm.protocol.present !== undefined && vm.protocol.present !== \"\";\n\n vm.protocol.present += (haveText ? \"\\n\" : \"\") + pp.name;\n };\n\n vm.addAberrationAction = function () {\n var lastIndex = maxBy(vm.protocol.aberrationActions, \"index\");\n var nextIndex = ((lastIndex && lastIndex.index) || 0) + 1;\n\n vm.protocol.aberrationActions.push({\n index: nextIndex,\n projTable: 0,\n aberrationTypeId: 1\n });\n };\n\n vm.saveDraft = function () {\n vm.protocol.draftDate = new Date();\n\n $localForage\n .setItem(draftKey, {\n protocol: vm.protocol,\n data: protocolResponse.data\n })\n .then(() => {\n toastr.success(\n \"Protokoll lagret lokalt. Husk at du må bruke samme enhet for å hente from protokoll igjen\",\n \"Lagret\"\n );\n if (navigator.onLine) {\n $state.go(\n \"main.projects.project.house.sections.section.protocols\"\n );\n }\n })\n .catch(err => {\n toastr.error(\n \"Noe gikk galt med å lagre protokoll til lokal enhet\"\n );\n throw err;\n });\n };\n\n vm.setAcquisitionDateTime = () => {\n var m = moment(vm.protocol.acquisitionDateTime);\n if (vm.protocol.acquisitionDateTime) {\n var time = vm.protocol.acquisitionTime.split(\":\");\n\n m.set(\"hour\", time[0]);\n m.set(\"minute\", time[1]);\n m.set(\"second\", 0);\n m.set(\"millisecond\", 0);\n }\n\n vm.protocol.acquisitionDateTime = m.toDate();\n };\n\n vm.saveToServer = function () {\n setTitles();\n //client side validation\n if (!vm.protocol.signatures || vm.protocol.signatures.length < 1) {\n toastr.warning(\"Protokoll må være signert!\");\n return;\n }\n\n var attachments = [];\n var abbActions = [];\n\n if (isArray(vm.protocol.aberrationActions))\n abbActions = vm.protocol.aberrationActions;\n else\n abbActions.push(vm.protocol.aberrationActions);\n\n for (var abbAction of abbActions) {\n var abbActionAttachments = [];\n if (isArray(abbAction.attachments)) {\n abbActionAttachments = abbAction.attachments;\n } else if (abbAction.attachments) {\n abbActionAttachments.push(abbAction.attachments);\n }\n for (var attachment of abbActionAttachments) {\n\n var att = Object.assign({}, attachment);\n var blob = new Blob([att.dataCompressed]);\n var formData = new FormData();\n formData.append(\"file\", blob);\n att.formData = formData;\n att.dataCompressed = null;\n\n attachments.push(att);\n attachment.base64 = null;\n attachment.dataCompressed = null;\n }\n }\n\n sectionApi.postAttachmentsToBuffer(attachments).then(() => {\n sectionApi.savePreInspectionProtocol(vm.protocol).then(\n function () {\n $localForage\n .getItem(draftKey)\n .then(localProtocol => {\n if (localProtocol !== null) {\n $localForage.removeItem(draftKey);\n }\n })\n .finally(() => {\n $state.go(\n \"main.projects.project.house.sections.section.protocols\"\n );\n });\n },\n function () {\n if (!navigator.onLine) {\n toastr.warning(\n \"Du er ikke koblet til internett, du kan lagre protokollen lokalt for deretter å hente den fram igjen når du har internett.\"\n );\n }\n }\n );\n });\n };\n\n vm.removeAberrationAction = function (aberrationAction) {\n remove(vm.protocol.aberrationActions, aberrationAction);\n };\n\n vm.templateSelected = aa => {\n aa.description = get(aa, \"template.template\");\n aa.regLineCategoryId = get(aa, \"template.regLineCategory.id\");\n aa.title = get(aa, \"template.title\");\n aa.responsibleId = undefined;\n\n var cp = find(vm.contactPersons, {\n tradeCodeId: get(aa, \"template.tradeCode.id\")\n });\n if (cp) {\n aa.responsibleId = cp.contactPersonId;\n }\n };\n\n vm.signature = function (sig) {\n openSignature(sig, vm.readonly).result.then(function (signature) {\n if (signature) {\n vm.protocol.signatures = vm.protocol.signatures || [];\n\n if (signature.delete) {\n vm.protocol.signatures = reject(\n vm.protocol.signatures,\n function (p) {\n return p.uuid === signature.uuid;\n }\n );\n } else {\n var index = findIndex(vm.protocol.signatures, {\n uuid: signature.uuid\n });\n\n if (index === -1) {\n vm.protocol.signatures.push(signature);\n } else {\n vm.protocol.signatures.splice(index, 1, signature);\n }\n }\n }\n });\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./preinspectionprotocol.html\";\n\nlet transformServerResponse = response => {\n return {\n protocol: response.data.protocol,\n data: {\n regLineCategories: response.data.regLineCategories,\n personsPresent: response.data.personsPresent,\n contactPersons: response.data.contactPersons,\n templates: response.data.templates\n }\n };\n};\n\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\n \"main.projects.project.house.sections.section.preinspectionprotocol\",\n {\n url: \"/preinspectionprotocol/?protocolId&draftKey\",\n aData: {\n name: \"Ferdigbefaringsprotokoll\"\n },\n resolve: {\n protocolResponse: [\n \"sectionApi\",\n \"$stateParams\",\n \"$localForage\",\n function(sectionApi, $stateParams, $localForage) {\n if ($stateParams.draftKey) {\n return $localForage.getItem(\n $stateParams.draftKey\n );\n }\n\n if ($stateParams.protocolId) {\n return sectionApi\n .getPreInspectionProtocol(\n $stateParams.sectionId,\n $stateParams.protocolId\n )\n .then(transformServerResponse);\n } else {\n return sectionApi\n .getNewPreInspectionProtocol(\n $stateParams.sectionId\n )\n .then(transformServerResponse);\n }\n }\n ]\n },\n\n views: {\n sectioncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n }\n );\n }\n];\n","import saveFile from \"shared/saveFile\";\nimport protocolsignaturectrl from \"shared/protocolsignature\";\nimport protocolsignaturehtml from \"shared/protocolsignature.html\";\nimport {\n find,\n findIndex,\n filter,\n get,\n maxBy,\n remove,\n forEach,\n reject\n} from \"lodash\";\nexport default [\n \"$uibModal\",\n \"$log\",\n \"$state\",\n \"protocolResponse\",\n \"$stateParams\",\n \"$confirm\",\n \"sectionApi\",\n \"$localForage\",\n \"section\",\n \"toastr\",\n \"moment\",\n\n function (\n $uibModal,\n $log,\n $state,\n protocolResponse,\n $stateParams,\n $confirm,\n sectionApi,\n $localForage,\n section,\n toastr,\n moment\n ) {\n function openSignature(sig, readonly) {\n var modalInstance = $uibModal.open({\n template: protocolsignaturehtml,\n backdrop: \"static\",\n controllerAs: \"modalvm\",\n size: \"lg\",\n resolve: {\n readonly: [\n function () {\n return readonly;\n }\n ],\n personsPresent: [\n function () {\n return protocolResponse.data.personsPresent;\n }\n ],\n sig: [\n function () {\n return sig || {};\n }\n ]\n },\n controller: protocolsignaturectrl\n });\n\n return modalInstance;\n }\n\n var vm = this;\n vm.protocol = protocolResponse.protocol;\n vm.protocol.regLines = vm.protocol.regLines || [];\n \n vm.protocol.temporaryUsePermit = vm.protocol.temporaryCertificateOfCompletionDate && !vm.protocol.temporaryUsePermit ? moment(vm.protocol.temporaryCertificateOfCompletionDate).format(\"DD.MM.YYYY\") : vm.protocol.temporaryUsePermit;\n\n vm.readonly = vm.protocol.id !== 0;\n vm.regLineCategories = protocolResponse.data.regLineCategories;\n vm.contacts = protocolResponse.data.contacts;\n vm.personsPresent = protocolResponse.data.personsPresent;\n vm.contactPersons = protocolResponse.data.contactPersons;\n vm.templates = protocolResponse.data.templates;\n\n var draftKey =\n $stateParams.draftKey ||\n \"acquisitionprotocol-\" + vm.protocol.sectionId;\n\n forEach(vm.protocol.regLines, line => {\n if (line.contactId) {\n line.contactPersons = filter(\n protocolResponse.data.contactPersons,\n {\n contactId: line.contactId\n }\n );\n }\n });\n\n vm.download = function () {\n sectionApi\n .downloadAcquisitionProtocol(\n vm.protocol.sectionId,\n vm.protocol.id\n )\n .then(saveFile);\n };\n\n vm.addPersonToPresent = pp => {\n let haveText =\n vm.protocol.present !== undefined && vm.protocol.present !== \"\";\n\n vm.protocol.present += (haveText ? \"\\n\" : \"\") + pp.name;\n };\n\n vm.aberrationOk = aberrationAction => {\n aberrationAction.handled = true;\n };\n\n vm.aberrationAsRegLine = aberrationAction => {\n aberrationAction.handled = true;\n\n vm.addRegLine(aberrationAction);\n };\n\n vm.templateSelected = regLine => {\n regLine.txt = get(regLine, \"template.template\");\n regLine.regLineCategoryId = get(\n regLine,\n \"template.regLineCategory.id\"\n );\n regLine.name = get(regLine, \"template.title\");\n regLine.contactPersonId = undefined;\n regLine.contactId = undefined;\n\n var cp = find(vm.contactPersons, {\n tradeCodeId: get(regLine, \"template.tradeCode.id\")\n });\n if (cp) {\n regLine.contactPersonId = cp.contactPersonId;\n vm.setResponsible(cp, regLine);\n }\n };\n\n vm.setResponsible = (item, regLine) => {\n if (item && item.contactId) {\n regLine.contactId = item.contactId;\n }\n };\n\n vm.addRegLine = function (aberrationAction) {\n var lastLineNum = maxBy(vm.protocol.regLines, \"lineNum\");\n var nextLineNum = ((lastLineNum && lastLineNum.lineNum) || 0) + 1;\n\n var newRegLine = {\n projRegistrationProjTable: $stateParams.id,\n lineNum: nextLineNum,\n timeLimit: new Date()\n };\n\n if (aberrationAction) {\n newRegLine.name = aberrationAction.title;\n newRegLine.aberrationActionId = aberrationAction.id;\n newRegLine.regLineCategoryId =\n aberrationAction.regLineCategoryId;\n newRegLine.contactPersonId = aberrationAction.responsibleId;\n newRegLine.fromAberrationActionId = aberrationAction.id;\n newRegLine.txt =\n \"Fra tiltak #\" +\n aberrationAction.id +\n \"\\n\" +\n aberrationAction.description;\n }\n\n vm.protocol.regLines.push(newRegLine);\n };\n\n vm.saveDraft = function () {\n vm.protocol.draftDate = new Date();\n\n $localForage\n .setItem(draftKey, {\n protocol: vm.protocol,\n data: protocolResponse.data\n })\n .then(() => {\n toastr.success(\n \"Protokoll lagret lokalt. Husk at du må bruke samme enhet for å hente from protokoll igjen\",\n \"Lagret\"\n );\n if (navigator.onLine) {\n $state.go(\n \"main.projects.project.house.sections.section.protocols\"\n );\n } else {\n toastr.warning(\"Du er ikke koblet til internett\");\n }\n })\n .catch(err => {\n toastr.error(\n \"Noe gikk galt med å lagre protokoll til lokal enhet\"\n );\n throw err;\n });\n };\n\n vm.saveToServer = function () {\n //client side validation\n if (!vm.protocol.signatures || vm.protocol.signatures.length < 1) {\n toastr.warning(\"Protokoll må være signert\");\n return;\n }\n\n var attachments = [];\n var regLines = [];\n\n if (vm.protocol.regLines &&\n vm.protocol.regLines.length &&\n vm.protocol.regLines.length > 0)\n regLines = vm.protocol.regLines;\n else if (vm.protocol.regLines && !vm.protocol.regLines.length)\n regLines = [vm.protocol.regLines];\n\n for (var regLine of regLines) {\n var regLineAttachments = [];\n if (regLine.attachments &&\n regLine.attachments.length &&\n regLine.attachments.length > 0) {\n regLineAttachments = regLine.attachments;\n } else if (regLine.attachments && !regLine.attachments.length) {\n regLineAttachments = [regLine.attachments];\n }\n for (var attachment of regLineAttachments) {\n\n var att = Object.assign({}, attachment);\n var blob = new Blob([att.dataCompressed]);\n var formData = new FormData();\n formData.append(\"file\", blob);\n att.formData = formData;\n att.dataCompressed = null;\n\n attachments.push(att);\n attachment.base64 = null;\n attachment.dataCompressed = null;\n }\n }\n\n sectionApi.postAttachmentsToBuffer(attachments).then(() => {\n sectionApi.saveAcquisitionProtocol(vm.protocol).then(\n function () {\n $localForage\n .getItem(draftKey)\n .then(localProtocol => {\n if (localProtocol !== null) {\n $localForage.removeItem(draftKey);\n }\n })\n .finally(() => {\n $state.go(\n \"main.projects.project.house.sections.section.protocols\"\n );\n });\n },\n function () {\n if (!navigator.onLine) {\n toastr.warning(\n \"Du er ikke koblet til internett, du kan lagre protokollen lokalt for deretter å hente den fram igjen når du har internett.\"\n );\n }\n }\n );\n });\n\n\n };\n\n vm.removeLine = function (regLine) {\n remove(vm.protocol.regLines, regLine);\n\n if (regLine.aberrationActionId) {\n var x = find(vm.protocol.aberrationActions, {\n id: regLine.aberrationActionId\n });\n if (x) {\n x.handled = false;\n }\n }\n };\n\n vm.signature = function (sig) {\n openSignature(sig, vm.readonly).result.then(function (signature) {\n if (signature) {\n vm.protocol.signatures = vm.protocol.signatures || [];\n\n if (signature.delete) {\n vm.protocol.signatures = reject(\n vm.protocol.signatures,\n function (p) {\n return p.uuid === signature.uuid;\n }\n );\n } else {\n var index = findIndex(vm.protocol.signatures, {\n uuid: signature.uuid\n });\n\n if (index === -1) {\n vm.protocol.signatures.push(signature);\n } else {\n vm.protocol.signatures.splice(index, 1, signature);\n }\n }\n }\n });\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./acquisitionprotocol.html\";\n\nlet transformServerResponse = response => {\n return {\n protocol: response.data.protocol,\n data: {\n regLineCategories: response.data.regLineCategories,\n contacts: response.data.contacts,\n personsPresent: response.data.personsPresent,\n contactPersons: response.data.contactPersons,\n templates: response.data.templates\n }\n };\n};\n\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\n \"main.projects.project.house.sections.section.acquisitionprotocol\",\n {\n url: \"/acquisitionprotocol/?protocolId&draftKey\",\n aData: {\n name: \"Overtakelsesprotokoll\"\n },\n resolve: {\n protocolResponse: [\n \"sectionApi\",\n\n \"$stateParams\",\n \"$localForage\",\n function(\n sectionApi,\n\n $stateParams,\n $localForage\n ) {\n if ($stateParams.draftKey) {\n return $localForage.getItem(\n $stateParams.draftKey\n );\n }\n\n if ($stateParams.protocolId) {\n return sectionApi\n .getAcquisitionProtocol(\n $stateParams.sectionId,\n $stateParams.protocolId\n )\n .then(transformServerResponse);\n } else {\n return sectionApi\n .getNewAcquisitionProtocol(\n $stateParams.sectionId\n )\n .then(transformServerResponse);\n }\n }\n ]\n },\n\n views: {\n sectioncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n }\n );\n }\n];\n","import saveFile from \"shared/saveFile\";\nimport protocolsignaturectrl from \"shared/protocolsignature\";\nimport protocolsignaturehtml from \"shared/protocolsignature.html\";\nimport { findIndex, forEach, reject } from \"lodash\";\nexport default [\n \"$uibModal\",\n \"$log\",\n \"$state\",\n \"protocolResponse\",\n \"$stateParams\",\n \"sectionApi\",\n \"registrationApi\",\n \"commentApi\",\n \"commonApi\",\n \"$localForage\",\n \"toastr\",\n \"moment\",\n function (\n $uibModal,\n $log,\n $state,\n protocolResponse,\n $stateParams,\n sectionApi,\n registrationApi,\n commentApi,\n commonApi,\n $localForage,\n toastr,\n moment\n ) {\n\n function openSignature(sig, readonly) {\n var modalInstance = $uibModal.open({\n template: protocolsignaturehtml,\n controllerAs: \"modalvm\",\n backdrop: \"static\",\n size: \"lg\",\n resolve: {\n readonly: [\n function () {\n return readonly;\n }\n ],\n personsPresent: [\n function () {\n return protocolResponse.data.personsPresent;\n }\n ],\n sig: [\n function () {\n return sig || {};\n }\n ]\n },\n controller: protocolsignaturectrl\n });\n\n return modalInstance;\n }\n\n var vm = this;\n vm.protocol = protocolResponse.protocol;\n var draftKey = \"oneyearinspectionprotocol-\" + vm.protocol.sectionId;\n\n if (!vm.protocol.inspectionDate)\n vm.protocol.inspectionDate = new Date();\n\n vm.newRegLineOneYear = null;\n vm.newRegLineOther = null;\n\n if (vm.protocol.acquisitionDateTime) {\n var m = moment(vm.protocol.acquisitionDateTime);\n vm.protocol.acquisitionTime = m.format(\"HH:mm\");\n }\n\n vm.personsPresent = protocolResponse.data.personsPresent;\n vm.contactPersons = protocolResponse.data.contactPersons;\n\n vm.getOneYearInspectionProtocolRegistrations = function (sectionId) {\n sectionApi.getOneYearInspectionProtocolRegistrations(vm.protocol.sectionId)\n .then(response => {\n\n vm.regSource = response.data.regSource;\n vm.regLineCategories = response.data.regLineCategories;\n vm.regLinesOneYear = response.data.regLinesOneYear;\n vm.regLinesOther = response.data.regLinesOther;\n vm.regStatuses = response.data.regStatuses;\n\n forEach(vm.regLinesOneYear, function (regLine) {\n regLine.lineStatusOriginal = regLine.lineStatus;\n });\n forEach(vm.regLinesOther, function (regLine) {\n regLine.lineStatusOriginal = regLine.lineStatus;\n });\n });\n };\n vm.getOneYearInspectionProtocolRegistrations();\n\n vm.addRegLine = function () {\n vm.newRegLine =\n {\n projRegistrationOneYearInspectionProtocolUniqId: vm.protocol.uniqId,\n projRegistrationProjTable: vm.protocol.projectId,\n projRegistrationPhase: vm.protocol.phaseId,\n projRegistrationSection: vm.protocol.sectionId,\n regHeaderSource: vm.regSource,\n regHeaderDate: moment(),\n regHeaderType: 0,\n regHeaderStatus: 6,\n lineStatus: 6,\n timeLimit: new Date()\n };\n };\n\n vm.saveNewRegLine = function () {\n registrationApi.saveNewReg(vm.newRegLine).then(result => {\n this.newRegLine = null;\n vm.getOneYearInspectionProtocolRegistrations();\n toastr.success(\"Opprettet reklamasjon \" + result.data.lineIndexLineId);\n });\n };\n\n vm.saveRegLine = function (regLine) {\n\n registrationApi.updateReg(regLine).then(response => {\n vm.getOneYearInspectionProtocolRegistrations();\n toastr.success(\"Kommentar lagt til på reklamasjon \" + regLine.lineIndexLineId);\n });\n };\n\n vm.setResponsible = (item, regLine) => {\n if (item && item.contactId) {\n regLine.contactId = item.contactId;\n }\n };\n\n vm.updateRegLine = function (regLine) {\n registrationApi\n .validateRegistrationLine(regLine)\n .then(function (res) {\n var vr = res.data;\n if (vr.valid) {\n commentApi\n .commentModal({\n commentType: 1,\n visibleToCustomer: true\n })\n .result.then(function (comment) {\n if (comment) {\n commonApi.transformAttachments(\n comment.attachments\n );\n regLine.comments = regLine.comments || [];\n regLine.comments.push({\n status: 2,\n text: comment.newComment,\n visibleToCustomer: comment.visibleToCustomer,\n tags: comment.tags || [],\n attachments: comment.attachments\n });\n vm.saveRegLine(regLine);\n }\n if (!comment) {\n regLine.lineStatus =\n regLine.lineStatusOriginal;\n }\n });\n } else {\n regLine.lineStatus = regLine.lineStatusOriginal;\n\n var msg = \"\";\n forEach(vr.errors, function (err) {\n msg += err + \"
\";\n });\n\n toastr.warning(\n msg,\n \"Kan ikke endre status før alle påkrevde felt er fylt ut\",\n {\n timeOut: 5000,\n allowHtml: true,\n\n onShown: function (t) {\n t.el\n .parent()\n .removeClass(\"toast-top-right\")\n .addClass(\"toast-bottom-left\");\n t.el.find(\".toast-warning\").css({\n width: \"600px\"\n });\n }\n }\n );\n }\n });\n };\n\n vm.download = function () {\n sectionApi\n .downloadOneYearInspectionProtocol(\n vm.protocol.sectionId,\n vm.protocol.id\n )\n .then(saveFile);\n };\n\n vm.addPersonToPresent = pp => {\n let haveText =\n vm.protocol.present !== undefined && vm.protocol.present !== \"\";\n\n vm.protocol.present += (haveText ? \"\\n\" : \"\") + pp.name;\n };\n\n vm.saveDraft = function () {\n vm.protocol.draftDate = new Date();\n\n $localForage\n .setItem(draftKey, {\n protocol: vm.protocol,\n data: protocolResponse.data\n })\n .then(() => {\n toastr.success(\n \"Protokoll lagret lokalt. Husk at du må bruke samme enhet for å hente from protokoll igjen\",\n \"Lagret\"\n );\n if (navigator.onLine) {\n $state.go(\n \"main.projects.project.house.sections.section.protocols\"\n );\n }\n })\n .catch(err => {\n toastr.error(\n \"Noe gikk galt med å lagre protokoll til lokal enhet\"\n );\n throw err;\n });\n };\n\n vm.saveToServer = function () {\n if (!vm.protocol.signatures || vm.protocol.signatures.length < 1) {\n toastr.warning(\"Protokoll må være signert!\");\n return;\n }\n\n sectionApi.saveOneYearInspectionProtocol(vm.protocol).then(\n function () {\n $localForage\n .getItem(draftKey)\n .then(localProtocol => {\n if (localProtocol !== null) {\n $localForage.removeItem(draftKey);\n }\n })\n .finally(() => {\n $state.go(\n \"main.projects.project.house.sections.section.protocols\"\n );\n });\n },\n function () {\n if (!navigator.onLine) {\n toastr.warning(\n \"Du er ikke koblet til internett, du kan lagre protokollen lokalt for deretter å hente den fram igjen når du har internett.\"\n );\n }\n }\n );\n };\n\n vm.signature = function (sig) {\n openSignature(sig, vm.readonly).result.then(function (signature) {\n if (signature) {\n vm.protocol.signatures = vm.protocol.signatures || [];\n\n if (signature.delete) {\n vm.protocol.signatures = reject(\n vm.protocol.signatures,\n function (p) {\n return p.uuid === signature.uuid;\n }\n );\n } else {\n var index = findIndex(vm.protocol.signatures, {\n uuid: signature.uuid\n });\n\n if (index === -1) {\n vm.protocol.signatures.push(signature);\n } else {\n vm.protocol.signatures.splice(index, 1, signature);\n }\n }\n }\n });\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./oneyearinspectionprotocol.html\";\n\nlet transformServerResponse = response => {\n return {\n protocol: response.data.protocol,\n data: {\n regLineCategories: response.data.regLineCategories,\n personsPresent: response.data.personsPresent,\n contactPersons: response.data.contactPersons\n }\n };\n};\n\nexport default [\n \"$stateProvider\",\n function ($stateProvider) {\n $stateProvider.state(\n \"main.projects.project.house.sections.section.oneyearinspectionprotocol\",\n {\n url: \"/oneyearinspectionprotocol/?protocolId&draftKey\",\n aData: {\n name: \"Ettårsbefaringsprotokoll\"\n },\n resolve: {\n protocolResponse: [\n \"sectionApi\",\n \"$stateParams\",\n \"$localForage\",\n function (sectionApi, $stateParams, $localForage) {\n if ($stateParams.draftKey) {\n return $localForage.getItem(\n $stateParams.draftKey\n );\n }\n\n if ($stateParams.protocolId) {\n return sectionApi\n .getOneYearInspectionProtocol(\n $stateParams.protocolId\n )\n .then(transformServerResponse);\n } else {\n return sectionApi\n .getNewOneYearInspectionProtocol(\n $stateParams.sectionId\n )\n .then(transformServerResponse);\n }\n }\n ]\n },\n\n views: {\n sectioncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n }\n );\n }\n];\n","export default [\n \"section\",\n function (section) {\n var vm = this;\n\n vm.section = section.data.section;\n vm.persistKey = \"section_registrations_\" + vm.section.id;\n\n vm.regContext = {\n projectId: vm.section.projectPhaseProjTable,\n houseId: vm.section.projPhase,\n sectionId: vm.section.id\n };\n }\n];","export default [\"$log\", \"customerApi\", \"tasks\", \"$state\", \"section\",\n function ($log, customerApi, tasks, $state, section) {\n\n var vm = this;\n\n vm.tasks = tasks.data;\n\n\n vm.addTask = function () {\n\n\n $state.go(\"main.tasks.edit\", {\n taskId: \"-1\",\n createTask: {\n projectId: section.data.section.projectPhaseProjTable,\n sectionId: section.data.section.id\n }\n });\n };\n\n }\n];","export default [\"$log\", \"section\", \"checklists\", \"$state\", \"$stateParams\", \"checklistApi\", \"$confirm\",\n function ($log, section, checklists, $state, $stateParams, checklistApi, $confirm) {\n var vm = this;\n vm.checklists = checklists.data.checklists;\n vm.section = section.data.section;\n vm.availableChecklists = checklists.data.availableChecklists;\n\n vm.deleteCheckList = function (checklist) {\n\n $confirm({\n text: \"Sikker på at du vil slette sjekklisten?\"\n })\n .then(function () {\n\n checklistApi.deleteCheckList(checklist).then(function () {\n $state.reload();\n });\n });\n\n\n };\n\n\n }\n];","export default [\n \"$uibModalInstance\",\n function ($uibModalInstance) {\n var modalvm = this;\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm);\n };\n }\n];","import angular from \"angular\";\nimport cancelcontractctrl from \"./cancelcontract\";\nimport cancelcontracthtml from \"./cancelcontract.html\";\nimport {\n forEach\n} from \"lodash\";\nexport default [\n \"$log\",\n \"customerApi\",\n \"section\",\n \"$confirm\",\n \"sectionApi\",\n \"$state\",\n \"toastr\",\n \"$uibModal\",\n function ($log, customerApi, section, $confirm, sectionApi, $state, toastr, $uibModal) {\n function cancelContractModal() {\n var modalInstance = $uibModal.open({\n template: cancelcontracthtml,\n controllerAs: \"modalvm\",\n controller: cancelcontractctrl\n });\n\n return modalInstance;\n }\n\n var vm = this;\n vm.section = section.data.section;\n vm.reservationStatuses = section.data.reservationStatuses;\n vm.confirmedContractState = angular.copy(vm.section.confirmedContract);\n vm.advancePaymentState = angular.copy(vm.section.advancePayment);\n\n vm.guarantees = [{\n key: \"percent3\",\n active: vm.section.percent3,\n date: vm.section.percent3Date,\n dateCopy: angular.copy(vm.section.percent3Date),\n vendorCopy: angular.copy(vm.section.percent3Vendor),\n vendor: vm.section.percent3Vendor,\n text: \"3 % garanti\"\n },\n {\n key: \"percent5\",\n active: vm.section.percent5,\n date: vm.section.percent5Date,\n dateCopy: angular.copy(vm.section.percent5Date),\n vendorCopy: angular.copy(vm.section.percent5Vendor),\n vendor: vm.section.percent5Vendor,\n text: \"5 % garanti\"\n },\n {\n key: \"percent10\",\n active: vm.section.percent10,\n date: vm.section.percent10Date,\n dateCopy: angular.copy(vm.section.percent10Date),\n vendorCopy: angular.copy(vm.section.percent10Vendor),\n vendor: vm.section.percent10Vendor,\n text: \"Forskuddsgaranti\"\n },\n {\n key: \"settlementGuarantee\",\n active: vm.section.settlementGuarantee,\n date: vm.section.settlementGuaranteeDate,\n dateCopy: angular.copy(vm.section.settlementGuaranteeDate),\n vendorCopy: angular.copy(vm.section.settlementGuaranteeVendor),\n vendor: vm.section.settlementGuaranteeVendor,\n endDate: vm.section.settlementGuaranteeEndDate,\n endDateCopy: angular.copy(vm.section.settlementGuaranteeEndDate),\n haveEndDate: true,\n text: \"Sluttoppgjørsgaranti\"\n }\n ];\n\n forEach(vm.guarantees, function (g) {\n if (!g.active) {\n g.date = null;\n g.dateCopy = null;\n }\n });\n\n vm.changeReservation = function (state) {\n if (!state) {\n vm.section.reservationDeadLine = null;\n vm.section.reservationTxt2 = null;\n }\n };\n\n vm.changeAdvancePayment = function (state) {\n if (!state) {\n vm.section.advancePaymentSum = null;\n }\n };\n vm.updateGuarantee = function (guarantee, column) {\n vm.section[column] = guarantee.active;\n vm.section[column + \"Date\"] = guarantee.date;\n vm.section[column + \"Vendor\"] = guarantee.vendor;\n vm.section[column + \"EndDate\"] = guarantee.endDate;\n };\n\n vm.changeConfirmState = function (state) {\n if (state) {\n vm.section.confirmedDate = new Date();\n } else {\n vm.section.confirmedDate = null;\n }\n };\n\n var saveContractToDb = function () {\n if (vm.section.advancePayment && vm.section.advancePayment !== vm.advancePaymentState) {\n $confirm({\n text: \"Har du sjekket at innbetaling er registrert?\"\n }).then(\n function () {\n sectionApi.saveSalesContract(vm.section).then(function () {\n toastr.info(\"Kontrakt lagret\");\n $state.reload();\n });\n },\n function () {\n vm.section.advancePaymentSum = undefined;\n vm.section.advancePayment = false;\n }\n );\n } else {\n sectionApi.saveSalesContract(vm.section).then(function () {\n toastr.info(\"Kontrakt lagret\");\n $state.reload();\n });\n }\n };\n\n vm.saveContract = function () {\n if (\n vm.section.confirmedContract &&\n vm.section.confirmedContract !== vm.confirmedContractState\n ) {\n $confirm({\n text: \"Er du sikker på at du vil bekrefte kontrakten på denne seksjonen?\"\n }).then(function () {\n saveContractToDb();\n });\n } else {\n saveContractToDb();\n }\n };\n\n vm.cancelContract = function () {\n cancelContractModal().result.then(function (res) {\n if (res && res.cancelDate) {\n sectionApi.cancelContract(vm.section, res.cancelDate).then(function () {\n $state.reload();\n });\n }\n });\n };\n\n vm.addReservation = function () {\n vm.newReservation = { isActive: true };\n };\n\n vm.saveReservation = function () {\n vm.section.reservations = vm.section.reservations || [];\n vm.section.reservations.push(vm.newReservation);\n vm.newReservation = null;\n };\n }\n];","export default \"
\\n

Kanseller kontrakt

\\n
\\n
\\n\\n\\n
\\n

Er du sikker på at du vil kansellere kontrakten på denne seksjonen?

\\n

\\n Dette kan ikke angres!!!\\n

\\n
\\n\\n\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n \\n
\";","export default [\n \"$log\",\n \"$state\",\n \"protocols\",\n \"toastr\",\n \"section\",\n \"$localForage\",\n function ($log, state, protocols, toastr, section, $localForage) {\n var vm = this;\n\n vm.protocols = protocols.data;\n\n var draftKeyAcquisition =\n \"acquisitionprotocol-\" + section.data.section.id;\n var draftKeyPreInspection =\n \"preinspectionprotocol-\" + section.data.section.id;\n var draftKeyOneYearInspection =\n \"oneyearinspectionprotocol-\" + section.data.section.id;\n\n $localForage.getItem(draftKeyAcquisition).then(data => {\n var localAcquisitionProtocol = data.protocol;\n if (localAcquisitionProtocol) {\n vm.protocols = vm.protocols || [];\n vm.protocols.push({\n customer: localAcquisitionProtocol.customerFullName,\n dateTime: localAcquisitionProtocol.draftDate,\n isInternal: localAcquisitionProtocol.isInternal,\n name: \"Midlertidig overtakelseprotokoll\",\n draftKey: draftKeyAcquisition,\n protocolType: 0\n });\n }\n });\n\n $localForage.getItem(draftKeyPreInspection).then(data => {\n var localPreInspectionProtocol = data.protocol;\n if (localPreInspectionProtocol) {\n vm.protocols = vm.protocols || [];\n vm.protocols.push({\n customer: localPreInspectionProtocol.customerFullName,\n dateTime: localPreInspectionProtocol.draftDate,\n isInternal: localPreInspectionProtocol.isInternal,\n name: \"Midlertidig ferdigbefaringsprotokoll\",\n draftKey: draftKeyPreInspection,\n protocolType: 1\n });\n }\n });\n\n $localForage.getItem(draftKeyOneYearInspection).then(data => {\n var localOneYearInspectionProtocol = data.protocol;\n if (localOneYearInspectionProtocol) {\n vm.protocols = vm.protocols || [];\n vm.protocols.push({\n customer: localOneYearInspectionProtocol.customerFullName,\n dateTime: localOneYearInspectionProtocol.draftDate,\n isInternal: localOneYearInspectionProtocol.isInternal,\n name: \"Midlertidig ettårsbefaringprotokoll\",\n draftKey: draftKeyOneYearInspection,\n protocolType: 2\n });\n }\n });\n\n vm.open = p => {\n switch (p.protocolType) {\n case 0:\n state.go(\n \"main.projects.project.house.sections.section.acquisitionprotocol\",\n {\n protocolId: p.id,\n draftKey: p.draftKey\n }\n );\n break;\n case 1:\n state.go(\n \"main.projects.project.house.sections.section.preinspectionprotocol\",\n {\n protocolId: p.id,\n draftKey: p.draftKey\n }\n );\n break;\n case 2:\n state.go(\n \"main.projects.project.house.sections.section.oneyearinspectionprotocol\",\n {\n protocolId: p.id,\n draftKey: p.draftKey\n }\n );\n break;\n }\n };\n vm.add = t => {\n switch (t) {\n case 0:\n state.go(\n \"main.projects.project.house.sections.section.acquisitionprotocol\"\n );\n break;\n case 1:\n state.go(\n \"main.projects.project.house.sections.section.preinspectionprotocol\"\n );\n break;\n case 2:\n state.go(\n \"main.projects.project.house.sections.section.oneyearinspectionprotocol\"\n );\n break;\n }\n };\n }\n];\n","export default [\n \"$log\",\n \"section\",\n \"aberrations\",\n \"aberrationApi\",\n \"$state\",\n function ($log, section, aberrations, aberrationApi, $state) {\n var vm = this;\n vm.aberrations = aberrations.data;\n vm.section = section.data.section;\n\n vm.addAberration = function () {\n var preSelect = {\n sectionId: vm.section.id,\n houseId: vm.section.projPhase,\n projectId: vm.section.projectPhaseProjTable\n };\n aberrationApi.aberrationModalFull(preSelect).result.then(function (newAberration) {\n if (newAberration) {\n aberrationApi.insertUpdateAberration(newAberration, true).then(function () {\n\n $state.reload();\n });\n }\n });\n };\n }\n];","import section from \"album/section/state\";\nimport index from \"album/section/index/state\";\nimport options from \"album/section/options/state\";\nimport option from \"album/section/options/option/state\";\nimport coloroptions from \"album/section/coloroptions/state\";\nimport customers from \"album/section/customers/state\";\nimport customer from \"album/section/customers/customer/state\";\nimport finances from \"album/section/finances/state\";\nimport changes from \"album/section/changes/state\";\nimport changesContract from \"album/section/changes/contract/state\";\nimport change from \"album/section/changes/contract/change/state\";\nimport documents from \"album/section/documents/state\";\nimport settlement from \"album/section/settlement/state\";\nimport preinspectionprotocol from \"album/section/preinspectionprotocol/state\";\nimport acquisitionprotocol from \"album/section/acquisitionprotocol/state\";\nimport oneyearinspectionprotocol from \"album/section/oneyearinspectionprotocol/state\";\nimport registrations from \"album/section/registrations/state\";\nimport tasks from \"album/section/tasks/state\";\nimport checklists from \"album/section/checklists/state\";\nimport contract from \"album/section/contract/state\";\nimport protocols from \"album/section/protocols/state\";\nimport aberrations from \"album/section/aberrations/state\";\n\n\nexport default [\n section,\n index,\n options, option, coloroptions, customers,\n customer, finances, changes, changesContract, change, documents,\n settlement, preinspectionprotocol, acquisitionprotocol, oneyearinspectionprotocol,\n registrations, tasks, checklists, contract,\n protocols, aberrations\n];","import ctrl from \"./ctrl\";\nimport html from \"./coloroptions.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.coloroptions\", {\n url: \"/sectioncoloroptions\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Fargevalg\"\n },\n resolve: {\n colorOptions: [\"sectionApi\", \"$stateParams\", function (sectionApi, $stateParams) {\n return sectionApi.getSectionColorOptions($stateParams.sectionId);\n }],\n colorOptionsReadyResult: [\"sectionApi\", \"$stateParams\", function (sectionApi, $stateParams) {\n return sectionApi.getSectionColorOptionsReady($stateParams.sectionId);\n }]\n },\n views: {\n \"sectioncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t{{ vm.errorMessage }}\\n\\t
\\n\\n\\t
\\n\\n\\n\\t\\t
\\n\\t\\t\\t
Bestilt
\\n\\t\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
NavnFargeNCS kodePrisOpprettetOpprettet avBekreftetBekreftet av
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
{{o.name}}\\n\\t\\t\\t\\t\\t\\t{{o.name}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{o.ncs}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t 0 && o.price != 4500\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"color-option-deleted\\\">Kr 4500\\n\\t\\t\\t\\t\\t\\t 0 && o.price != 4500\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"color-option-deleted\\\">Kr 4500\\n\\t\\t\\t\\t\\t\\tKr {{o.price | number : 0}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tENTER=Bekreft, ESC=Avbryt\\n\\t\\t\\t\\t\\t{{o.createdDate | date}}{{o.createdBy}}{{o.isConfirmed ? (o.confirmedDate | date) : 'Nei'}}{{o.confirmedBy}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
Total \\n\\t\\t\\t\\t\\t\\tKr {{ vm.sumConfirmed | number : 0 }}\\n\\t\\t\\t\\t\\t
\\n\\t
\\n\\n\\t\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
Handlekurv
\\n\\t\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
NavnFargeNCS kodePrisOpprettetOpprettet avBekreftetBekreftet av
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{{o.name}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{o.ncs}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t 0 && o.price != 4500\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"color-option-deleted\\\">Kr 4500\\n\\t\\t\\t\\t\\t\\t 0 && o.price != 4500\\\"\\n\\t\\t\\t\\t\\t\\t\\tclass=\\\"color-option-deleted\\\">Kr 4500\\n\\t\\t\\t\\t\\t\\tKr {{o.price | number : 0}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tENTER=Bekreft, ESC=Avbryt\\n\\t\\t\\t\\t\\t{{o.createdDate | date}}{{o.createdBy}}{{o.isConfirmed ? (o.confirmedDate | date) : 'Nei'}}{{o.confirmedBy}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
Sub total \\n\\t\\t\\t\\t\\t\\tKr {{ vm.sumCart | number : 0 }}\\n\\t\\t\\t\\t\\t
\\n\\t
\\n\\n\\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./customers.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.customers\", {\n url: \"/sectioncustomers\",\n data: {\n requiresLogin: true\n },\n params: {\n openadd: false\n },\n aData: {\n name: \"Kunder\"\n },\n views: {\n sectioncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnFraTilPrimærAndelOpprettetOpprettet av
\\n {{cust.customerPersonFullName}}\\n {{cust.from|date}}{{cust.to|date}}{{cust.primary ? 'Ja' : 'Nei'}}{{cust.share}}{{cust.createdDate | date}}{{cust.createdBy}}\\n \\n \\n \\n \\n
\\n
\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./customer.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.customers.customer\", {\n url: \"/{projCustomerId}\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{sectionCustomer.data.customerPersonFullName}}\"\n },\n\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n sectionCustomer: [\n \"sectionApi\",\n \"$stateParams\",\n function (sectionApi, $stateParams) {\n return sectionApi.getCustomer($stateParams.projCustomerId);\n }\n ]\n }\n });\n}];","export default \"
\\n
\\n

{{vm.customer.customerPersonFullName}}

\\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./finances.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.finances\", {\n url: \"/sectionfinances\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Finanser\"\n },\n\n views: {\n sectioncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n financeStatuses: [\n \"commonApi\",\n function (commonApi) {\n return commonApi.getFinanceStatuses();\n }\n ]\n }\n });\n}];","export default \"
\\n \\n
\\n\\n
\\n
\\n \\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./changes.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\n \"main.projects.project.house.sections.section.changes\",\n {\n url: \"/sectionchanges\",\n params: {\n changeId: null\n },\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Forandringer\"\n },\n resolve: {\n contracts: [\n \"sectionApi\",\n \"$stateParams\",\n function(sectionApi, $stateParams) {\n return sectionApi.changeContracts(\n $stateParams.sectionId\n );\n }\n ]\n },\n views: {\n sectioncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n }\n );\n }\n];\n","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n 0\\\">\\n \\n \\n \\n \\n \\n \\n
KontraktKontraktsdatoForfallsdatoSumNotatPrintetAkseptertAkseptert dato
{{contract.contractNumber}}\\n {{contract.contractDate | date : 'dd.MM.yyyy'}}{{contract.paymentDate | date : 'dd.MM.yyyy'}}Kr {{(contract.contractTotal) | number : 0}}{{contract.note}}{{contract.printed ? 'Ja' : 'Nei'}}{{contract.accepted ? 'Ja' : 'Nei'}}{{contract.acceptedDate | date : 'dd.MM.yyyy'}}\\n \\n \\n
Total\\n

Kr\\n {{vm.displayCollection | sumOfValue : 'contractTotal' | number:0}}

\\n
\\n
\\n\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./contract.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\n \"main.projects.project.house.sections.section.changes.contract\",\n {\n url: \"/{contractId}\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Kontrakt {{contract.data.contractNumber}}\"\n },\n resolve: {\n contract: [\n \"sectionApi\",\n \"$stateParams\",\n function(sectionApi, $stateParams) {\n return sectionApi.changeContract(\n $stateParams.sectionId,\n $stateParams.contractId\n );\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n }\n );\n }\n];\n","export default \"
\\n
\\n
\\n

Kontrakt {{vm.contract.contractNumber}}

\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n

Forandringer på kontrakt

\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n 0\\\">\\n \\n \\n \\n \\n \\n \\n \\n
LinjeForandringBeskrivelsePris
{{change.contractLineNumber}}{{change.name}}\\n \\n \\n \\n Kr {{(change.price) | number : 0}}\\n \\n \\n
Total\\n

Kr {{vm.displayCollection | sumOfValue : 'price'\\n |\\n number:0}}

\\n
\\n
\\n
\\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./change.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.changes.contract.change\", {\n url: \"/{changeId}\",\n data: {\n requiresLogin: true\n },\n resolve: {\n change: [\n \"sectionApi\",\n \"$stateParams\",\n function (sectionApi, $stateParams) {\n return sectionApi.getSectionChange(\n $stateParams.sectionId,\n $stateParams.contractId,\n $stateParams.changeId\n );\n }\n ]\n },\n aData: {\n name: \"{{change.data.change.name || 'Ny forandring'}}\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{vm.change.name}}

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./documents.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.documents\", {\n url: \"/documents\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Dokumenter\"\n },\n views: {\n \"sectioncontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n resolve: {\n documents: [\"sectionApi\", \"section\", function (sectionApi, section) {\n return sectionApi.getDocuments(section.data.section.id);\n }],\n myContract: [\"sectionApi\", \"section\", function (sectionApi, section) {\n return sectionApi.getMyContractDocuments(section.data.section.id);\n }]\n }\n\n\n });\n}];","export default \"\";","import ctrl from \"./ctrl\";\nimport html from \"./settlement.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.settlement\", {\n url: \"/settlement\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Oppgjør\"\n },\n resolve: {\n settlement: [\"sectionApi\", \"$stateParams\", function (sectionApi, $stateParams) {\n\n return sectionApi.getSettlement($stateParams.sectionId);\n\n }]\n },\n views: {\n \"sectioncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n \\n \\n \\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n 0\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n 0\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n \\n \\n
Sumkr {{((vm.settlement.transactions | notDeleted | filter:{transactionCategory:1}) | sumOfValue :\\n 'amount') |\\n number:0}}\\n \\n
Forskudd
\\n \\n
Tilvalg
\\n \\n \\n \\n \\n
Sumkr {{((vm.settlement.transactions | notDeleted | filter: vm.filterOptions) | sumOfValue :\\n 'amount') |\\n number:0}}\\n \\n
SLUTTOPPGJØR:
Andel fellesgjeldkr {{((vm.settlement.transactions | notDeleted | filter: vm.totalJointDebt) | sumOfValue :\\n 'amount')\\n | number:0}}
Sumkr {{((vm.settlement.transactions | notDeleted | filter: vm.totalTransactionSum) | sumOfValue :\\n 'amount')\\n | number:0}}
Forutsettes oppgjort som følger:
{{tr.txt}}kr {{tr.amount | number : 0}}
Egenkapital/toppfinansieringkr\\n {{(((vm.settlement.transactions | notDeleted | filter: vm.totalTransactionSum) |\\n sumOfValue:'amount')\\n - ((vm.settlement.transactions | filter: {transactionCategory:3}) | sumOfValue:'amount') -\\n ((vm.settlement.transactions | filter: {transactionCategory:5}) | sumOfValue:'amount')) |\\n number:0 }}\\n
\\n

Sist oppdatert\\n {{vm.settlement.updatedString}}

\\n
\\n
\";","export default \"
\\n
\\n
\\n

\\n Ferdigbefaringsprotokoll {{ vm.protocol.isInternal ? '(intern)' : '' }}

\\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n

Leilighet

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n

Forbruker

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n\\n\\n\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n\\n
\\n\\n\\n\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n\\n\\n
\\n
\\n

Avvik

\\n
\\n Partene er enige om rett innkalling til befaringen har skjedd. Av anmerkninger\\n som fremkom under\\n ferdigbefaringen anses følgende som reklamasjonsberettiget\\n
\\n
\\n Ingen avvik registrert\\n
\\n\\n
\\n
\\n Fjern\\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{$select.selected.display}}\\n \\n \\n
\\n {{cp.tradeCodeName}}\\n |\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n\\n \\n \\n\\n\\n
\\n\\n\\n\\n\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n\\n
\\n
{{aberrationAction.title}}\\n ({{aberrationAction.statusText}})\\n\\n\\n \\n \\n {{aberrationAction.regLineCategory}}\\n
\\n
\\n

{{aberrationAction.description}}\\n

\\n
\\n\\n \\n {{aberrationAction.responsible}}\\n\\n\\n\\n
\\n \\n \\n
\\n
\\n
\\n\\n\\n \\n
\\n
\\n
Ovennevnte feil og\\n mangler skal være utbedret innen\\n overtakelse som er avtalt den\\n {{vm.protocol.acquisitionDateTime | date :'dd.MM.yyyy HH:mm'}}\\n Partene er herved rettmessig innkalt til overtakelse.\\n
\\n
\\n
\\n\\n
\\n

Signaturer

\\n
\\n \\n
\\n
\\n \\n
\\n\\n
\\n
\";","export default \"
\\n
\\n
\\n

\\n Overtakelsesprotokoll {{ vm.protocol.isInternal ? '(intern)' : '' }}

\\n\\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n

Leilighet

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n

Forbruker

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n

Spesifikasjoner

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n

Nøkler & flytting

\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n Forbruker er orientert om nøkler sendes i postoppkrav.\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n \\n I.h.t. avtale om kjøp av bolig overtar undertegnede risiko og forpliktelser\\n med eiendommen fra og\\n med utlevering av\\n nøkler/tiltrede til boligen. Fra denne dato løper garantiperioden på 5 år.\\n Entreprenøren innkaller\\n til garantibefaring om ca. ett år\\n \\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n

Informasjon

\\n \\n Ved overlevering av boligen har kvalitetskontrollør kontrollert og forbruker\\n er orientert om:\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n\\n
\\n
\\n

Feil og mangler fra ferdigbefaring\\n

\\n
\\n Alle punkter fra ferdigbefaring er håndtert\\n
\\n\\n
\\n
\\n
{{aberrationAction.title}}\\n ({{aberrationAction.aberrationActionStatus}})
\\n {{aberrationAction.description}}\\n
\\n \\n
\\n
\\n\\n
\\n
\\n\\n
\\n
\\n

Reklamasjoner

\\n
\\n Med henvisning til ferdigbefaring er det i dag kontrollert at de anmeldte feil\\n og mangler er utbedret og godkjent med følgende merknader:\\n
\\n
\\n Ingen reklamasjoner registrert\\n
\\n\\n
\\n \\n\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{$select.selected.display}}\\n \\n
\\n {{cp.tradeCodeName}}\\n |\\n \\n
\\n
\\n \\n
\\n\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n\\n \\n \\n\\n\\n
\\n \\n
\\n
\\n
\\n
\\n \\n\\n
\\n
{{regLine.name}}\\n
\\n
\\n

{{regLine.txt}}

\\n
\\n \\n {{regLine.contactName}}\\n \\n {{regLine.contactPersonPersonFullName}}\\n \\n {{regLine.categoryName}}\\n
\\n \\n\\n
\\n
\\n
\\n\\n\\n\\n
\\n
\\n
Bekreftelse på at tiltrede til boligen og overleveringen av 2\\n stk. nøkler kan skje:
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n

Signaturer

\\n
\\n \\n
\\n
\\n \\n
\\n
Reklamasjonsrett
\\n \\n Kunden har 5 års reklamasjonsrett etter overtagelse, jf Bustadoppføringslova\\n av 13.06.1997, §\\n 30, og Lov om avhending av fast eiendom av 3.juli 1992, § 4- 19.\\n Reklamasjonsretten gjelder når det er feil\\n eller mangler i forhold til\\n kontrakt/leveransebeskrivelse eller lover og forskrifter. Kunden må fremsette\\n krav\\n om reklamasjon skriftlig og uten ugrunnet opphold. Dersom reklamasjon\\n fremsettes for sent, kan\\n reklamasjonsretten gå tapt. Selv om det tas direkte kontakt\\n med vår kvalitetskontrollør eller henvendelse skjer pr telefon til\\n vedkommende, skal\\n reklamasjonshenvendelsen etterfølges av en skriftlig henvendelse.\\n \\n \\n Feil og mangler som oppstår mellom overtakelse og 1-årsbefaring og som ikke er\\n vesentlige for bruken av\\n leiligheten vil bli utbedret under garantibefaringen. Dersom kunden kontakter\\n kvalitetskontrolløren i\\n forbindelse med en reklamasjonsforespørsel og\\n kvalitetskontrolløren/entreprenøren eller en underleverandør oppsøker kunden\\n og det viser seg å være feil\\n eller mangel som skyldes kundens\\n egen bruk, vil kunden bli fakturert med medgått tid etter den til enhver tid\\n gjeldende timesats\\n \\n
\\n
\";","export default \"
\\n
\\n
\\n

\\n Ettårsbefaringsprotokoll

\\n\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n

Leilighet

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n

Forbruker

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n\\n
\\n
\\n

Reklamasjoner (ettårsbefaring)

\\n
\\n
\\n
\\n Ingen reklamasjoner registrert\\n
\\n
\\n\\n
0\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NummerPunktHovedkategoriKategoriStatus
\\n \\n {{ regLine.lineIndexLineId }}\\n \\n \\n \\n {{regLine.name}}\\n \\n \\n \\n {{ regLine.categoryParentName }}\\n \\n \\n \\n {{ regLine.categoryName }}\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n\\n
\\n

Reklamasjoner (andre åpne)

\\n
\\n
\\n \\n
\\n
\\n
\\n Ingen reklamasjoner registrert\\n
\\n
\\n\\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{$select.selected.display}}\\n \\n
\\n {{cp.tradeCodeName}}\\n |\\n \\n
\\n
\\n \\n
\\n\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n \\n \\n\\n
\\n \\n \\n
\\n\\n
\\n
\\n
\\n
\\n\\n
0\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NummerPunktHovedkategoriKategoriStatus
\\n \\n {{ regLine.lineIndexLineId }}\\n \\n \\n \\n {{regLine.name}}\\n \\n \\n \\n {{ regLine.categoryParentName }}\\n \\n \\n \\n {{ regLine.categoryName }}\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n\\n
\\n

Signaturer

\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./registrations.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.registrations\", {\n url: \"/sectionregistrations\",\n data: {\n requiresLogin: true,\n titleText: \"Reklamasjoner seksjon {{section.data.section.sectionNum}}\"\n },\n aData: {\n name: \"Reklamasjoner\"\n },\n\n\n views: {\n\n \"sectioncontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n\n }\n\n\n });\n\n}];","export default \"\";","import ctrl from \"./ctrl\";\nimport html from \"./tasks.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.tasks\", {\n url: \"/sectiontasks\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Oppgaver \"\n },\n\n views: {\n \"sectioncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n tasks: [\"taskApi\", \"$stateParams\", function (taskApi, $stateParams) {\n\n return taskApi.getSectionTasks($stateParams.sectionId);\n\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnFristAnsvarligFullført
{{t.name}} {{t.deadLine | date : 'dd.MM.yyyy HH:mm'}}{{t.assignedToContactPersonPersonFullName}}{{t.completedDate | date :'dd.MM.yyyy HH:mm'}}
\\n
\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./checklists.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.checklists\", {\n url: \"/sectionchecklists\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Sjekklister\"\n },\n resolve: {\n checklists: [\"checklistApi\", \"$stateParams\", function (checklistApi, $stateParams) {\n\n return checklistApi.getSectionChecklists($stateParams.sectionId);\n\n }]\n },\n views: {\n \"sectioncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"\";","import ctrl from \"./ctrl\";\nimport html from \"./contract.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.contract\", {\n url: \"/contract\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Kontrakt\"\n },\n\n views: {\n \"sectioncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"\\n\\n
\\n
\\n
\\n

Kontrakt

\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n Ingen kunde i denne leiligheten...\\n
\\n
\\n
\\n\\n
\\n
\\n

Kontraktsdato:

\\n

{{vm.section.contractDate | date:'dd.MM.yyyy'}}

\\n
\\n

\\n Kontraktstype:\\n

\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n

Forbehold

\\n
\\n
\\n \\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n Ingen forbehold registrert\\n
\\n
\\n\\n
0\\\">\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
AktivtTilhørerFristForbehold
\\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n\\n
\\n

Garantier

\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n

\\n Skal ikke fylles inn før innbetaling er registrert\\n

\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./protocols.html\";\n\n\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections.section.protocols\", {\n url: \"/protocols\",\n aData: {\n name: \"Protokoller\"\n },\n views: {\n \"sectioncontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n protocols: [\"sectionApi\", \"$stateParams\", (api, params) => {\n\n return api.getProtocols(params.sectionId);\n }]\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n\\n\\n\\n
\\n
\\n
\\n
\\n
{{p.name}}
\\n

{{p.dateTime|date}}

\\n
Intern
\\n
\\n
\\n
\\n
\\n
\\n
\\n

Ingen protokoller enda

\\n

Du må være KK eller produksjonsleder for å opprette protokoller

\\n
\\n\\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./aberrations.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.house.sections.section.aberrations\", {\n url: \"/sectionaberrations\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Avvik\"\n },\n resolve: {\n aberrations: [\"sectionApi\", \"$stateParams\", function (sectionApi, $stateParams) {\n\n return sectionApi.getSectionAberrations($stateParams.sectionId);\n\n }]\n },\n views: {\n \"sectioncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdOpprettetStatusTittelBeskrivelse
{{a.aberrationId}}{{a.createdDate | date : 'dd.MM.yyyy'}}{{a.aberrationStatusString}}{{a.title}}\\n {{a.description}}
\\n
\\n
\";","export default [\"$log\", \"processes\", \"$state\", \"$stateParams\", \"processApi\", \"haveRoleFilter\",\n function ($log, processes, $state, $stateParams, processApi, haveRole) {\n\n var vm = this;\n vm.isProcessAdmin = haveRole(\"ProcessAdmin\");\n\n\n vm.processes = processes.data.processes;\n vm.projTypes = processes.data.projTypes;\n vm.toggleActive = function (process) {\n\n processApi.toggleActive({\n id: process.id,\n inActive: process.inActive\n });\n };\n }\n];","export default [\n \"$log\",\n \"process\",\n \"$stateParams\",\n function ($log, process, $stateParams) {\n var vm = this;\n\n vm.process = process.data.process;\n\n vm.isNewVersion =\n $stateParams.isNewVersion && JSON.parse($stateParams.isNewVersion);\n }\n];\n","import saveFile from \"shared/saveFile\";\nimport { map } from \"lodash\";\nexport default [\n \"$log\",\n \"processApi\",\n \"process\",\n \"commonApi\",\n \"toastr\",\n \"$state\",\n \"$stateParams\",\n \"$scope\",\n \"$uibModal\",\n \"$confirm\",\n \"haveRoleFilter\",\n function (\n $log,\n processApi,\n process,\n commonApi,\n toastr,\n $state,\n $stateParams,\n $scope,\n $uibModal,\n $confirm,\n haveRole\n ) {\n var vm = this;\n vm.process = process.data.process;\n vm.bcProjectLines = [];\n\n processApi.getPermissions(vm.process).then((permissions) => {\n vm.permissions = permissions;\n\n vm.processTradeCodes = map(\n process.data.processTradeCodes,\n function (tc) {\n tc.disable = !(\n (vm.permissions.tradeCodeId === tc.id ||\n vm.permissions.tradeCodeId === \"*\") &&\n vm.permissions.edit\n );\n return tc;\n }\n );\n\n vm.projTypes = map(process.data.projTypes, function (pt) {\n pt.disable = !(\n (vm.permissions.projTypeId === pt.key ||\n vm.permissions.projTypeId === \"*\") &&\n vm.permissions.edit\n );\n return pt;\n });\n\n vm.isApproveable =\n vm.process.status !== 2 &&\n vm.permissions.approve &&\n !vm.process.approvedDate;\n });\n\n commonApi.getBCProjectLines().then((res) => {\n vm.bcProjectLines = res.data;\n });\n\n vm.showDeleteBtn = vm.process.status !== 2 && haveRole(\"ProcessAdmin\");\n\n vm.versions = process.data.isoProcedures;\n\n vm.openVersionLog = function () {\n processApi.versionLogModal(process.data.process);\n };\n vm.processPhases = process.data.processPhases;\n vm.isoProcessTypes = process.data.isoProcessTypes;\n vm.processTypes = process.data.processTypes;\n vm.versions = process.data.versions;\n\n vm.projModels = process.data.projModels;\n vm.projTypes = process.data.projTypes;\n vm.milestoneTypes = process.data.milestoneTypes;\n\n vm.deleteProcess = function () {\n $confirm({\n text: \"Er du sikker på at du vil slette prosessen? Dette sletter også aktiviteter og varer med tilhørende mengdeberegning ?\"\n }).then(function () {\n processApi.deleteProcess(vm.process).then(function () {\n $state.go(\"main.processes\", null, {\n reload: true\n });\n });\n });\n };\n vm.downloadPdf = function () {\n processApi.downloadProcessDocument(vm.process.id).then((res) => {\n saveFile(res, `${vm.process.name}.pdf`);\n });\n };\n vm.approveVersion = function () {\n processApi.approveVersion(vm.process).then(function () {\n $state.reload();\n });\n };\n\n vm.saveProcess = function () {\n processApi.saveProcess(vm.process).then((response) => {\n $state.go(\n \"main.processes.process.index\",\n {\n id: response.data.id\n },\n {\n reload: true\n }\n );\n });\n };\n\n vm.askApproval = () => {\n $confirm({\n text: \"Vil du sende denne prosessen til faglig leder for godkjenning ?\"\n }).then(() => {\n processApi.askApproval(vm.process).then(() => {\n toastr.info(\"Epost send til faglig leder\");\n });\n });\n };\n }\n];\n","import saveFile from \"shared/saveFile\";\nimport { forEach, find } from \"lodash\";\nexport default [\n \"processApi\",\n \"processRead\",\n function(processApi, processRead) {\n var vm = this;\n\n vm.process = processRead.data;\n\n processApi.getPermissions(vm.process).then(permissions => {\n vm.permissions = permissions;\n });\n\n vm.openVersionLog = function() {\n processApi.versionLogModal(vm.process);\n };\n\n forEach(vm.process.activities, function(a) {\n a.checkCtrl = find(a.children, function(sa) {\n return sa.type === 2 || sa.type === 3;\n });\n });\n\n vm.downloadPdf = function() {\n processApi.downloadProcessDocument(vm.process.id).then(res => {\n saveFile(res, `${vm.process.name}.pdf`, \"application/pdf\");\n });\n };\n }\n];\n","import { map } from \"lodash\";\nexport default [\n \"processApi\",\n \"newversion\",\n\n function (processApi, newversion) {\n var vm = this;\n vm.newversion = newversion.data.process;\n vm.newversion.versionComment = null;\n\n processApi.getPermissions(vm.newversion).then((permissions) => {\n vm.permissions = permissions;\n\n vm.processTradeCodes = map(\n newversion.data.processTradeCodes,\n function (tc) {\n tc.disable = !(\n (vm.permissions.tradeCodeId === tc.id ||\n vm.permissions.tradeCodeId === \"*\") &&\n vm.permissions.edit\n );\n return tc;\n }\n );\n\n vm.projTypes = map(newversion.data.projTypes, function (pt) {\n pt.disable = !(\n (vm.permissions.projTypeId === pt.key ||\n vm.permissions.projTypeId === \"*\") &&\n vm.permissions.edit\n );\n return pt;\n });\n });\n\n vm.processPhases = newversion.data.processPhases;\n vm.isoProcessTypes = newversion.data.isoProcessTypes;\n vm.processTypes = newversion.data.processTypes;\n\n vm.projModels = newversion.data.projModels;\n vm.projTypes = newversion.data.projTypes;\n\n vm.milestoneTypes = newversion.data.milestoneTypes;\n\n vm.cancel = function () {\n window.location.href =\n \"/processes/process/\" + vm.newversion.id + \"/index\";\n };\n vm.saveNewVersion = function () {\n var nv = {\n fromId: vm.newversion.id,\n comment: vm.newversion.versionComment,\n name: vm.newversion.name,\n tradeCodeId: vm.newversion.tradeCodeId,\n typeId: vm.newversion.typeId,\n isoTypeId: vm.newversion.isoTypeId,\n purpose: vm.newversion.purpose,\n definition: vm.newversion.definition,\n responsibility: vm.newversion.responsibility,\n description: vm.newversion.description,\n floorNum: vm.newversion.floorNum,\n processPhaseId: vm.newversion.processPhaseId,\n dependencies: vm.newversion.dependencies,\n projTypeId: vm.newversion.projTypeId,\n projModelId: vm.newversion.projModelId,\n isMilestone: vm.newversion.isMilestone,\n milestoneType: vm.newversion.milestoneType\n };\n\n processApi.saveNewVersion(nv).then(function (res) {\n window.location.href =\n \"/processes/process/\" + res.data + \"/index\";\n });\n };\n }\n];\n","import { forEach } from \"lodash\";\nexport default [\n \"$log\",\n \"activityApi\",\n \"activities\",\n \"process\",\n \"$state\",\n \"notDeletedFilter\",\n \"$confirm\",\n \"$q\",\n \"orderByFilter\",\n function (\n $log,\n activityApi,\n activities,\n process,\n $state,\n notDeleted,\n $confirm,\n $q,\n orderBy\n ) {\n var vm = this;\n\n vm.activities = orderBy(activities.data, \"index\");\n vm.allTextsExpanded = true;\n\n forEach(vm.activities,\n function (item) {\n item.textVisible = !item.textVisible;\n });\n\n vm.chkFilter = function (item) {\n return item.type === 2 || item.type === 3;\n };\n vm.activityMoved = function (i) {\n vm.activities.splice(i, 1);\n var updateReq = [];\n forEach(vm.activities, function (a, i) {\n a.sortBy = i;\n updateReq.push({\n id: a.id,\n sortBy: i\n });\n });\n\n activityApi.reArrangeActivities(updateReq);\n };\n\n vm.addNewActivity = function () {\n activityApi\n .addActivityToProcess(process.data.process.id)\n .then(response => {\n $state.go(\"main.processes.process.activities.activity\", {\n activityId: response.data.activity.id\n });\n });\n };\n\n vm.deleteActivity = function (activity) {\n $confirm({\n text: \"Vil du slette aktiviteten ?\"\n }).then(function () {\n activityApi.deleteActivity(activity).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.setTextVisible = function (activity) {\n activity.textVisible = !activity.textVisible;\n vm.allTextsExpanded = vm.activities.length ==\n vm.activities.filter(activity => activity.textVisible == true).length;\n };\n\n vm.toogleTextsVisible = function () {\n forEach(vm.activities, function (activity) {\n activity.textVisible = !vm.allTextsExpanded;\n });\n vm.allTextsExpanded = !vm.allTextsExpanded;\n };\n }\n];\n","import { forEach, filter } from \"lodash\";\nimport angular from \"angular\";\nexport default [\n \"$log\",\n \"activityApi\",\n \"activity\",\n \"$state\",\n \"process\",\n \"processApi\",\n \"orderByFilter\",\n function(\n $log,\n activityApi,\n activity,\n $state,\n process,\n processApi,\n orderBy\n ) {\n function goBack() {\n $state.go(\n \"main.processes.process.activities\",\n {\n id: vm.activity.processId\n },\n {\n reload: true\n }\n );\n }\n\n var vm = this;\n\n processApi.getPermissions(process.data.process).then(permissions => {\n vm.permissions = permissions;\n vm.allowed = vm.permissions.edit;\n });\n\n vm.activity = activity.data.legacyActivity;\n vm.activityText = activity.data.activity.text;\n vm.updateActivityText = html => {\n vm.activityText = html;\n };\n\n vm.subactivities = orderBy(\n filter(vm.activity.children, {\n type: 1\n }),\n [\"sortBy\", \"id\"]\n );\n vm.toDeleteFromServer = [];\n vm.controlSchema = orderBy(\n filter(vm.activity.children, function(sa) {\n return sa.type === 2 || sa.type === 3;\n }),\n \"sortBy\"\n );\n\n vm.subActivityMoved = function(i, arrType) {\n var arr = arrType === 1 ? vm.subactivities : vm.controlSchema;\n\n arr.splice(i, 1);\n\n forEach(arr, function(ch, i) {\n ch.sortBy = i;\n vm.changeChild(ch);\n });\n };\n\n vm.deleteSubActivity = function(i, arrType) {\n var arr = arrType === 1 ? vm.subactivities : vm.controlSchema;\n\n var item = arr[i];\n var deleteFromServer = item.status !== 2;\n\n if (deleteFromServer) {\n item.status = -1;\n var toDelete = angular.copy(item);\n vm.toDeleteFromServer.push(toDelete);\n }\n\n arr.splice(i, 1);\n };\n\n vm.changeChild = function(c) {\n c.status = c.status === 2 ? 2 : 1;\n };\n\n vm.addChild = function(itemToAdd) {\n if (itemToAdd) {\n var splits = [];\n\n var stringToProcess = itemToAdd.name;\n\n //Replace all tabs with bullets to split correct from excel\n for (var i = 0; i < 100; i++) {\n stringToProcess = stringToProcess.replace(\n String.fromCharCode(9),\n String.fromCharCode(8226)\n );\n }\n\n forEach(\n stringToProcess.split(String.fromCharCode(8226)),\n function(ch) {\n var a = ch.trim();\n\n if (a.length > 0) {\n splits.push(a);\n }\n }\n );\n\n var collection = itemToAdd.type\n ? vm.controlSchema\n : vm.subactivities;\n\n forEach(splits, function(m) {\n collection.push({\n tempId: Math.random(),\n name: m,\n status: 2,\n type: itemToAdd.type || 1,\n required: false\n });\n });\n\n itemToAdd.name = null;\n itemToAdd.type = null;\n }\n };\n\n vm.cancel = function() {\n goBack();\n };\n\n vm.updateOrCreateActivity = function() {\n forEach(vm.subactivities, function(sa) {\n if (sa.type !== 1) {\n sa.type = 1;\n vm.changeChild(sa);\n }\n });\n\n vm.activity.children = vm.subactivities\n .concat(vm.controlSchema)\n .concat(vm.toDeleteFromServer);\n\n activityApi\n .updateActivity(vm.activity, vm.activityText)\n .then(function() {\n goBack();\n });\n };\n }\n];\n","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"calculations\",\n \"processApi\",\n \"toastr\",\n function($uibModalInstance, $log, calculations, processApi, toastr) {\n var modalvm = this;\n modalvm.calculations = calculations.data.calculations;\n modalvm.processComponent = calculations.data.processComponent;\n\n modalvm.del = function(mc) {\n mc.status = mc.status === 2 ? -2 : -1;\n };\n\n modalvm.update = function(mc) {\n if (mc.status !== 2) {\n mc.status = 1;\n }\n };\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.ok = function() {\n processApi\n .updateModuleCalculations(\n modalvm.processComponent.processId,\n modalvm.calculations\n )\n .then(\n () => {\n toastr.success(\"Mengdeberegning er oppdatert!\");\n $uibModalInstance.close(modalvm.calculations);\n },\n err => {\n $log.error(err);\n toastr.error(\n \"Noe gikk galt med å oppdatere mengdeberegning!\"\n );\n }\n );\n };\n }\n];\n","import compcalcctrl from \"./compcalc\";\nimport compcalchtml from \"./compcalc.html\";\nimport addCompModalhtml from \"shared/addCompModal.html\";\nimport addCompModalctrl from \"shared/addcompmodal.js\";\n\nexport default [\n \"$log\",\n \"processApi\",\n \"processComponents\",\n \"$uibModal\",\n \"$state\",\n \"$stateParams\",\n function(\n $log,\n processApi,\n processComponents,\n $uibModal,\n $state,\n $stateParams\n ) {\n var vm = this;\n vm.processComponents = processComponents.data;\n vm.process = {\n id: $stateParams.id\n };\n\n vm.componentCalculation = function(pc) {\n $uibModal.open({\n size: \"lg\",\n template: compcalchtml,\n controllerAs: \"modalvm\",\n resolve: {\n calculations: [\n \"processApi\",\n function(processApi) {\n return processApi.getProcessComponentCalculations(\n pc.id\n );\n }\n ]\n },\n controller: compcalcctrl\n });\n };\n\n vm.removeComponent = function(c) {\n processApi\n .deleteProcessComponent(vm.process.id, c)\n .then(function() {\n $state.reload(true);\n });\n };\n\n vm.updateProcessComponent = function(c) { \n processApi\n .updateProcessComponent(c)\n .then(function() {\n });\n };\n\n vm.addComponentToCalculation = function() {\n $uibModal\n .open({\n template: addCompModalhtml,\n controllerAs: \"modalvm\",\n resolve: {\n searchmode: function() {\n return {\n contains: true\n };\n }\n },\n controller: addCompModalctrl\n })\n .result.then(function(comp) {\n if (comp) {\n processApi\n .createProcessComponent(\n vm.process.id,\n comp.projComponent\n )\n .then(function() {\n $state.reload(true);\n });\n }\n });\n };\n }\n];\n","export default \"\\n
\\n

Mengdeberegning for {{modalvm.processComponent.component.name}}\\n

\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n \\n \\n \\n \\n
ModulRetningEtasjerRomAntallEnhetStatus
{{mc.moduleString}}{{mc.leftOrRight}}\\n {{mc.floor}}\\n {{mc.rooms}}{{modalvm.processComponent.component.meassureText}}\\n \\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n \\n
\";","export default [\n \"schedules\",\n function (schedules) {\n var vm = this;\n vm.schedules = schedules.data;\n }\n];","export default {\n chart: {\n type: \"column\"\n },\n title: {\n text: \"Årslinje 2019\"\n },\n xAxis: {\n categories: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n crosshair: true\n },\n yAxis: {\n min: 0,\n title: {\n text: \"Antall prosesser\"\n }\n },\n tooltip: {\n headerFormat: \"{point.key}\",\n pointFormat:\n \"\" +\n \"\",\n footerFormat: \"
{series.name}: {point.y:.1f}
\",\n shared: true,\n useHTML: true\n },\n plotOptions: {\n column: {\n pointPadding: 0.2,\n borderWidth: 0\n }\n },\n series: [\n {\n name: \"Ledelsesprosesser\",\n data: [\n 49.9,\n 71.5,\n 106.4,\n 129.2,\n 144.0,\n 176.0,\n 135.6,\n 148.5,\n 216.4,\n 194.1,\n 95.6,\n 54.4\n ]\n },\n {\n name: \"Støtteprosesser\",\n data: [\n 83.6,\n 78.8,\n 98.5,\n 93.4,\n 106.0,\n 84.5,\n 105.0,\n 104.3,\n 91.2,\n 83.5,\n 106.6,\n 92.3\n ]\n }\n ]\n};\n","export default [\n \"$uibModalInstance\",\n \"planEventData\",\n \"processApi\",\n \"moment\",\n function($uibModalInstance, planEventData, processApi, moment) {\n var modalvm = this;\n modalvm.resources = planEventData.data.resources.map(r => {\n r.display = `${r.name} | ${r.parentName}`;\n if (r.contactPerson) {\n r.display += ` (${r.contactPerson})`;\n }\n return r;\n });\n modalvm.processes = planEventData.data.processes;\n modalvm.plannedEvent = {};\n modalvm.setProcess = item => {\n modalvm.plannedEvent.eventType = item.typeId;\n };\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n\n modalvm.ok = function() {\n modalvm.plannedEvent.start = moment(\n modalvm.plannedEvent.startDate\n ).format(\"DD.MM.YYYY\");\n modalvm.plannedEvent.end = moment(\n modalvm.plannedEvent.endDate\n ).format(\"DD.MM.YYYY\");\n\n processApi.addPlannedEvent(modalvm.plannedEvent).then(() => {\n $uibModalInstance.close({ reload: true });\n });\n };\n }\n];\n","import chart from \"./chart\";\nimport addCtrl from \"./add.js\";\nimport addHtml from \"./add.html\";\nimport navigation from \"shared/navigation.js\";\nexport default [\n \"$log\",\n \"planned\",\n \"$uibModal\",\n \"$window\",\n \"$state\",\n\n function($log, planned, $uibModal, $window, $state) {\n function openAddModal() {\n var modalInstance = $uibModal.open({\n template: addHtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n controller: addCtrl,\n resolve: {\n planEventData: [\n \"processApi\",\n processApi => {\n return processApi.planEventData();\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var vm = this;\n vm.planned = planned.data;\n\n vm.processAnnualTimeline = chart;\n\n vm.nav = navigation;\n\n vm.add = () => {\n openAddModal().result.then(modalres => {\n if (modalres && modalres.reload) {\n $state.reload();\n }\n });\n };\n }\n];\n","export default \"\\n
\\n

Legg til planlagt prosess

\\n
\\n
\\n\\n\\n\\n\\n\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{$select.selected.name}}\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{$select.selected.name}}\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n\\n
\\n\\n\\n\\n\\n\\n
\\n\\n\\n \\n \\n
\";","export default [\n \"event\",\n \"processApi\",\n \"toastr\",\n \"$state\",\n function(event, processApi, toastr, $state) {\n var vm = this;\n\n vm.event = event.data.plannedEvent;\n\n vm.completeEvent = event => {\n processApi.completeEventProcess(event).then(() => {\n toastr.success(`${event.name} er satt som fullført`);\n $state.reload();\n });\n };\n }\n];\n","export default [\n \"processes\",\n function (\n processes\n ) {\n var vm = this;\n vm.processes = processes.data;\n }\n];","import processes from \"album/processes/state\";\nimport processState from \"album/process/state\";\nimport index from \"album/process/index/state\";\nimport read from \"album/process/read/state\";\nimport newversion from \"album/process/newversion/state\";\nimport activities from \"album/process/activities/state\";\nimport activity from \"album/process/activities/activity/state\";\nimport components from \"album/process/components/state\";\nimport schedules from \"album/process/schedules/state\";\nimport plannedprocesses from \"album/processes/planned/state\";\nimport plannedprocess from \"album/process/planned/state\";\nimport linked from \"album/process/linked/state\";\n\n\nexport default [\n processes, processState, index, read, newversion, activities, activity,\n components, schedules, plannedprocesses, plannedprocess, linked\n];","import { isEmpty } from \"lodash\";\nimport ctrl from \"./ctrl\";\nimport html from \"./processes.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.processes\", {\n url: \"processes\",\n params: {\n filter: null,\n overrideFilter: false\n },\n data: {\n requiresLogin: true\n },\n resolve: {\n processes: [\n \"processApi\",\n function(processApi) {\n return processApi.getProcesses();\n }\n ],\n setFilter: [\n \"$localForage\",\n \"$stateParams\",\n function($localForage, $stateParams) {\n var nameSpace = \"processes\";\n\n return $localForage\n .getItem(nameSpace)\n .then(tblState => {\n tblState = tblState || {};\n let predicateObject = $stateParams.filter || {};\n if (\n isEmpty(tblState.search) ||\n isEmpty(tblState.search.predicateObject)\n ) {\n tblState.search = {\n predicateObject: predicateObject\n };\n return $localForage.setItem(\n nameSpace,\n tblState\n );\n }\n\n if (\n $stateParams.overrideFilter &&\n $stateParams.filter\n ) {\n return $localForage.setItem(nameSpace, {\n search: {\n predicateObject: $stateParams.filter\n }\n });\n }\n });\n }\n ]\n },\n aData: {\n name: \"Prosesser\"\n },\n\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
IdNavn{{'TradeCode' | translate}}KonseptModellAktivVersjonGodkjentAktiviteter\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{'Components' | translate}}Siste
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
{{proc.documentId}}\\n\\t\\t\\t\\t\\t\\t{{proc.name}}\\n\\t\\t\\t\\t\\t{{proc.tradeCode}}{{proc.projectTypeName}}{{proc.modelName}}\\n\\t\\t\\t\\t\\t\\t{{proc.inActive ? 'Nei':'Ja'}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t{{proc.version}}{{proc.approvedDate | date:'dd.MM.yyyy'}}{{proc.activities}}{{proc.components}}\\n\\t\\t\\t\\t\\t\\t{{proc.isLastVersion ? 'Ja' : 'Nei'}}
\\n\\t
\\n\\t\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./process.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.processes.process\", {\n url: \"/process/{id}\",\n data: {\n requiresLogin: true\n },\n params: {\n isNewVersion: null\n },\n abstract: true,\n aData: {\n breadcrumbProxy: \"main.processes.process.index\"\n },\n resolve: {\n process: [\"processApi\", \"$stateParams\", function (processApi, $stateParams) {\n return processApi.getProcess($stateParams.id).then(function (res) {\n if ($stateParams.isNewVersion) {\n res.data.process.processVersion++;\n res.data.process.processVersionIsNew = true;\n }\n return res;\n });\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.processes.process.index\", {\n url: \"/index\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{process.data.process.name || 'Ny prosess'}}\"\n },\n\n views: {\n \"processcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n

Prosess

\\n

\\n Dokument ID: {{ vm.process.documentId }}\\n

\\n

|

\\n

\\n Versjon\\n {{ vm.process.processVersion }}\\n

\\n
\\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./read.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.processes.read\", {\n\n url: \"/read/{id}\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{processRead.data.name || 'Ny prosess'}}\"\n },\n resolve: {\n processRead: [\"processApi\", \"$stateParams\", function (processApi, $stateParams) {\n return processApi.getReadProcess($stateParams.id);\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t

{{vm.process.name}}

\\n\\t\\t\\t\\t\\tLast\\n\\t\\t\\t\\t\\t\\tned \\n\\t\\t\\t\\t\\tDokument ID:\\n\\t\\t\\t\\t\\t\\t{{vm.process.documentId}}\\n\\t\\t\\t\\t\\tVersjon\\n\\t\\t\\t\\t\\t\\t{{vm.process.processVersion}}\\n\\t\\t\\t\\t\\tRediger\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Formål:

\\n\\t\\t\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Definisjon:

\\n\\t\\t\\t\\t\\t\\t\\t\\t

\\n\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Ansvar og myndighet:

\\n\\t\\t\\t\\t\\t\\t\\t\\t

\\n\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Avhengigheter:

\\n\\t\\t\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Beskrivelse:

\\n\\t\\t\\t\\t\\t\\t\\t\\t

\\n\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tSpesifikasjoner\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Prosesstype:

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

{{vm.process.isoType}}

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

{{'TradeCode' | translate}}:

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

{{vm.process.tradeCode}}

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Fase:

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

{{vm.process.phase}}

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Utførelsetype:

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Utførelse

\\n\\t\\t\\t\\t\\t\\t\\t\\t

Administrativ

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Modell:

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

{{vm.process.modelName}}

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Prosjekttype:

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

{{vm.process.projectTypeName}}

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Gjelder fra:

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

{{vm.process.versionStart | date}}

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Skrevet av:

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

{{vm.process.processAuthor}}

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Godkjent av:

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

{{vm.process.approvedBy}}\\n\\t\\t\\t\\t\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

Revidert:

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t

{{vm.process.versionStart | date}}

\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tAktiviteter\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
    \\n\\t\\t\\t\\t\\t\\t\\t
  • \\n\\t\\t\\t\\t\\t\\t\\t\\t

    \\n\\t\\t\\t\\t\\t\\t\\t\\t\\t{{$index+1}}. {{a.name}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t

    \\n\\t\\t\\t\\t\\t\\t\\t\\t
    \\n\\n\\n\\t\\t\\t\\t\\t\\t\\t\\t
    \\n\\t\\t\\t\\t\\t\\t\\t
  • \\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\n\\n\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t

Sist oppdatert {{vm.process.updatedString}}

\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./newversion.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.processes.process.newversion\", {\n url: \"/newversion?isNewVersion\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Versjon {{process.data.process.processVersion}}\"\n },\n resolve: {\n newversion: [\"process\", \"$q\", function (process, $q) {\n\n var deferred = $q.defer();\n\n if (process.data.process.versionEnd !== undefined) {\n\n return $q.reject({\n status: 401,\n msg: \"Denne versjonen av prosessen er avsluttet. Sørg for at du oppretter ny versjon fra siste versjon av prosessen. Hvis dette er siste versjon, fjern 'Versjon slutt', lagre, deretter prøv igjen.\"\n });\n } else {\n deferred.resolve(process);\n return deferred.promise;\n }\n }]\n },\n\n views: {\n \"processcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n }\n });\n}];","export default \"
\\n\\t\\n\\t\\n
\\n
\\n\\t

Dokument\\n\\t\\tID:

\\n\\t

{{vm.newversion.documentId}}

\\n\\t

Versjon:\\n\\t

\\n\\t

Versjon\\n\\t\\t{{vm.newversion.processVersion}}

\\n
\\n\\n
\\n\\t
\\n\\t\\t\\n\\t\\t\\n\\t
\\n\\t
\\n\\t\\t\\n\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./activities.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.processes.process.activities\", {\n url: \"/activities\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Aktiviteter\"\n },\n resolve: {\n activities: [\"processApi\", \"$stateParams\", function (processApi, $stateParams) {\n return processApi.getProcessActivities($stateParams.id);\n }]\n },\n\n views: {\n \"processcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n \\n\\n \\n\\n \\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./activity.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.processes.process.activities.activity\", {\n url: \"/activity/{activityId}\",\n data: {\n requiresLogin: true\n },\n params: {\n activityId: null\n },\n aData: {\n name: \"{{activity.data.activity.name || activity.data.aData }}\"\n },\n resolve: {\n activity: [\"activityApi\", \"$stateParams\",\n function (activityApi, $stateParams) {\n\n\n return activityApi.getActivity($stateParams.activityId, $stateParams.id);\n }\n ]\n },\n\n\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n

\\n Ny aktivitet\\n

\\n\\n

\\n Rediger aktivitet\\n

\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n\\n\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./components.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.processes.process.components\", {\n url: \"/components\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{'Components' | translate}}\"\n },\n resolve: {\n processComponents: [\n \"processApi\",\n \"$stateParams\",\n function(processApi, $stateParams) {\n return processApi.getProcessComponents($stateParams.id);\n }\n ]\n },\n views: {\n processcontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n
\\n
\\n
\\n \\n
\\n \\n \\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n Ingen varer lagt til på denne prosessen\\n
\\n
0\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n
\\n Id\\n NavnKommentarPris1Pris2
\\n {{ pc.component.compId }}\\n \\n {{ pc.component.name }}\\n \\n \\n \\n {{ pc.component.priceFromContact | number: 0 }} pr\\n {{ pc.component.meassureText }}\\n \\n {{ pc.pricePrStandardHouse | number: 0 }}\\n \\n \\n \\n
\\n {{\\n vm.processComponents\\n | sumOfValue: \\\"component.priceFromContact\\\"\\n | number: 0\\n }}\\n \\n {{\\n vm.processComponents\\n | sumOfValue: \\\"pricePrStandardHouse\\\"\\n | number: 0\\n }}\\n
\\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./schedules.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.processes.process.schedules\", {\n url: \"/schedules\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Tidplaner\"\n },\n resolve: {\n schedules: [\"processApi\", \"$stateParams\", function (processApi, $stateParams) {\n return processApi.getSchedules($stateParams.id);\n }]\n },\n views: {\n \"processcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
IdProsjektHus
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t{{c.id}}\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{c.projectName}}{{c.houseNum}}\\n\\t\\t\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./planned.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.plannedprocesses\", {\n url: \"planned\",\n data: {\n requiresLogin: true\n },\n resolve: {\n planned: [\n \"processApi\",\n function (processApi) {\n return processApi.plannedProcesses();\n }\n ]\n\n },\n aData: {\n name: \"Årshjul\"\n },\n\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
TypeNavnRessurs{{'TradeCode' | translate}}FraTilFerdigmeldtAnsvarlig
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
{{proc.type}}\\n\\t\\t\\t\\t\\t\\t{{proc.name}}\\n\\t\\t\\t\\t\\t{{proc.resource}}{{proc.tradeCode}}{{proc.fromDate | date:'dd.MM.yyyy'}}{{proc.toDate | date:'dd.MM.yyyy'}}{{proc.completedDate | date:'dd.MM.yyyy'}}{{proc.resourceResponsible.person.fullName}}
\\n\\t
\\n\\t\\n
\\n\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./planned.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.plannedprocess\", {\n url: \"event/{eventId}\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n // name: \"{{event.data.name}}\"\n name: \"{{event.data.plannedEvent.name}}\"\n },\n resolve: {\n event: [\n \"processApi\",\n \"$stateParams\",\n function(processApi, $stateParams) {\n return processApi.getEventProcess($stateParams.eventId);\n }\n ]\n },\n\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n
\\n
\\n

{{ vm.event.process.name }}

\\n
\\n
\\n
\\n
\\n \\n
\\n\\n
\\n
\\n

Start: {{ vm.event.fromDate | date }}

\\n

Frist: {{ vm.event.toDate | date }}

\\n

Ansvarlig: {{ vm.event.assignedTo.person.fullName }}

\\n
\\n
\\n\\n\\n Gå\\n til prosess \\n\\n \\n\\n\\n \\n

\\n Prosess ferdigmeldt {{vm.event.completedDate|date}} av {{vm.event.completedBy}}\\n

\\n
\\n\\n \\n\\n

\\n Ingen aktiviteter å fullføre på denne prosessen\\n

\\n\\n\\n
\\n
\\n \\n \\n
\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./linked.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.processes.process.linked\", {\n url: \"/linked\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{process.data.process.documentId.startsWith('U') ? 'Kjerneprosesser' : 'Underprosesser'}}\"\n },\n resolve: {\n processes: [\"processApi\", \"$stateParams\", function (processApi, $stateParams) {\n return processApi.getLinkedProcesses($stateParams.id);\n }]\n },\n\n views: {\n \"processcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Dokument IDNavnVersjonI tidplan for prosjekt
\\n \\n {{ process.documentId }}\\n \\n \\n \\n {{ process.processName }}\\n \\n \\n {{ process.processVersion }}\\n \\n \\n {{ process.projectName }}\\n \\n
\\n
\\n
\";","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"contactApi\",\n \"toastr\",\n \"createParams\",\n function($uibModalInstance, $log, contactApi, toastr, createParams) {\n var modalvm = this;\n\n modalvm.contactperson = {\n person: {\n newRelation: createParams.newRelation\n }\n };\n\n modalvm.create = function() {\n modalvm.contactperson.person.shortName =\n modalvm.contactperson.shortName;\n\n contactApi\n .createContactPerson(modalvm.contactperson.person)\n .then(function(r) {\n $uibModalInstance.close({\n reload: createParams.reload,\n contactPersonId: r.data.contactPersonId\n });\n });\n };\n modalvm.close = function() {\n $uibModalInstance.close();\n };\n }\n];\n","export default \"
\\n

Legg til kontaktperson

\\n
\\n\\n
\\n \\n
\\n\\n\\n
\\n \\n \\n
\";","import addcontactpersonctrl from \"./addcontactperson\";\nimport addcontactpersonhtml from \"./addcontactperson.html\";\nexport default [\n \"$log\",\n \"$uibModal\",\n \"contactpersons\",\n \"$state\",\n \"toastr\",\n function($log, $uibModal, contactpersons, $state, toastr) {\n var vm = this;\n vm.addContactPerson = function() {\n $uibModal\n .open({\n keyboard: true,\n animation: true,\n template: addcontactpersonhtml,\n controllerAs: \"modalvm\",\n\n resolve: {\n createParams: [\n function() {\n return {\n reload: false\n };\n }\n ]\n },\n size: \"lg\",\n controller: addcontactpersonctrl\n })\n .result.then(function(res) {\n if (res) {\n toastr.success(\"Kontaktperson opprettet\");\n $state.go(\n \"main.contactpersons.contactperson.index\",\n {\n contactPersonId: res.contactPersonId\n },\n {\n reload: true\n }\n );\n }\n });\n };\n\n vm.contactpersons = contactpersons.data;\n }\n];\n","export default [\n \"store\",\n \"haveRoleFilter\",\n \"$log\",\n \"$uibModal\",\n \"contactperson\",\n function (store, haveRole, $log, $uibModal, contactperson) {\n var vm = this;\n var profile = store.get(\"profile\");\n vm.taskCount = contactperson.data.taskCount;\n vm.displayCourses = haveRole([\"Admin\", \"HR\"], \"any\") || profile.contactPersonId == contactperson.data.contactperson.id;\n }\n];","export default [\n \"$log\",\n \"contactApi\",\n \"$uibModal\",\n \"contactperson\",\n \"$state\",\n \"toastr\",\n \"$confirm\",\n function (\n $log,\n contactApi,\n $uibModal,\n contactperson,\n $state,\n toastr,\n $confirm\n ) {\n var vm = this;\n\n vm.contacts = contactperson.data.contacts;\n vm.contactperson = contactperson.data.contactperson;\n vm.projContacts = contactperson.data.projContacts;\n\n vm.delete = function () {\n $confirm({\n text:\n \"Er du sikker på at du vil slette kontaktperson, du vil også slette prosjektkontakter knyttet til denne kontaktperson\"\n }).then(function () {\n contactApi\n .deleteContactPerson(vm.contactperson)\n .then(function () {\n toastr.info(\"Kontakperson slettet\");\n $state.go(\n \"main.contactpersons\",\n {},\n {\n reload: true\n }\n );\n });\n });\n };\n vm.update = function () {\n contactApi.updateContactPerson(vm.contactperson).then(function () {\n $state.go(\n \"main.contactpersons\",\n {},\n {\n reload: true\n }\n );\n });\n };\n }\n];\n","export default [\n \"$log\",\n \"noteApi\",\n \"contactApi\",\n \"$state\",\n \"contactperson\",\n \"notes\",\n \"$confirm\",\n \"albumConfig\",\n function ($log, noteApi, contactApi, $state, contactperson, notes, $confirm, albumConfig) {\n var vm = this;\n vm.contactperson = contactperson.data.contactperson;\n vm.notes = notes.data;\n vm.apiAddress = albumConfig.apiAddress;\n\n vm.deleteNote = function (note) {\n $confirm({\n text: \"Vil du slette notatet?\"\n }).then(function () {\n noteApi.deleteNote(note).then(function () {\n $state.reload();\n });\n });\n };\n vm.editNote = function (note) {\n noteApi\n .noteModal({\n note: note,\n projCustomers: []\n })\n .result.then(function (note) {\n if (note.note) {\n noteApi.editNote(note.note).then(function () {\n $state.reload();\n });\n }\n });\n };\n vm.addNote = function () {\n noteApi\n .noteModal({\n projects: []\n })\n .result.then(function (note) {\n if (note.note) {\n note.note.personId = vm.contactperson.person.id;\n\n noteApi.addNote(note.note).then(function () {\n $state.reload();\n });\n }\n });\n };\n\n vm.openProfileImg = function (firstName, lastName, imageUrl) {\n contactApi\n .profileModal({\n firstName: firstName,\n lastName: lastName,\n imageUrl: imageUrl\n })\n .result.then(function () {\n });\n };\n vm.tstamp = new Date().getTime();\n }\n];\n","import saveFile from \"shared/saveFile\";\nexport default [\n \"documentApi\",\n \"contactperson\",\n \"documents\",\n function(documentApi, contactperson, documents) {\n var vm = this;\n vm.documents = documents.data;\n vm.persistKey =\n \"contactperson_documents\" + contactperson.data.contactperson.id;\n\n vm.downloadDoc = function(doc) {\n documentApi.downloadDocuRef(doc.id).then(saveFile);\n };\n }\n];\n","export default [\n \"$log\",\n \"contactApi\",\n \"$uibModal\",\n \"contactperson\",\n \"$state\",\n \"albumConfig\",\n function($log, contactApi, $uibModal, contactperson, $state, albumConfig) {\n var vm = this;\n\n vm.contacts = contactperson.data.contacts;\n vm.contactperson = contactperson.data.contactperson;\n vm.projContacts = contactperson.data.projContacts;\n vm.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n\n vm.update = function() {\n contactApi.updateContactPerson(vm.contactperson).then(function() {\n $state.go(\n \"main.contactpersons\",\n {},\n {\n reload: true\n }\n );\n });\n };\n\n vm.nav = function(id) {\n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=0\" + \"&id=\" + id + \"&path=/contacts\";\n };\n }\n];\n","export default [\n \"contactperson\",\n function(contactperson) {\n var vm = this;\n vm.contactperson = contactperson.data.contactperson;\n\n vm.persistKey = \"contactperson_registrations_\" + vm.contactperson.id;\n\n vm.regContext = {\n contactPersonId: vm.contactperson.id\n };\n }\n];\n","export default [\n \"$log\",\n \"contactApi\",\n \"$uibModal\",\n \"contactperson\",\n \"tasks\",\n function ($log, contactApi, $uibModal, contactperson, tasks) {\n var vm = this;\n\n vm.contactperson = contactperson.data.contactperson;\n vm.tasks = tasks.data.tasks;\n\n\n }\n];","import {\n forEach\n} from \"lodash\";\nexport default [\n \"$log\",\n \"contactApi\",\n \"$uibModal\",\n \"contactperson\",\n \"$state\",\n \"toastr\",\n \"$confirm\",\n function ($log, contactApi, $uibModal, contactperson, $state, toastr, $confirm) {\n var vm = this;\n\n vm.duplicates = contactperson.data.duplicates;\n vm.mergeDuplicates = function () {\n $confirm({\n text: \"Er du sikker på at du vil slå sammen disse kontaktpersonene ? \\n\\n Duplikatene du har valgt vil bli slått sammen med kontaktpersonen du er inne på. \\n\\n NB: DETTE KAN IKKE ANGRES !!\"\n }).then(function () {\n var listToMerge = [];\n forEach(vm.duplicates, function (d) {\n if (d.this || d.selected) {\n listToMerge.push(d);\n }\n });\n\n contactApi\n .mergeDuplicates({\n duplicates: listToMerge,\n contactPersonIdToKeep: contactperson.data.contactperson.id\n })\n .then(function () {\n $state.reload();\n });\n });\n };\n\n vm.contacts = contactperson.data.contacts;\n vm.contactperson = contactperson.data.contactperson;\n vm.projContacts = contactperson.data.projContacts;\n }\n];","export default [\n \"contactperson\",\n \"userApi\",\n \"$timeout\",\n \"moment\",\n function(contactperson, userApi, $timeout, moment) {\n var vm = this;\n\n const person = contactperson.data.contactperson.person;\n\n vm.personId = person.id;\n\n vm.fromDate = moment().add(-1, \"years\");\n vm.toDate = moment();\n vm.mobile = person.mobile;\n vm.email = person.email;\n vm.currentPage = 1;\n vm.pageSize = 10;\n\n vm.fetch = function() {\n var request = {\n page: vm.currentPage,\n from: vm.fromDate,\n to: vm.toDate,\n pageSize: vm.pageSize,\n mobile: person.mobile,\n email: person.email\n };\n\n userApi.getLog(request).then(function(result) {\n vm.logs = result.data.messages;\n vm.count = result.data.count;\n vm.fromDate = result.data.fromDate;\n vm.toDate = result.data.toDate;\n });\n };\n\n $timeout(function() {\n vm.fetch();\n }, 0);\n }\n];\n","export default [\n \"$log\",\n \"contactApi\",\n \"$uibModal\",\n \"contactperson\",\n \"$state\",\n \"toastr\",\n function ($log, contactApi, $uibModal, contactperson, $state, toastr) {\n var vm = this;\n\n vm.contacts = contactperson.data.contacts;\n vm.contactperson = contactperson.data.contactperson;\n vm.projContacts = contactperson.data.projContacts;\n\n vm.onSelectContact = function (item) {\n contactApi.contactPersonRelationUpsert({\n contactId: item.id,\n contactPersonId: vm.contactperson.id\n }).then(() => {\n toastr.success(\"Relasjon lagt til\");\n\n $state.go(\"main.contactpersons.contactperson.relations\", {\n contactPersonId: vm.contactperson.id\n }, {\n reload: true\n });\n });\n };\n\n vm.deleteRelation = function (rel) {\n contactApi.contactPersonRelationUpsert({\n id: rel.id\n }).then(() => {\n $state.go(\"main.contactpersons.contactperson.relations\", {\n contactPersonId: vm.contactperson.id\n }, {\n reload: true\n });\n toastr.info(\"Relasjon fjernet\");\n });\n };\n }\n];","export default [\n \"contactperson\",\n \"$log\",\n \"noteApi\",\n \"$state\",\n \"toastr\",\n \"$confirm\",\n \"haveRoleFilter\",\n \"userApi\",\n \"externalUser\",\n function (\n contactperson,\n $log,\n noteApi,\n $state,\n toastr,\n $confirm,\n haveRole,\n userApi,\n externalUser\n ) {\n var vm = this;\n\n vm.contactperson = contactperson.data.contactperson;\n vm.externalUser = externalUser.data;\n var externalUserExists = vm.externalUser.user_id !== undefined;\n var userHaveLoggedIn = vm.externalUser.logins_count > 0;\n\n vm.showAddExternalUser = !externalUserExists && haveRole([\"Support\", \"KK\", \"PRL\"], \"any\");\n vm.showChangePasswordEmail =\n externalUserExists && userHaveLoggedIn && haveRole([\"Support\", \"KK\", \"PRL\"], \"any\");\n vm.showSendNewWelcomeEmail =\n externalUserExists && !userHaveLoggedIn && haveRole([\"Support\", \"KK\", \"PRL\"], \"any\");\n\n vm.userCannotBeCreated = !externalUserExists;\n\n vm.changePasswordEmail = function () {\n $confirm({\n text: \"Vil du sende epost om å bytte passord for ekstern.trysilhus.no?\" +\n \"\\n Dette vil medføre at epost blir sendt til kontaktperson\"\n }).then(function () {\n userApi.changePasswordEmail(\"ExternalWeb\", vm.contactperson.person).then(\n function () {\n toastr.info(\"Epost sendt\");\n $state.reload();\n },\n function () {\n toastr.error(\"Noe gikk galt når epost ble sendt. Feil logget\");\n }\n );\n });\n };\n\n vm.newWelcomeEmail = function () {\n $confirm({\n text: \"Vil du sende velkomstepost på nytt?\" +\n \"\\n Dette vil medføre at epost blir sendt til kontaktperson\"\n }).then(function () {\n userApi.changePasswordEmail(\"ExternalWeb\", vm.contactperson.person).then(\n function () {\n toastr.info(\"Epost sendt\");\n $state.reload();\n },\n function () {\n toastr.error(\"Noe gikk galt når epost ble sendt. Feil logget\");\n }\n );\n });\n };\n\n vm.createExternalUser = function () {\n $confirm({\n text: \"Vil du opprette en bruker til ekstern.trysilhus.no?\" +\n \"\\n Dette vil medføre at epost blir sendt til kontaktperson\"\n }).then(function () {\n userApi.createExternalUser(\"ExternalWeb\", vm.contactperson.person).then(\n function () {\n toastr.info(\"Bruker opprettet.\");\n $state.reload();\n },\n function () {\n toastr.error(\"Noe gikk galt når bruker ble opprettet!. Feil logget\");\n }\n );\n });\n };\n }\n];","export default [\n \"contactperson\",\n \"$log\",\n \"noteApi\",\n \"$state\",\n \"toastr\",\n \"$confirm\",\n \"haveRoleFilter\",\n \"userApi\",\n \"externalUser\",\n function (\n contactperson,\n $log,\n noteApi,\n $state,\n toastr,\n $confirm,\n haveRole,\n userApi,\n externalUser\n ) {\n var vm = this;\n\n vm.contactperson = contactperson.data.contactperson;\n vm.externalUser = externalUser.data;\n var externalUserExists = vm.externalUser.user_id !== undefined;\n // var userHaveLoggedIn = vm.externalUser.logins_count > 0;\n var isTrysilhusUser = vm.contactperson.person.email.indexOf(\"trysilhus\") > -1;\n\n vm.showAddExternalUser = !externalUserExists && !isTrysilhusUser && haveRole([\"Support\", \"KK\", \"PRL\", \"PU\"], \"any\");\n vm.showDeleteExternalUser =\n externalUserExists && !isTrysilhusUser && haveRole([\"Support\", \"KK\", \"PRL\", \"PU\"], \"any\");\n vm.showSendNewWelcomeEmail =\n externalUserExists && !isTrysilhusUser && !vm.externalUser.invitation_accepted && haveRole([\"Support\", \"KK\", \"PRL\", \"PU\"], \"any\");\n vm.isTrysilhusUser = isTrysilhusUser;\n vm.loadingSignIns = true;\n\n vm.userCannotBeCreated = !externalUserExists;\n\n userApi.getExternalUserSignIns(\"ByggTrysilhus\", vm.contactperson.person.email).then(function(res) \n {\n vm.externalUser.logins_count = res.data.extUserLoginCount;\n vm.externalUser.last_login = res.data.extUserLastSignIn;\n vm.loadingSignIns = false;\n });\n\n vm.deleteExternalUser = function () {\n $confirm({\n text: \"Vil du slette denne brukeren?\"\n }).then(function () {\n userApi.deleteExternalUser(\"ByggTrysilhus\", vm.contactperson.person).then(\n function () {\n toastr.info(\"Bruker slettet\");\n $state.reload();\n },\n function () {\n toastr.error(\"Noe gikk galt. Feil logget\");\n }\n );\n });\n };\n\n vm.newWelcomeEmail = function () {\n $confirm({\n text: \"Vil du sende invitasjons e-post på nytt?\" +\n \"\\n Dette vil medføre at e-post blir sendt til kontaktperson\"\n }).then(function () {\n userApi.changePasswordEmail(\"ByggTrysilhus\", vm.contactperson.person).then(\n function () {\n toastr.info(\"Invitasjon sendt på e-post\");\n $state.reload();\n },\n function () {\n toastr.error(\"Noe gikk galt. Feil logget\");\n }\n );\n });\n };\n\n vm.createExternalUser = function () {\n $confirm({\n text: \"Vil du opprette en bruker til Bygg Trysilhus?\" +\n \"\\n Dette vil medføre at invitasjons e-post blir sendt til kontaktperson\"\n }).then(function () {\n userApi.createExternalUser(\"ByggTrysilhus\", vm.contactperson.person).then(\n function () {\n toastr.info(\"Bruker opprettet.\");\n $state.reload();\n },\n function () {\n toastr.error(\"Noe gikk galt! Feil logget\");\n }\n );\n });\n };\n }\n];","export default [\n \"$uibModalInstance\",\n \"contactperson\",\n \"courseList\",\n \"toastr\",\n function ($uibModalInstance, contactperson, courseList, toastr) {\n var modalvm = this;\n modalvm.course = { id: 0 };\n modalvm.courses = courseList;\n\n modalvm.add = function () {\n\n if (modalvm.course.hasExpiryDate &&\n modalvm.course.expiryDate == null) {\n toastr.error(\"Utløpsdato/gyldig til mangler!\");\n return;\n }\n\n $uibModalInstance.close(modalvm.course);\n };\n\n modalvm.close = function () {\n $uibModalInstance.close();\n };\n\n modalvm.courseChange = function () {\n\n let course = modalvm.courses.filter(c => c.id == modalvm.course.courseId);\n if (course.length == 1) {\n modalvm.course.name = course[0].name;\n modalvm.course.description = course[0].description;\n modalvm.course.fromDate = null;\n modalvm.course.expiryDate = null;\n modalvm.course.hasExpiryDate = course[0].hasExpiryDate;\n modalvm.course.contactPersonId = contactperson.data.contactperson.id;\n }\n };\n }\n];","import addcoursectrl from \"./addcourse\";\nimport addcoursehtml from \"./addcourse.html\";\n\nexport default [\n \"$uibModal\",\n \"$confirm\",\n \"toastr\",\n \"$state\",\n \"contactperson\",\n \"courses\",\n \"contactApi\",\n function (\n $uibModal,\n $confirm,\n toastr,\n $state,\n contactperson,\n courses,\n contactApi\n ) {\n var vm = this;\n\n vm.courses = courses.data.courses;\n vm.courseList = courses.data.courseList;\n\n vm.deleteCourse = function (contactPersonCourse) {\n $confirm({\n text: \"Vil slette dette kurset/sertifikatet?\"\n }).then(function () {\n contactApi.deleteContactPersonCourse(contactPersonCourse.id).then(res => {\n toastr.success(\"Kurs/sertifikat slettet\");\n $state.reload();\n });\n });\n };\n\n vm.addCourse = function (contactPersonCourse) {\n contactApi.postContactPersonCourse(contactPersonCourse).then(res => {\n toastr.success(\"Kurs/sertifikat lagt til\");\n $state.reload();\n });\n };\n\n vm.addCourseDialog = function () {\n $uibModal\n .open({\n template: addcoursehtml,\n controllerAs: \"modalvm\",\n resolve: {\n contactperson: [\n function () {\n return contactperson;\n }\n ],\n courseList: [\n function () {\n return vm.courseList;\n }\n ]\n },\n size: \"lg\",\n controller: addcoursectrl\n })\n .result.then(function (res) {\n if (res) {\n vm.addCourse(res);\n }\n });\n };\n\n // vm.contactperson = contactperson.data.contactperson;\n // vm.externalUser = externalUser.data;\n // var externalUserExists = vm.externalUser.user_id !== undefined;\n // var userHaveLoggedIn = vm.externalUser.logins_count > 0;\n // var isTrysilhusUser = vm.contactperson.person.email.indexOf(\"trysilhus\") > -1;\n\n // vm.showAddExternalUser = !externalUserExists && !isTrysilhusUser && haveRole([\"Support\", \"KK\", \"PRL\"], \"any\");\n // vm.showDeleteExternalUser =\n // externalUserExists && !isTrysilhusUser && haveRole([\"Admin\"], \"any\");\n // vm.showSendNewWelcomeEmail =\n // externalUserExists && !isTrysilhusUser && !vm.externalUser.invitation_accepted && haveRole([\"Support\", \"KK\", \"PRL\"], \"any\");\n // vm.isTrysilhusUser = isTrysilhusUser;\n\n // vm.userCannotBeCreated = !externalUserExists;\n\n // vm.deleteExternalUser = function () {\n // $confirm({\n // text: \"Vil du slette denne brukeren?\"\n // }).then(function () {\n // userApi.deleteExternalUser(\"ByggTrysilhus\", vm.contactperson.person).then(\n // function () {\n // toastr.info(\"Bruker slettet\");\n // $state.reload();\n // },\n // function () {\n // toastr.error(\"Noe gikk galt. Feil logget\");\n // }\n // );\n // });\n // };\n\n // vm.newWelcomeEmail = function () {\n // $confirm({\n // text: \"Vil du sende invitasjons e-post på nytt?\" +\n // \"\\n Dette vil medføre at e-post blir sendt til kontaktperson\"\n // }).then(function () {\n // userApi.changePasswordEmail(\"ByggTrysilhus\", vm.contactperson.person).then(\n // function () {\n // toastr.info(\"Invitasjon sendt på e-post\");\n // $state.reload();\n // },\n // function () {\n // toastr.error(\"Noe gikk galt. Feil logget\");\n // }\n // );\n // });\n // };\n\n // vm.createExternalUser = function () {\n // $confirm({\n // text: \"Vil du opprette en bruker til Bygg Trysilhus?\" +\n // \"\\n Dette vil medføre at invitasjons e-post blir sendt til kontaktperson\"\n // }).then(function () {\n // userApi.createExternalUser(\"ByggTrysilhus\", vm.contactperson.person).then(\n // function () {\n // toastr.info(\"Bruker opprettet.\");\n // $state.reload();\n // },\n // function () {\n // toastr.error(\"Noe gikk galt! Feil logget\");\n // }\n // );\n // });\n // };\n }\n];","export default \"
\\n

Legg til kurs/sertifikat

\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n\\n
\\n \\n \\n
\";","import contactpersons from \"album/contactpersons/state\";\nimport contactperson from \"album/contactpersons/contactperson/state\";\nimport index from \"album/contactpersons/contactperson/index/state\";\nimport notes from \"album/contactpersons/contactperson/notes/state\";\nimport documents from \"album/contactpersons/contactperson/documents/state\";\nimport projects from \"album/contactpersons/contactperson/projects/state\";\nimport registrations from \"album/contactpersons/contactperson/registrations/state\";\nimport tasks from \"album/contactpersons/contactperson/tasks/state\";\nimport duplicates from \"album/contactpersons/contactperson/duplicates/state\";\nimport log from \"album/contactpersons/contactperson/log/state\";\nimport relations from \"album/contactpersons/contactperson/relations/state\";\nimport externalweb from \"album/contactpersons/contactperson/externalweb/state\";\nimport byggtrysilhus from \"album/contactpersons/contactperson/byggtrysilhus/state\";\nimport courses from \"album/contactpersons/contactperson/courses/state\";\n\nexport default [\n contactpersons,\n contactperson,\n index,\n notes,\n documents,\n projects,\n registrations,\n tasks,\n duplicates,\n log,\n relations,\n externalweb,\n byggtrysilhus,\n courses\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./contactpersons.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.contactpersons\", {\n url: \"contactpersons\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Kontaktpersoner\"\n },\n resolve: {\n contactpersons: [\"contactApi\", function (contactApi) {\n return contactApi.getContactPersons();\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n
NavnMobilEpostKjønnOpprettet
\\n \\n \\n \\n \\n \\n
{{p.person.fullName}}\\n {{p.person.mobile}}{{p.person.email}}\\n {{p.person.gender===undefined ? '' : p.person.gender===0 ? 'Mann' : 'Kvinne'}}\\n {{p.createdDate | date:'dd.MM.yyyy'}}\\n \\n
\\n
\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./contactperson.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.contactpersons.contactperson\", {\n url: \"/{contactPersonId}\",\n abstract: true,\n data: {\n requiresLogin: true\n },\n\n aData: {\n breadcrumbProxy: \"main.contactpersons.contactperson.index\"\n },\n resolve: {\n contactperson: [\"contactApi\", \"$stateParams\", function (contactApi, $stateParams) {\n return contactApi.getContactPerson($stateParams.contactPersonId);\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n\n }\n });\n}];","export default \"
\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n
\\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.contactpersons.contactperson.index\", {\n url: \"/contactpersonindex\",\n data: {\n requiresLogin: true\n },\n\n aData: {\n name: \"{{contactperson.data.contactperson.person.fullName}}\"\n },\n\n views: {\n \"contactpersoncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t

Person

\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./notes.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.contactpersons.contactperson.notes\", {\n url: \"/notes\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Notater \"\n },\n\n views: {\n \"contactpersoncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n notes: [\"noteApi\", \"contactperson\", function (noteApi, contactperson) {\n\n return noteApi.getNotes(contactperson.data.contactperson.id, 3);\n\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n

Notater

\\n
\\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n

{{note.createdString}}

\\n
\\n
\\n

{{note.noteText}}

\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./documents.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.contactpersons.contactperson.documents\", {\n url: \"/documents\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Dokumenter \"\n },\n\n views: {\n contactpersoncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n documents: [\n \"documentApi\",\n \"$stateParams\",\n (documentApi, $stateParams) => {\n return documentApi.getContactPersonDocuments(\n $stateParams.contactPersonId\n );\n }\n ]\n }\n });\n }\n];\n","export default \"
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnFil
{{doc.name}} {{doc.fileName}}
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./projects.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.contactpersons.contactperson.projects\", {\n url: \"/projects\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Prosjekter\"\n },\n\n views: {\n \"contactpersoncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\t\\n
\\n\\n\\n

Prosjekter

\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./registrations.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\n \"main.contactpersons.contactperson.registrations\",\n {\n url: \"/registrations\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Reklamasjoner \"\n },\n\n views: {\n contactpersoncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n }\n );\n }\n];\n","export default \"\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./tasks.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.contactpersons.contactperson.tasks\", {\n url: \"/tasks\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Oppgaver\"\n },\n resolve: {\n tasks: [\"taskApi\", \"$stateParams\", function (taskApi, $stateParams) {\n return taskApi.getContactPersonTasks($stateParams.contactPersonId);\n }]\n },\n\n views: {\n \"contactpersoncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"\";","import ctrl from \"./ctrl\";\nimport html from \"./duplicates.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.contactpersons.contactperson.duplicates\", {\n url: \"/duplicates\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Duplikater\"\n },\n\n\n views: {\n \"contactpersoncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\t\\n\\t
\\n\\t\\tIngen duplikater\\n\\t
\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
IdNavnEpostMobilLik
{{d.contactPersonId}}{{d.fullName}}{{d.email}}{{d.mobile}}\\n\\t\\t\\t\\t\\t\\t\\tMobil\\n\\t\\t\\t\\t\\t\\t\\tEpost\\n\\t\\t\\t\\t\\t\\t
\\n\\t
\\n\\t\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./log.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.contactpersons.contactperson.log\", {\n url: \"/log\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Logg\"\n },\n\n views: {\n contactpersoncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n
\\n

\\n Ingen loggoppføringer på disse datoene for mobilnummer {{ vm.mobile }} eller epost {{vm.email}}\\n

\\n
\\n
\\n\\n
\\n
\\n {{ log.timestamp | date: \\\"yyyy dd.MM HH:mm\\\" }} {{ log.subject }}\\n {{log.status}}\\n SMS\\n Epost\\n
\\n
\\n \\n

\\n Fra: {{log.from}}\\n {{ log.message }}\\n

\\n \\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./relations.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.contactpersons.contactperson.relations\", {\n url: \"/relations\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Relasjoner\"\n },\n\n views: {\n \"contactpersoncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"

Relasjoner

\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./externalweb.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.contactpersons.contactperson.externalweb\", {\n url: \"/externalweb\",\n data: {},\n aData: {\n name: \"Ekstern Bruker\"\n },\n\n views: {\n contactpersoncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n security: [\n \"userApi\",\n function (userApi) {\n return userApi.authorized([\"Support\", \"KK\", \"PRL\"]);\n }\n ],\n externalUser: [\n \"userApi\",\n \"contactperson\",\n function (userApi, contactperson) {\n return userApi.getExternalUser(\n \"ExternalWeb\",\n contactperson.data.contactperson.person.externalUserId\n );\n }\n ]\n }\n });\n}];","export default \"
\\n \\n \\n \\n
\\n\\n
\\n
\\n Bruker er blokkert!\\n
\\n
\\n
\\n
    \\n
  • \\n Bruker opprettet:\\n {{vm.externalUser.created_at | date :'dd.MM.yyyy HH:mm'}}\\n
  • \\n
  • \\n Sist oppdatert:\\n {{vm.externalUser.updated_at | date\\n :'dd.MM.yyyy HH:mm'}}\\n Aldri \\n
  • \\n
  • \\n Logget inn:\\n {{vm.externalUser.logins_count}} ganger\\n
  • \\n
  • \\n Forrige login:\\n {{vm.externalUser.last_login | date :'dd.MM.yyyy HH:mm'}}\\n Aldri \\n
  • \\n
\\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./byggtrysilhus.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.contactpersons.contactperson.byggtrysilhus\", {\n url: \"/bt\",\n data: {},\n aData: {\n name: \"Bygg Trysilhus Bruker\"\n },\n\n views: {\n contactpersoncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n security: [\n \"userApi\",\n function (userApi) {\n return userApi.authorized([\"Support\", \"KK\", \"PRL\", \"PU\"]);\n }\n ],\n externalUser: [\n \"userApi\",\n \"contactperson\",\n function (userApi, contactperson) {\n return userApi.getExternalUser(\n \"ByggTrysilhus\",\n contactperson.data.contactperson.person.email\n );\n }\n ]\n }\n });\n}];","export default \"
\\n \\n \\n \\n
\\n\\n
\\n \\n
\\n
\\n
    \\n
  • \\n Invitasjon akseptert:\\n Nei\\n
  • \\n
  • \\n Bruker opprettet:\\n {{vm.externalUser.created_at | date :'dd.MM.yyyy HH:mm'}}\\n
  • \\n
  • \\n Sist oppdatert:\\n {{vm.externalUser.updated_at | date\\n :'dd.MM.yyyy HH:mm'}}\\n Aldri \\n
  • \\n
  • \\n Logget inn (siste 30 dager):\\n {{vm.externalUser.logins_count}} ganger\\n \\n
  • \\n
  • \\n Forrige login:\\n {{vm.externalUser.last_login | date :'dd.MM.yyyy\\n HH:mm'}}\\n Aldri \\n \\n
  • \\n
\\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./courses.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.contactpersons.contactperson.courses\", {\n url: \"/courses\",\n data: {},\n aData: {\n name: \"Kurs og sertifikater\"\n },\n views: {\n contactpersoncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n courses: [\n \"contactApi\",\n \"contactperson\",\n function (contactApi, contactperson) {\n return contactApi.getContactPersonCourses(\n contactperson.data.contactperson.id\n );\n }\n ]\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnBeskrivelseUtstedt datoUtløpsdato/gyldig til
{{cs.name}}{{cs.description}}{{cs.fromDate | date}}{{cs.expiryDate | date}}\\n \\n
\\n
\\n
\";","import navigation from \"shared/navigation.js\";\nexport default [\n \"haveRoleFilter\",\n \"translateFilter\",\n \"$state\",\n function (haveRole, translate, $state) {\n var vm = this;\n\n vm.nav = navigation;\n\n vm.defaultDescription = \"Rediger,slett og legg til \";\n vm.settings = [\n {\n state: \"main.system.users\",\n allowed: haveRole(\"Admin\"),\n name: \"brukere\"\n },\n {\n state: \"main.system.companies\",\n allowed: haveRole(\"Admin\"),\n name: \"selskaper\"\n },\n {\n state: \"main.system.definitions\",\n allowed: haveRole(\"Admin\"),\n name: \"begrepsordliste\"\n },\n {\n state: \"main.system.projecttypes\",\n allowed: haveRole(\"Admin\"),\n name: \"prosjekttyper\"\n },\n {\n state: \"main.system.models\",\n allowed: haveRole(\"Admin\"),\n name: \"modeller\"\n },\n {\n state: \"main.system.postcodes\",\n allowed: haveRole([\"Admin\", \"Sales\", \"PRL\", \"PU\"], \"any\"),\n name: \"postnummer\"\n },\n\n {\n state: \"main.system.processowners\",\n allowed: haveRole([\"Admin\", \"KS\"], \"any\"),\n name: \"prosesseiere\"\n },\n {\n state: \"main.system.processphases\",\n allowed: haveRole([\"Admin\", \"KS\"], \"any\"),\n name: \"prosessfaser\"\n },\n {\n state: \"main.system.tradecodes\",\n allowed: haveRole([\"Admin\", \"KS\"], \"any\"),\n name: translate(\"TradeCodes\").toLowerCase()\n },\n {\n state: \"main.system.albumsettings\",\n allowed: haveRole([\"Admin\", \"KS\"], \"any\"),\n name: \"avanserte innstillinger\"\n },\n {\n state: \"main.system.componentgroups\",\n allowed: haveRole(\"Admin\"),\n name: \"varegrupper\"\n },\n {\n state: \"main.system.optioncategories\",\n allowed: haveRole([\"Admin\", \"SalesAdmin\"], \"any\"),\n name: \"tilvalgskategorier\"\n },\n {\n state: \"main.system.contactgroups\",\n allowed: haveRole(\"Admin\"),\n name: \"kontaktgrupper\"\n },\n {\n state: \"main.system.modules\",\n allowed: haveRole(\"Admin\"),\n name: \"moduler\"\n },\n {\n state: \"main.system.roles\",\n allowed: haveRole(\"Admin\"),\n name: \"roller\"\n },\n\n {\n state: \"main.system.sectiontypes\",\n allowed: haveRole(\"Admin\"),\n name: \"seksjonstyper\"\n },\n {\n state: \"main.system.planresources\",\n allowed: haveRole(\"Admin\"),\n name: \"ressurser\"\n },\n {\n state: \"main.system.projaccounts\",\n allowed: haveRole(\"Admin\"),\n name: \"prosjektkontoer\"\n },\n {\n url: \"system/prosjekttyper/mappestruktur\",\n isVue: true,\n allowed: haveRole([\"Admin\"], \"any\"),\n name: \"standard mappestruktur\"\n },\n {\n state: \"main.system.aberrationcauses\",\n allowed: haveRole([\"Admin\", \"KS\"], \"any\"),\n name: \"avviksårsaker\"\n },\n\n {\n state: \"main.system.aberrationtypes\",\n allowed: haveRole([\"Admin\", \"KS\"], \"any\"),\n name: \"avvikstyper\"\n },\n {\n state: \"main.system.reglinecategories\",\n allowed: haveRole([\"Admin\", \"KK\"], \"any\"),\n name: \"reklamasjonskategorier\"\n },\n {\n state: \"main.system.smslog\",\n allowed: haveRole([\"Admin\", \"Support\"], \"any\"),\n name: \"SMS logg\",\n description: \"Utgående SMS\"\n },\n {\n state: \"main.system.faqs\",\n allowed: haveRole([\"Admin\", \"Support\", \"Market\"], \"any\"),\n name: \"faq\"\n },\n\n {\n state: \"main.system.templates\",\n allowed: haveRole([\"Admin\", \"Sales\", \"Support\", \"KK\"], \"any\"),\n name: \"maler\"\n },\n {\n state: \"main.system.prognosesenteret\",\n allowed: haveRole([\"Admin\", \"Market\"], \"any\"),\n name: \"prognosesenteret\",\n description: \"Hent ut data om 1-årsbefaringer og overtakelser\"\n },\n {\n state: \"main.system.consents\",\n allowed: haveRole([\"Admin\", \"Market\"], \"any\"),\n name: \"samtykker\"\n },\n {\n state: \"main.system.tasks\",\n allowed: haveRole(\"Admin\"),\n name: \"oppgaver\",\n description: \"Start system-oppgaver\"\n },\n {\n url: \"system/section-layouts\",\n isVue: true,\n allowed: haveRole([\"Admin\", \"SalesAdmin\"], \"any\"),\n name: \"Fargevalg\"\n },\n {\n url: \"system/kursogsertifikater\",\n isVue: true,\n allowed: haveRole([\"Admin\", \"HR\"], \"any\"),\n name: \"Kurs og sertifikater\"\n },\n {\n url: \"system/barracks\",\n isVue: true,\n allowed: haveRole([\"Admin\", \"PRL\"], \"any\"),\n name: \"Brakkerigg\"\n }\n ];\n\n vm.goToSetting = (setting) => {\n $state.go(setting.state);\n };\n }\n];\n","export default [\"$log\", \"processPhase\", \"$uibModalInstance\",\n function ($log, processPhase, $uibModalInstance) {\n\n var modalvm = this;\n\n\n modalvm.processPhase = processPhase;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.processPhase);\n };\n\n\n }\n];","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"processPhases\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, processPhases, $uibModal, $state, $confirm) {\n var vm = this;\n vm.processPhases = processPhases.data;\n\n vm.deleteProcessPhase = function (m) {\n $confirm({\n text: \"Vil du slette prosessfasen ?\"\n }).then(function () {\n m.status = -1;\n systemApi.editProcessPhase(m).then(function () {\n $state.reload();\n });\n });\n };\n vm.editInsert = function (c) {\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n resolve: {\n processPhase: [\n function () {\n return c || {};\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editProcessPhase(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

Prosessfase

\\n
\\n\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n\\n\\n
\\n\\n\\n
\\n\\n \\n\\n \\n\\n
\";","export default [\"$log\", \"componentGroup\", \"$uibModalInstance\", \"parentCompGroups\",\n function ($log, componentGroup, $uibModalInstance, parentCompGroups) {\n\n var modalvm = this;\n\n modalvm.componentGroup = componentGroup;\n modalvm.parentCompGroups = parentCompGroups;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.componentGroup);\n };\n\n\n }\n];","import {\n filter\n} from \"lodash\";\nimport editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"componentGroups\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, componentGroups, $uibModal, $state, $confirm) {\n var vm = this;\n vm.componentGroups = componentGroups.data;\n\n vm.deleteComponentGroup = function (m) {\n $confirm({\n text: \"Vil du slette varegruppen ?\"\n }).then(function () {\n m.status = -1;\n systemApi.editComponentGroup(m).then(function () {\n $state.reload();\n });\n });\n };\n vm.editInsert = function (c) {\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n resolve: {\n componentGroup: [\n function () {\n return c || {};\n }\n ],\n parentCompGroups: [\n function () {\n return filter(componentGroups.data, function (g) {\n return !g.parentGroupId;\n });\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editComponentGroup(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

{{modalvm.componentGroup.id ? 'Endre varegruppe' : 'Legg til varegruppe' }}

\\n
\\n\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n\\n\\n\\n
\\n\\n\\n
\\n\\n \\n\\n \\n\\n
\";","export default [\"$log\", \"optioncategory\", \"$uibModalInstance\", \"optioncategories\", \"$scope\", \"$q\", \"toastr\",\n function ($log, optioncategory, $uibModalInstance, optioncategories, $scope, $q, toastr) {\n\n var modalvm = this;\n\n modalvm.optioncategory = optioncategory;\n modalvm.optioncategories = optioncategories;\n\n if (!modalvm.optioncategory.id)\n modalvm.optioncategory.visibleOnWeb = true;\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.optioncategory);\n };\n\n\n $scope.checkFile = function (file, base64_object) {\n\n var deferred = $q.defer();\n\n if (base64_object.filesize > 5000000) {\n base64_object = null;\n toastr.warning(\"Vedlegget er fort stort, max 5 mb\");\n }\n\n deferred.resolve(base64_object);\n\n modalvm.optioncategory.imageBlob = null;\n\n return deferred.promise;\n };\n\n\n }\n];","import {\n filter\n} from \"lodash\";\nimport editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"optioncategories\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, optioncategories, $uibModal, $state, $confirm) {\n Array.prototype.move = function (from, to) {\n this.splice(to, 0, this.splice(from, 1)[0]);\n };\n var vm = this;\n\n vm.optioncategories = optioncategories.data;\n vm.dragInfo = null;\n vm.dropInfo = null;\n\n window.onCategoryDragStart = function (event) {\n event.stopPropagation();\n var dragImage = $(event.srcElement).siblings(\"h6\")[0];\n dragImage = dragImage || $(event.srcElement.parentElement).siblings()[1];\n if (dragImage) {\n event.dataTransfer.setDragImage(dragImage, 0, -10);\n }\n\n vm.dragInfo = {\n id: event.srcElement.getAttribute(\"data-id\"),\n parentId: event.srcElement.getAttribute(\"data-parent-id\")\n };\n };\n\n window.onCategoryDragOver = function (event) {\n var sourceElement = vm.getTargetCategoryParentElement(event.srcElement);\n vm.dropInfo = {\n id: sourceElement.getAttribute(\"data-id\"),\n parentId: sourceElement.getAttribute(\"data-parent-id\")\n };\n\n if (vm.dragInfo.id != null &&\n vm.dropInfo.id != null &&\n vm.dragInfo.id != vm.dropInfo.id &&\n vm.dragInfo.parentId == vm.dropInfo.parentId) {\n event.preventDefault();\n }\n };\n\n window.onCategoryDrop = function (event) {\n event.stopPropagation();\n var oldIndexRef = vm.getArrayIndex(vm.dragInfo.id, vm.dragInfo.parentId);\n var newIndexRef = vm.getArrayIndex(vm.dropInfo.id, vm.dropInfo.parentId);\n if (oldIndexRef.index > -1 && newIndexRef.index > -1) {\n vm.moveCategory(oldIndexRef, newIndexRef);\n }\n };\n\n vm.getArrayIndex = function (id, parentId) {\n for (let index = 0; index < vm.optioncategories.length; index++) {\n const element = vm.optioncategories[index];\n if (element.parentCategoryId)\n continue;\n if (!element.parentCategoryId && element.id == id) {\n return { parentIndex: null, index: index };\n }\n for (let cIndex = 0; cIndex < vm.optioncategories[index].children.length; cIndex++) {\n const childElement = vm.optioncategories[index].children[cIndex];\n if (childElement.id == id && childElement.parentCategoryId == parentId)\n return { parentIndex: index, index: cIndex };\n }\n }\n return { parentIndex: -1, index: -1 };\n };\n\n vm.moveCategory = function (oldIndexRef, newIndexRef) {\n if (oldIndexRef.parentIndex == null) {\n let optCategories = vm.optioncategories;\n optCategories.move(oldIndexRef.index, newIndexRef.index);\n vm.optioncategories = [...optCategories];\n }\n else {\n let optCategories = vm.optioncategories;\n let optCategoryChildren = optCategories[oldIndexRef.parentIndex].children;\n optCategoryChildren.move(oldIndexRef.index, newIndexRef.index);\n optCategories[oldIndexRef.parentIndex].children = [...optCategoryChildren];\n vm.optioncategories = [...optCategories];\n }\n vm.saveOrdering(vm.optioncategories);\n };\n\n vm.saveOrdering = function (optioncategories) {\n systemApi.editOptionCategoriesOrder(optioncategories).then(function () {\n });\n };\n\n vm.getTargetCategoryParentElement = function (element) {\n if (element) {\n if (element.getAttribute(\"data-id\") != null) {\n return element;\n }\n else\n return vm.getTargetCategoryParentElement(element.parentElement);\n }\n };\n\n vm.deleteOptionCategory = function (m) {\n $confirm({\n text: \"Vil du slette tilvalgskatogorien ?\"\n }).then(function () {\n m.status = -1;\n systemApi.editOptionCategory(m).then(function () {\n $state.reload();\n });\n });\n };\n vm.editInsert = function (c) {\n\n $uibModal\n .open({\n template: edithtml,\n size: \"lg\",\n controllerAs: \"modalvm\",\n resolve: {\n optioncategory: [\n \"systemApi\",\n \"$q\",\n function (systemApi, $q) {\n var deferred = $q.defer();\n if (c.id === 0) {\n systemApi.getOptionCategoryResources().then(function (resp) {\n deferred.resolve({ categoryResources: resp.data });\n });\n } else {\n systemApi.getOptionCategory(c.id).then(function (resp) {\n deferred.resolve(resp.data);\n });\n }\n\n return deferred.promise;\n }\n ],\n\n optioncategories: [\n function () {\n return filter(optioncategories.data, function (g) {\n return !g.parentCategoryId && g.id !== c.id;\n });\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editOptionCategory(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

\\n {{modalvm.optioncategory.id ? 'Endre tilvalgskategori' : 'Legg til tilvalgskategori' }}\\n

\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
Kategori bilde: Bilde må\\n minst ha en høyde av 145px og\\n ikke\\n mer enn 180px
\\n
\\n \\\"Kategori\\n
\\n Fjern\\n bilde\\n
\\n 0 && modalvm.optioncategory.parentCategoryId == null\\\" />\\n
0 && modalvm.optioncategory.parentCategoryId == null\\\">\\n Frister til kunde:
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
GruppeRessursDager før oppstart
{{ cr.productionGroupName }}\\n \\n \\n \\n
\\n \\n\\n\\n
\\n\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./optioncategories.html\";\nexport default [\n \"$stateProvider\",\n function ($stateProvider) {\n $stateProvider.state(\"main.system.optioncategories\", {\n url: \"/optioncategories\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Tilvalgskategorier\"\n },\n resolve: {\n security: [\n \"userApi\",\n function (userApi) {\n return userApi.authorized([\"OptionAdmin\", \"SalesAdmin\"]);\n }\n ],\n optioncategories: [\n \"systemApi\",\n function (systemApi) {\n return systemApi.getOptionCategories();\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n\\n\\n

Tilvalgskategorier

\\n
\\n \\n
\\n
{{cg.name}}
\\n |\\n \\n \\n \\n \\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdNameTilvalgsfrist - Varsling til kunder
{{option.id}}{{option.name}}\\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\";","export default [\"$log\", \"projectType\", \"$uibModalInstance\",\n function ($log, projectType, $uibModalInstance) {\n\n var modalvm = this;\n\n\n modalvm.projectType = projectType;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.projectType);\n };\n\n\n }\n];","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"projectTypes\",\n \"$uibModal\",\n \"$state\",\n function ($log, systemApi, projectTypes, $uibModal, $state) {\n var vm = this;\n vm.projectTypes = projectTypes.data;\n\n vm.editInsert = function (c) {\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n resolve: {\n projectType: [\n function () {\n return c || {};\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editProjectType(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

Prosjekttype

\\n
\\n\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n\\n\\n
\\n\\n \\n\\n \\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./projecttypes.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.system.projecttypes\", {\n url: \"/projecttypes\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Prosjekttyper\"\n },\n resolve: {\n projectTypes: [\"systemApi\", function (systemApi) {\n return systemApi.getProjectTypes();\n }]\n },\n views: {\n\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n
ForkortelseNavnBeskrivelse
{{pt.short}}{{pt.name}}{{pt.description}}\\n \\n
\\n
\\n
\";","export default [\n \"$log\",\n \"planResource\",\n \"$uibModalInstance\",\n \"planResourceGroups\",\n \"contactPersons\",\n \"tradeCodes\",\n \"productionGroups\",\n function(\n $log,\n planResource,\n $uibModalInstance,\n planResourceGroups,\n contactPersons,\n tradeCodes,\n productionGroups\n ) {\n var modalvm = this;\n\n modalvm.planResource = planResource;\n modalvm.tradeCodes = tradeCodes;\n modalvm.contactPersons = contactPersons;\n\n modalvm.productionGroups = productionGroups;\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.ok = function() {\n $uibModalInstance.close(modalvm.planResource);\n };\n }\n];\n","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nimport { filter, map } from \"lodash\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"planresources\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function($log, systemApi, planresources, $uibModal, $state, $confirm) {\n var vm = this;\n vm.resourcesLevel1 = planresources.data.resourcesLevel1;\n\n (vm.deleteResource = function(r) {\n $confirm({\n text: \"Vil du slette denne ressursen ?\"\n }).then(function() {\n systemApi.deletePlanResource(r).then(function() {\n $state.reload();\n });\n });\n }),\n (vm.editInsert = function(c) {\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n resolve: {\n planResource: [\n function() {\n return c || {};\n }\n ],\n productionGroups: [\n function() {\n return planresources.data.productionGroups;\n }\n ],\n contactPersons: [\n function() {\n return planresources.data.contactPersons;\n }\n ],\n tradeCodes: [\n function() {\n return planresources.data.tradeCodes;\n }\n ],\n planResourceGroups: [\n function() {\n return map(\n filter(\n planresources.data.resources,\n function(r) {\n return (\n !r.parentId && r.id !== c.id\n );\n }\n ),\n function(r) {\n return {\n id: r.id,\n name: r.name,\n planType: r.planType,\n productionGroupId:\n r.productionGroupId\n };\n }\n );\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function(r) {\n if (r) {\n systemApi.editPlanResource(r).then(function() {\n $state.reload();\n });\n }\n });\n });\n }\n];\n","export default \"
\\n

Ressurs

\\n
\\n\\n
\\n\\n
\\n \\n\\n \\n
\\n
\\n \\n \\n
\\n\\n\\n
\\n \\n \\n
\\n
\\n \\n\\n \\n {{$select.selected.display}}\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n\\n \\n {{$select.selected.value}}\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./planresources.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.system.planresources\", {\n url: \"/planresources\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Ressurser\"\n },\n resolve: {\n planresources: [\"systemApi\", function (systemApi) {\n return systemApi.getPlanResources();\n }]\n },\n views: {\n\n \"@\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n

Ressurs nivå 1

\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
TypeProduksjonsgruppeNavnFagområdeAnsvarligRessurserSortering
\\n \\n
{{r.planTypeString}}{{r.productionGroupName}}{{r.name}} {{r.tradeCodeName}}{{r.person}}{{r.childrenCount}}{{r.index}}\\n \\n \\n \\n
\\n
\\n
\";","import { filter } from \"lodash\";\nexport default [\n \"$log\",\n \"planResource\",\n \"$uibModalInstance\",\n \"parents\",\n \"contactPersons\",\n \"tradeCodes\",\n \"productionGroups\",\n function(\n $log,\n planResource,\n $uibModalInstance,\n parents,\n contactPersons,\n tradeCodes,\n productionGroups\n ) {\n var modalvm = this;\n\n modalvm.planResource = planResource;\n\n modalvm.tradeCodes = tradeCodes;\n modalvm.contactPersons = contactPersons;\n\n modalvm.productionGroups = productionGroups;\n modalvm.parents = parents;\n\n modalvm.productionGroupChange = function() {\n modalvm.parents = filter(parents, {\n productionGroupId: modalvm.planResource.productionGroupId\n });\n };\n\n modalvm.productionGroupChange();\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.ok = function() {\n $uibModalInstance.close(modalvm.planResource);\n };\n }\n];\n","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nimport { filter, find, map } from \"lodash\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"planresources\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n \"$stateParams\",\n \"toastr\",\n function(\n $log,\n systemApi,\n planresources,\n $uibModal,\n $state,\n $confirm,\n $stateParams,\n toastr\n ) {\n var vm = this;\n var parentId = Number($stateParams.parentId);\n var parentResource = find(planresources.data.resourcesLevel1, {\n id: parentId\n });\n\n vm.newResource = {\n planType: parentResource.planType,\n productionGroupId: parentResource.productionGroupId,\n parentId: parentId\n };\n\n vm.resourcesLevel2 = filter(planresources.data.resourcesLevel2, {\n parentId: parentId\n });\n\n vm.deleteResource = function(r) {\n $confirm({\n text: \"Vil du slette denne ressursen ?\"\n }).then(function() {\n systemApi.deletePlanResource(r).then(function() {\n toastr.success(\"Ressurs slettet\");\n $state.reload();\n });\n });\n };\n vm.editInsert = function(c) {\n $uibModal\n .open({\n template: edithtml,\n backdrop: \"static\",\n size: \"lg\",\n controllerAs: \"modalvm\",\n resolve: {\n planResource: [\n function() {\n return c || {};\n }\n ],\n productionGroups: [\n function() {\n return planresources.data.productionGroups;\n }\n ],\n contactPersons: [\n function() {\n return planresources.data.contactPersons;\n }\n ],\n tradeCodes: [\n function() {\n return planresources.data.tradeCodes;\n }\n ],\n parents: [\n function() {\n return map(\n filter(\n planresources.data.resourcesLevel1,\n function(r) {\n return r.planType === c.planType;\n }\n ),\n function(r) {\n return {\n id: r.id,\n name: r.name,\n productionGroupId:\n r.productionGroupId\n };\n }\n );\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function(r) {\n if (r) {\n systemApi.editPlanResource(r).then(function() {\n $state.reload();\n });\n }\n });\n };\n }\n];\n","export default \"\\n
\\n

Ressurs

\\n
\\n\\n
\\n\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n {{$select.selected.display}}\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n\\n \\n {{$select.selected.value}}\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n\\n

Konfigurasjon

\\n\\n
{{modalvm.source|json}}
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n\\n
\\n\\n\\n \\n
\\n Seksjoner\\n
\\n\\n \\n
\\n Dager\\n
\\n
\\n
\\n\\n\\n\\n\\n
\\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./level2.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.system.planresources2\", {\n url: \"/planresources2/{parentId}\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Ressurser nivå 2\"\n },\n resolve: {\n planresources: [\"systemApi\", function (systemApi) {\n return systemApi.getPlanResources();\n }]\n },\n views: {\n\n \"@\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n

Ressurs nivå 2

\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Hører til ressursNavnFagområdeAnsvarligHendelserSortering
{{r.parentName}}{{r.name}}{{r.tradeCodeName}}{{r.person}}{{r.eventCount}}{{r.index}}\\n \\n \\n
\\n
\\n Tilbake ett nivå\\n
\";","export default [\"projAccount\", \"$uibModalInstance\", \"tradeCodes\",\n function (projAccount, $uibModalInstance, tradeCodes) {\n\n var modalvm = this;\n\n modalvm.projAccount = projAccount;\n modalvm.tradeCodes = tradeCodes;\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.projAccount);\n };\n }\n];","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\n\nexport default [\n \"$log\",\n \"systemApi\",\n \"projaccounts\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, projaccounts, $uibModal, $state, $confirm) {\n var vm = this;\n\n vm.projaccounts = projaccounts.data.accounts;\n vm.disableInsert = projaccounts.data.accounts ?\n projaccounts.data.accounts.filter(pa => pa.bcId != null).length > 0\n : false;\n\n (vm.deleteResource = function (r) {\n $confirm({\n text: \"Vil du slette denne kontoen?\"\n }).then(function () {\n systemApi.deleteProjAccount(r.id).then(function () {\n $state.reload();\n });\n });\n }),\n (vm.editInsert = function (c) {\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n resolve: {\n projAccount: [\n function () {\n return c || {};\n }\n ],\n tradeCodes: [\n function () {\n return projaccounts.data.tradeCodes;\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (r) {\n if (r) {\n systemApi.putProjAccount(r).then(function () {\n $state.reload();\n });\n }\n });\n });\n }\n];","export default \"
\\n

Konto

\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n {{$select.selected.display}}\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./projaccounts.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.system.projaccounts\", {\n url: \"/projaccounts\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Prosjektkontoer\"\n },\n resolve: {\n projaccounts: [\"systemApi\", function (systemApi) {\n return systemApi.getProjAccounts();\n }]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n
KontoNavnFagområdeBonus id
{{r.projAccountNum}} \\n \\n {{r.name}}{{r.tradeCode.name}}{{r.bonusId}}\\n \\n
\\n
\\n
\";","export default [\"$log\", \"sectionType\", \"$uibModalInstance\", \"models\",\n function ($log, sectionType, $uibModalInstance, models) {\n\n var modalvm = this;\n\n\n modalvm.sectionType = sectionType;\n modalvm.models = models.data;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.sectionType);\n };\n\n\n }\n];","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"sectionTypes\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, sectionTypes, $uibModal, $state, $confirm) {\n var vm = this;\n vm.sectionTypes = sectionTypes.data;\n\n vm.deleteSectionType = function (c) {\n $confirm({\n text: \"Vil du slette seksjonstype?\"\n }).then(function () {\n c.status = -1;\n systemApi.editSectionType(c).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.editInsert = function (c) {\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n resolve: {\n sectionType: [\n function () {\n return c || {};\n }\n ],\n models: [\n \"systemApi\",\n function (systemApi) {\n return systemApi.getModels();\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editSectionType(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

Seksjonstype

\\n
\\n\\n
\\n\\n
\\n \\n \\n
\\n\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n\\n\\n
\\n\\n \\n\\n \\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./sectiontypes.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.system.sectiontypes\", {\n url: \"/sectiontypes\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Seksjonstyper\"\n },\n resolve: {\n sectionTypes: [\"systemApi\", function (systemApi) {\n return systemApi.getSectionTypes();\n }]\n\n },\n views: {\n\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnBeskrivelseModell
\\n
{{st.name}} {{st.description}}{{st.modelName}}\\n \\n \\n \\n
\\n
\\n
\";","import smshtml from \"./sms.html\";\nexport default [\n \"$log\",\n \"moment\",\n \"$uibModal\",\n \"systemApi\",\n \"toastr\",\n function ($log, moment, $uibModal, systemApi, toastr) {\n\n var vm = this;\n\n vm.from = new Date();\n vm.to = new Date();\n\n vm.readSms = function (sms) {\n\n $uibModal.open({\n template: smshtml,\n keyboard: true,\n controllerAs: \"modalvm\",\n controller: [\n \"$uibModalInstance\",\n \"sms\",\n function ($uibModalInstance, sms) {\n var modalvm = this;\n modalvm.sms = sms;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n }\n ],\n resolve: {\n sms: [function () {\n return sms;\n }]\n }\n });\n\n };\n\n vm.getLog = function () {\n\n if (!vm.from || !vm.to) {\n toastr.warning(\"Du må sette dato\");\n }\n\n systemApi\n .getSmsLog({\n query: \"\",\n from: vm.from,\n to: vm.to\n })\n .then(function (res) {\n vm.smslog = res.data;\n });\n\n };\n\n vm.setFilter = function (filter) {\n\n switch (filter) {\n case 1:\n vm.from = new Date();\n vm.to = new Date();\n\n break;\n case 2:\n vm.from = moment()\n .subtract(1, \"days\")\n .toDate();\n vm.to = moment()\n .subtract(1, \"days\")\n .toDate();\n\n break;\n case 3:\n vm.from = moment()\n .subtract(7, \"days\")\n .toDate();\n vm.to = new Date();\n\n break;\n case 4:\n vm.from = moment()\n .subtract(30, \"days\")\n .toDate();\n vm.to = new Date();\n\n break;\n case 5:\n vm.from = moment().startOf(\"month\");\n vm.to = moment().endOf(\"month\");\n\n break;\n case 6:\n vm.from = moment().subtract(1, \"month\").startOf(\"month\");\n vm.to = moment().subtract(1, \"month\").endOf(\"month\");\n\n break;\n }\n\n vm.getLog();\n\n };\n\n }\n];","export default \"
\\n

SMS

\\n
\\n
\\n\\n \\n\\n\\n
\\n
\\n\\n\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./smslog.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.system.smslog\", {\n url: \"/smslog\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"SMS logg\"\n },\n\n\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
TidProsjektHusSeksjonNavnNummerStatusSMS
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n
{{l.sent | date : 'dd.MM.yyyy HH:mm'}}{{l.projectName}}{{l.houseNum}}{{l.sectionNum}}{{l.name}}{{l.number}}{{l.status}}\\n Les SMS\\n
\\n
\\n \\n
\";","export default [\n \"$log\",\n \"company\",\n \"businessCentralCompanies\",\n \"$uibModalInstance\",\n \"searchApi\",\n function ($log, company, businessCentralCompanies, $uibModalInstance, searchApi) {\n var modalvm = this;\n\n modalvm.company = company;\n modalvm.businessCentralCompanies = businessCentralCompanies;\n\n modalvm.searchContacts = function (s) {\n searchApi\n .dropDownSearch({\n type: \"contact\",\n search: s\n })\n .then(function (res) {\n modalvm.contacts = res.data;\n });\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.company);\n };\n }\n];","import { forEach } from \"lodash\";\nimport editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"companies\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, companies, $uibModal, $state, $confirm) {\n var vm = this;\n vm.companies = companies.data;\n vm.businessCentralCompanies = [];\n\n systemApi.getBusinessCentralCompanies().then(function (res) {\n vm.businessCentralCompanies = res.data;\n forEach(vm.companies, function (company) {\n var bccIndex = vm.businessCentralCompanies\n .findIndex(i => i.id == company.bcCompanyId);\n if (bccIndex > -1) {\n company.bcCompanyName = vm.businessCentralCompanies[bccIndex].name;\n }\n });\n });\n\n vm.deleteCompany = function (c) {\n $confirm({\n text: \"Vil du slette selskapet ?\"\n }).then(function () {\n c.status = -1;\n systemApi.editCompany(c).then(function () {\n $state.reload();\n });\n });\n };\n vm.editInsert = function (c) {\n $uibModal\n .open({\n template: edithtml,\n backdrop: \"static\",\n controllerAs: \"modalvm\",\n size: \"lg\",\n resolve: {\n company: [\n function () {\n return c || {};\n }\n ],\n businessCentralCompanies: [\n function () {\n return vm.businessCentralCompanies;\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editCompany(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];\n","export default \"
\\n

{{modalvm.company.name || 'Legg til nytt selskap'}}

\\n
\\n
\\n\\n
\\n \\n\\n
\\n \\n\\n
\\n
\\n\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./companies.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.system.companies\", {\n url: \"/companies\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Selskaper\"\n },\n resolve: {\n companies: [\"systemApi\", function (systemApi) {\n return systemApi.getCompanies();\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
IdNavnKontonummerOrgnr.Selskap (Business Central)
{{c.companyId}}\\n\\t\\t\\t\\t\\t\\t{{c.name}}\\n\\t\\t\\t\\t\\t{{c.accountNum}}{{c.regNum}}{{c.bcCompanyName}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t
\\n
\";","export default [\"$log\", \"definition\", \"$uibModalInstance\", function ($log, definition, $uibModalInstance) {\n\n var modalvm = this;\n\n modalvm.definition = definition;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.definition);\n };\n\n\n}];","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"definitions\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, definitions, $uibModal, $state, $confirm) {\n var vm = this;\n vm.definitions = definitions.data;\n\n vm.deleteDefinition = function (c) {\n $confirm({\n text: \"Vil du slette ordet ?\"\n }).then(function () {\n c.status = -1;\n systemApi.editDefinition(c).then(function () {\n $state.reload();\n });\n });\n };\n vm.editInsert = function (c) {\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n resolve: {\n definition: [\n function () {\n return c || {};\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editDefinition(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

{{modalvm.definition.word || 'Legg til nytt begrep'}}

\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./definitions.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.system.definitions\", {\n url: \"/definitions\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Begrepsordliste\"\n },\n resolve: {\n definitions: [\"systemApi\", function (systemApi) {\n return systemApi.getDefinitions();\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
IdOrdBeskrivelse
{{c.id}}{{c.word}}{{c.description}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t
\\n
\";","export default [\"$log\", \"contactgroup\", \"$uibModalInstance\", function ($log, contactgroup, $uibModalInstance) {\n\n var modalvm = this;\n\n modalvm.contactgroup = contactgroup;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.contactgroup);\n };\n\n\n}];","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"contactgroups\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, contactgroups, $uibModal, $state, $confirm) {\n var vm = this;\n vm.contactgroups = contactgroups.data;\n\n vm.deleteContactGroup = function (c) {\n $confirm({\n text: \"Vil du slette gruppen ?\"\n }).then(function () {\n c.status = -1;\n systemApi.editContactGroup(c).then(function () {\n $state.reload();\n });\n });\n };\n vm.editInsert = function (c) {\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n resolve: {\n contactgroup: [\n function () {\n return c || {};\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editContactGroup(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

{{modalvm.contactgroup.description || 'Legg til ny gruppe'}}

\\n
\\n\\n
\\n\\n \\n\\n\\n
\\n \\n \\n
\\n\\n\\n\\n\\n\\n\\n\\n
\\n\\n\\n
\\n\\n \\n\\n \\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./contactgroups.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.system.contactgroups\", {\n url: \"/contactgroups\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Kontaktgrupper\"\n },\n resolve: {\n contactgroups: [\"systemApi\", function (systemApi) {\n return systemApi.getContactGroups();\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
Navn
{{c.description}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t
\\n
\";","export default [\n \"$log\",\n \"cause\",\n \"$uibModalInstance\",\n \"aberrationTypes\",\n function($log, cause, $uibModalInstance, aberrationTypes) {\n var modalvm = this;\n\n modalvm.aberrationTypes = aberrationTypes.data;\n\n modalvm.cause = cause;\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.ok = function() {\n $uibModalInstance.close(modalvm.cause);\n };\n }\n];\n","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\n\nexport default [\n \"$log\",\n \"systemApi\",\n \"aberrationcauses\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, aberrationcauses, $uibModal, $state, $confirm) {\n var vm = this;\n vm.aberrationcauses = aberrationcauses.data;\n\n vm.deleteCause = function (m) {\n $confirm({\n text: \"Vil du slette avviksårsaken ?\"\n }).then(function () {\n m.status = -1;\n systemApi.editAberrationCause(m).then(function () {\n $state.reload();\n });\n });\n };\n vm.editInsert = function (c) {\n if (c) {\n c.status = 1;\n } else {\n c = {\n status: 2\n };\n }\n\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n resolve: {\n cause: [\n function () {\n return c || {};\n }\n ],\n aberrationTypes: [\n function () {\n return systemApi.getAberrationTypes();\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editAberrationCause(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

{{modalvm.cause.name || 'Legg til avviksårsak'}}

\\n
\\n\\n
\\n\\n\\n\\n\\n\\n
\\n \\n \\n
\\n\\n\\n\\n\\n
\\n \\n \\n
\\n \\n
\\n\\n\\n\\n\\n\\n\\n\\n\\n
\\n\\n \\n\\n \\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./aberrationcauses.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.system.aberrationcauses\", {\n url: \"/aberrationcauses\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Avviksårsaker\"\n },\n resolve: {\n aberrationcauses: [\"systemApi\", function (systemApi) {\n return systemApi.getAberrationCauses();\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnAvvikstype
{{m.name}}{{m.aberrationTypeName}}\\n \\n \\n
\\n
\\n
\";","export default [\"$log\", \"$uibModalInstance\", \"aberrationtype\",\n function ($log, $uibModalInstance, aberrationtype) {\n\n var modalvm = this;\n\n\n modalvm.aberrationtype = aberrationtype;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.aberrationtype);\n };\n\n\n }\n];","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"aberrationtypes\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, aberrationtypes, $uibModal, $state, $confirm) {\n var vm = this;\n vm.aberrationtypes = aberrationtypes.data;\n\n vm.deleteType = function (m) {\n $confirm({\n text: \"Vil du slette avvikstypen ?\"\n }).then(function () {\n m.status = -1;\n systemApi.editAberrationType(m).then(function () {\n $state.reload();\n });\n });\n };\n vm.editInsert = function (c) {\n if (c) {\n c.status = 1;\n } else {\n c = {\n status: 2\n };\n }\n\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n resolve: {\n aberrationtype: [\n function () {\n return c;\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editAberrationType(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

{{modalvm.aberrationtype.name || 'Legg til avviksårsak'}}

\\n
\\n\\n
\\n\\n\\n\\n\\n\\n
\\n \\n \\n
\\n
\\n \\n\\n \\n
\\n\\n\\n\\n\\n\\n\\n
\\n\\n\\n\\n\\n\\n\\n\\n\\n
\\n\\n \\n\\n \\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./aberrationtypes.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.system.aberrationtypes\", {\n url: \"/aberrationtypes\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Avvikstyper\"\n },\n resolve: {\n aberrationtypes: [\"systemApi\", function (systemApi) {\n return systemApi.getAberrationTypes();\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n
NavnKategori
{{m.name}}{{m.categoryString}}\\n \\n \\n
\\n
\\n
\";","export default [\"$log\", \"model\", \"$uibModalInstance\", \"projectTypes\",\n function ($log, model, $uibModalInstance, projectTypes) {\n\n var modalvm = this;\n\n modalvm.projectTypes = projectTypes.data;\n modalvm.model = model;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.model);\n };\n\n\n }\n];","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"models\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function($log, systemApi, models, $uibModal, $state, $confirm) {\n var vm = this;\n vm.models = models.data;\n\n vm.deleteModel = function(m) {\n $confirm({\n text: \"Vil du slette modellen ?\"\n }).then(function() {\n m.status = -1;\n systemApi.editModel(m).then(function() {\n $state.reload();\n });\n });\n };\n vm.editInsert = function(c) {\n $uibModal\n .open({\n template: edithtml,\n backdrop: \"static\",\n controllerAs: \"modalvm\",\n resolve: {\n projectTypes: [\n function() {\n return systemApi.getProjectTypes();\n }\n ],\n model: [\n function() {\n return c || {};\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function(res) {\n if (res !== undefined) {\n systemApi.editModel(res).then(function() {\n $state.reload();\n });\n }\n });\n };\n }\n];\n","export default \"
\\n

{{modalvm.model.modelName || 'Legg til modell'}}

\\n
\\n\\n
\\n\\n\\n\\n\\n\\n
\\n \\n \\n
\\n\\n\\n\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n \\n\\n
\\n\\n\\n\\n\\n\\n\\n\\n\\n
\\n\\n \\n\\n \\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./models.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.system.models\", {\n url: \"/models\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Modeller\"\n },\n resolve: {\n models: [\"systemApi\", function (systemApi) {\n return systemApi.getModels();\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnProsjekttype
{{m.modelName}}{{m.projTypeName}}\\n \\n \\n
\\n
\\n
\";","export default [\"$uibModalInstance\", \"$log\", \"m\", \"projTypes\",\n function ($uibModalInstance, $log, m, projTypes) {\n\n\n var modalvm = this;\n modalvm.m = m;\n modalvm.projTypes = projTypes;\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n\n\n $uibModalInstance.close(modalvm.m);\n\n };\n\n\n }\n];","import insertUpdateModulectrl from \"./insertUpdateModule\";\nimport insertUpdateModulehtml from \"./insertUpdateModule.html\";\nexport default [\n \"$log\",\n \"moduleApi\",\n \"modules\",\n \"$uibModal\",\n \"$state\",\n function ($log, moduleApi, modules, $uibModal, $state) {\n var vm = this;\n\n var openInsertUpdateModal = function (m) {\n return $uibModal.open({\n template: insertUpdateModulehtml,\n controllerAs: \"modalvm\",\n resolve: {\n m: [\n function () {\n return m;\n }\n ],\n projTypes: [\n function () {\n return modules.data.projTypes;\n }\n ]\n },\n controller: insertUpdateModulectrl\n });\n };\n\n vm.modules = modules.data.modules;\n vm.projTypes = modules.data.projTypes;\n\n vm.editModule = function (m) {\n openInsertUpdateModal(m).result.then(function (mres) {\n if (mres) {\n moduleApi.updateModule(mres).then(function () {\n $state.reload();\n });\n }\n });\n };\n\n vm.addModule = function () {\n var m = {\n id: -1\n };\n openInsertUpdateModal(m).result.then(function (mres) {\n if (mres) {\n moduleApi.insertModule(mres).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

{{modalvm.m.id===-1 ? 'Legg til modul' : modalvm.m.moduleId }}

\\n
\\n
\\n\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n\\n\\n\\n\\n\\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./modules.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.system.modules\", {\n url: \"/modules\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Moduler\"\n },\n resolve: {\n modules: [\"moduleApi\", function (moduleApi) {\n\n return moduleApi.getModules(true);\n }]\n },\n\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdNavnEtasjerRomInaktivTypeRegistrert
\\n \\n \\n \\n
{{m.moduleId}}{{m.name}}{{m.floor}}{{m.rooms}}{{m.inActive ? 'Ja' : 'Nei'}}{{m.projType.name}}{{m.createdDate | date:'dd.MM.yyyy'}}\\n \\n
\\n
\\n
\";","export default [\"$log\", \"processOwner\", \"$uibModalInstance\",\n function ($log, processOwner, $uibModalInstance) {\n\n var modalvm = this;\n\n modalvm.processOwner = processOwner;\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.processOwner);\n };\n\n\n }\n];","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"processowners\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, processowners, $uibModal, $state, $confirm) {\n var vm = this;\n vm.processowners = processowners.data;\n\n vm.deleteProcessOwner = function (c) {\n $confirm({\n text: \"Vil du slette prosesseier ?\"\n }).then(function () {\n c.status = -1;\n systemApi.editProcessOwner(c).then(function () {\n $state.reload();\n });\n });\n };\n vm.editInsert = function (c) {\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n resolve: {\n processOwner: [\n function () {\n return c || {};\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editProcessOwner(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

\\n
\\n\\n
\\n\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n\\n
\\n\\n\\n
\\n\\n \\n\\n \\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./processowners.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.system.processowners\", {\n url: \"/processowners\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Prosesseiere\"\n },\n resolve: {\n processowners: [\"systemApi\", function (systemApi) {\n return systemApi.getProcessOwners();\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnNøkkelIndeks
{{po.description}}{{po.isoKey}}{{po.isoIndex}}\\n \\n \\n
\\n
\\n
\";","import { filter, includes, map } from \"lodash\";\nexport default [\n \"$log\",\n \"user\",\n \"roles\",\n \"$uibModalInstance\",\n \"searchApi\",\n function ($log, user, roles, $uibModalInstance, searchApi) {\n var modalvm = this;\n modalvm.user = user;\n modalvm.roles = roles;\n\n var filterRoles = function () {\n var roleIds = map(user.roles, \"roleId\");\n\n modalvm.rolesFiltered = filter(modalvm.roles, function (r) {\n return !includes(roleIds, r.id);\n });\n };\n\n filterRoles();\n\n modalvm.addRoleToUser = function () {\n var role = {\n roleId: modalvm.newRole.id,\n roleName: modalvm.newRole.roleName,\n userId: modalvm.user.id,\n updatedString: \"Nå\",\n status: 2\n };\n\n modalvm.user.roles = modalvm.user.roles || [];\n modalvm.user.roles.push(role);\n modalvm.newRole = null;\n filterRoles();\n };\n\n modalvm.deleteRole = function (roleName) {\n var index =\n modalvm.user.roles.findIndex(r => (r.roleName || r.roleRoleName) == roleName);\n if (index > -1) {\n modalvm.user.roles.splice(index, 1);\n }\n };\n\n modalvm.contactpersons = [\n {\n contactPersonId: modalvm.user.contactPersonId,\n contactPersonName: modalvm.user.contactPersonPersonFullName\n }\n ];\n\n modalvm.searchContactPerson = function (s) {\n if (!s) return;\n searchApi.searchContactPersons(s, 1).then(function (res) {\n modalvm.contactpersons = res.data;\n });\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.user);\n };\n }\n];\n","import {\n forEach,\n map\n} from \"lodash\";\nimport editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"users\",\n \"$uibModal\",\n \"$state\",\n function ($log, systemApi, users, $uibModal, $state) {\n var vm = this;\n vm.users = users.data.users;\n vm.roles = users.data.roles;\n\n forEach(vm.users, function (u) {\n u.roleString = map(u.roles, \"roleRoleName\").join(\", \");\n });\n\n vm.editInsert = function (c) {\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n backdrop: \"static\",\n resolve: {\n user: [\n function () {\n return c || {};\n }\n ],\n roles: [\n function () {\n return users.data.roles;\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n forEach(res.roles, function (role) {\n role.roleId = 0;\n });\n systemApi.editUser(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

{{modalvm.user.userName}}

\\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
RolleEndret
{{role.roleName || role.roleRoleName}}{{role.updatedString}}\\n \\n \\n \\n
\\n \\n {{$select.selected.roleName}}\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n {{$select.selected.contactPersonName}}\\n ({{$select.selected.contactPersonId}})\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./users.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.system.users\", {\n url: \"/users\",\n aData: {\n name: \"Brukere\"\n },\n resolve: {\n users: [\"systemApi\", function (systemApi) {\n return systemApi.getUsers();\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n
NavnTittelRollerInnloggingerSist innlogget
{{user.userName}}{{user.jobTitle}}{{user.roleString}}{{user.loginCount}}{{user.lastLogin | date:'dd.MM.yyyy HH:mm'}}
\\n
\\n
\";","export default [\n \"$log\",\n \"$uibModalInstance\",\n \"usersInRole\",\n function ($log, $uibModalInstance, usersInRole) {\n var modalvm = this;\n\n modalvm.newUserInRole = {};\n modalvm.usersInRole = usersInRole.data.usersInRole;\n modalvm.users = usersInRole.data.users;\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close({\n usersInRole: modalvm.usersInRole\n });\n };\n\n modalvm.addUserInRole = function () {\n if (modalvm.newUserInRole) {\n modalvm.usersInRole = modalvm.usersInRole || [];\n modalvm.usersInRole.push(modalvm.newUserInRole);\n }\n\n modalvm.newUserInRole = null;\n };\n modalvm.delUserInRole = function (uir) {\n let index = modalvm.usersInRole.findIndex(usr => uir.id == usr.id);\n modalvm.usersInRole.splice(index, 1);\n };\n }\n];\n","export default [\"$log\", \"role\", \"$uibModalInstance\",\n function ($log, role, $uibModalInstance) {\n\n var modalvm = this;\n\n modalvm.role = role;\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.role);\n };\n\n\n }\n];","import usersctrl from \"./users\";\nimport usershtml from \"./users.html\";\nimport editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nimport { forEach } from \"lodash\";\n\nexport default [\n \"$log\",\n \"systemApi\",\n \"roles\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, roles, $uibModal, $state, $confirm) {\n var vm = this;\n vm.roles = roles.data;\n\n vm.deleteRole = function (c) {\n $confirm({\n text: \"Vil du slette rolle ?\"\n }).then(function () {\n c.status = -1;\n systemApi.editRole(c).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.editUsers = function (role) {\n $uibModal\n .open({\n template: usershtml,\n backdrop: \"static\",\n controllerAs: \"modalvm\",\n resolve: {\n usersInRole: [\n \"systemApi\",\n function (systemApi) {\n return systemApi.getUsersInRole(role);\n }\n ],\n role: [\n function () {\n return role;\n }\n ]\n },\n controller: usersctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n forEach(res.usersInRole, userInRole => {\n userInRole.appRoleAssignments = null;\n });\n systemApi.updateUsersInRole(role.id, res.usersInRole);\n }\n });\n };\n\n vm.editInsert = function (c) {\n $uibModal\n .open({\n template: edithtml,\n backdrop: \"static\",\n controllerAs: \"modalvm\",\n resolve: {\n role: [\n function () {\n return c || {};\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editRole(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];\n","export default \"
\\n

\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Navn
{{uir.displayName}}\\n \\n \\n \\n
\\n \\n {{$select.selected.displayName}}\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n \\n \\n
\";","export default \"
\\n

\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./roles.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.system.roles\", {\n url: \"/roles\",\n aData: {\n name: \"Roller\"\n },\n resolve: {\n roles: [\"systemApi\", function (systemApi) {\n return systemApi.getRoles();\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnDeaktivert
{{role.roleName}}{{role.disabled ? 'Ja' : 'Nei'}}\\n \\n \\n
\\n
\\n
\";","export default [\n \"$log\",\n \"systemApi\",\n \"tradecodes\",\n function ($log, systemApi, tradecodes) {\n var vm = this;\n vm.tradecodes = tradecodes.data;\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./tradecodes.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.system.tradecodes\", {\n url: \"/tradecodes\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{'TradeCodes' | translate}}\"\n },\n resolve: {\n tradecodes: [\"systemApi\", function (systemApi) {\n return systemApi.getTradeCodes(true);\n }]\n },\n views: {\n\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{'TradeCode' | translate}}NavnKategoriProsessnøkkelInaktivOppdatert
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{tc.tradeCode}}{{tc.name}}\\n {{tc.processOwner}}{{tc.processKey}}{{tc.inActive ? 'Ja' : 'Nei'}}{{tc.updatedString }}
\\n
\\n
\";","export default [\n \"$log\",\n \"systemApi\",\n \"tradeCode\",\n \"processOwners\",\n \"companies\",\n \"$state\",\n \"$confirm\",\n \"translateFilter\",\n \"toastr\",\n function (\n $log,\n systemApi,\n tradeCode,\n processOwners,\n companies,\n $state,\n $confirm,\n translate,\n toastr\n ) {\n var vm = this;\n vm.tradeCode = tradeCode.data.tradeCode;\n vm.users = tradeCode.data.users;\n vm.processOwners = processOwners.data;\n vm.companies = companies.data;\n vm.projTypes = tradeCode.data.projTypes;\n vm.tradeCodeUserRole =\n vm.tradeCode.id !== 0\n ? {\n tradeCodeId: vm.tradeCode.id,\n edit: false,\n approve: false,\n projTypeId: 1\n }\n : undefined;\n\n vm.addTradeCodeUserRole = function () {\n systemApi\n .addTradeCodeUserRole(vm.tradeCodeUserRole)\n .then(function () {\n $state.reload();\n });\n };\n vm.delTradeCodeUserRole = function (tcur) {\n systemApi.delTradeCodeUserRole(tcur).then(function () {\n $state.reload();\n });\n };\n\n vm.toggleTradeCodeActive = function () {\n systemApi\n .toggleTradeCodeActive({\n id: vm.tradeCode.id\n })\n .then((res) => {\n vm.tradeCode.inActive = res.data.inActive;\n toastr.success(\n vm.tradeCode.inActive\n ? \"Satt fagområde som inaktivt\"\n : \"Satt fagområde som aktivt\"\n );\n $state.reload();\n });\n };\n\n vm.upsertTradeCode = function () {\n if (vm.tradeCodeUserRole && vm.tradeCodeUserRole.userId) {\n vm.addTradeCodeUserRole();\n }\n\n systemApi.editTradeCode(vm.tradeCode).then(function (res) {\n $state.go(\n \"main.system.tradecodes.tradecode\",\n {\n tradeCodeId: res.data.id\n },\n {\n reload: true\n }\n );\n });\n };\n\n vm.deleteTradeCode = function () {\n var m = vm.tradeCode;\n\n $confirm({\n text: \"Vil du slette \" + translate(\"TradeCode\", true) + \" ?\"\n }).then(function () {\n m.status = -1;\n systemApi.editTradeCode(m).then(function () {\n $state.go(\"main.system.tradecodes\", null, {\n reload: true\n });\n });\n });\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./tradecode.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.system.tradecodes.tradecode\", {\n url: \"/{tradeCodeId}\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{tradeCode.data.tradeCode.name || 'Nytt fagområde'}}\"\n },\n\n resolve: {\n tradeCode: [\"systemApi\", \"$stateParams\", function (systemApi, $stateParams) {\n return systemApi.getTradeCode($stateParams.tradeCodeId);\n }],\n processOwners: [\"systemApi\", function (systemApi) {\n return systemApi.getProcessOwners();\n }],\n companies: [\"systemApi\", function (systemApi) {\n return systemApi.getCompanies();\n }]\n },\n views: {\n\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n

{{vm.tradeCode.name}}

\\n
\\n\\n \\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n\\n\\n
\\n
\\n

Tillatelser på prosesser

\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnRedigereGodkjenneKonsept
{{p.userName}}{{p.edit ? 'Ja':'Nei'}}{{p.approve ? 'Ja':'Nei'}}{{p.projType}}\\n \\n \\n \\n
\\n \\n \\n {{$select.selected.value}}\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\";","export default [\n \"$log\",\n \"systemApi\",\n \"faqs\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, faqs, $uibModal, $state, $confirm) {\n var vm = this;\n vm.faqs = faqs.data.faqs;\n\n vm.deleteFaq = function (f) {\n $confirm({\n text: \"Vil du slette faq ?\"\n }).then(function () {\n f.status = -1;\n systemApi.saveFaq(f).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.editInsert = function (c) {\n\n let id = c && c.id;\n\n if (!id) {\n systemApi.saveFaq({\n question: \"Nytt spørsmål\"\n }).then(response => {\n $state.go(\"main.system.faq\", {\n faqId: response.data.id\n\n });\n });\n } else {\n $state.go(\"main.system.faq\", {\n faqId: id\n\n });\n }\n\n\n /* $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n resolve: {\n faq: [\n function () {\n return c || {};\n }\n ],\n projTypes: [\n function () {\n return faqs.data.projTypes;\n }\n ],\n faqCategories: [\n function () {\n return faqs.data.faqCategories;\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editFaq(res).then(function () {\n $state.reload();\n });\n }\n }); */\n };\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./faqs.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.system.faqs\", {\n url: \"/faqs\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Ofte stilte spørsmål\"\n },\n resolve: {\n faqs: [\"systemApi\", function (systemApi) {\n return systemApi.getFaqs();\n }]\n },\n views: {\n\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n
SpørsmålKategori
{{f.question}} {{f.category}}\\n \\n \\n
\\n
\\n
\";","export default [\"$log\", \"faq\", \"$uibModalInstance\",\n function ($log, faq, $uibModalInstance) {\n\n var modalvm = this;\n\n modalvm.text = faq.answer;\n\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n\n }\n];","import previewctrl from \"./preview\";\nimport previewhtml from \"./preview.html\";\n\n\nexport default [\n \"$log\",\n \"systemApi\",\n \"faq\",\n \"$state\",\n \"$uibModal\",\n\n function ($log, systemApi, faq, $state, $uibModal) {\n var vm = this;\n\n vm.faq = faq.data.faq;\n vm.projTypes = faq.data.projTypes;\n vm.faqCategories = faq.data.faqCategories;\n\n // vm.dropHandler = function (file, insertAction) {\n // var reader = new FileReader();\n // reader.onload = function () {\n\n // if (reader.result !== \"\") {\n // var blob = {\n // faqId: vm.faq.id,\n // base64: reader.result,\n // fileName: file.name,\n // contentType: file.type,\n // status: 2\n // };\n\n // attachmentApi.upload([blob]).then(response => {\n // var blobId = response.data[0].id;\n // var html = `${file.name}`;\n\n // insertAction(\"insertHTML\", html, false);\n\n // });\n\n // }\n // };\n // reader.readAsDataURL(file);\n\n // return true;\n // };\n\n vm.updateActivityText = (html) => {\n vm.faq.answer = html;\n };\n\n vm.save = () => {\n systemApi.saveFaq(vm.faq).then(function () {\n $state.reload();\n });\n };\n\n vm.preview = () => {\n\n $uibModal\n .open({\n template: previewhtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n controller: previewctrl,\n resolve: {\n faq: [function () {\n return vm.faq;\n }]\n }\n\n\n });\n\n };\n }\n];","export default \"
\\n

FAQ

\\n
\\n\\n
\\n\\n\\n\\n
\\n\\n\\n\\n\\n\\n
\\n\\n\\n
\\n\\n\\n\\n \\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./faq.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.system.faq\", {\n url: \"/faq/{faqId}\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{faq.data.faq.question}}\"\n },\n resolve: {\n faq: [\"systemApi\", \"$stateParams\", function (systemApi, $stateParams) {\n return systemApi.getFaq($stateParams.faqId);\n }]\n },\n views: {\n\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n

Header

\\n
\\n\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n \\n\\n
\\n \\n
\\n\\n
\\n
\\n \\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n\\n
\\n\\n
\\n
\\n \\n
\\n \\n\\n\\n
\\n\\n
\\n\\n
\\n
\";","export default [\"$log\", \"template\", \"$uibModalInstance\", \"regLineCategories\", \"tradeCodes\",\n function ($log, template, $uibModalInstance, regLineCategories, tradeCodes) {\n\n var modalvm = this;\n\n modalvm.template = template;\n modalvm.regLineCategories = regLineCategories;\n modalvm.tradeCodes = tradeCodes;\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.template);\n };\n }\n];","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"templateApi\",\n \"templates\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, templateApi, templates, $uibModal, $state, $confirm) {\n var vm = this;\n vm.templates = templates.data.templates;\n\n vm.deleteTemplate = function (f) {\n $confirm({\n text: \"Vil du slette malen?\"\n }).then(function () {\n templateApi.deleteTemplate(f.id).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.editInsert = function (c) {\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n resolve: {\n template: [\n function () {\n return c || {};\n }\n ],\n regLineCategories: [\n function () {\n return templates.data.regLineCategories;\n }\n ],\n tradeCodes: [\n function () {\n return templates.data.tradeCodes;\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n templateApi.putTemplate(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

Mal

\\n
\\n\\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n {{$select.selected.display}}\\n \\n
\\n
\\n
\\n
\\n\\n\\n\\n
\\n \\n \\n\\n
\\n\\n\\n\\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n \\n
\";","import saveFile from \"shared/saveFile\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"toastr\",\n function ($log, systemApi, toastr) {\n var vm = this;\n vm.request = {};\n\n var years = [];\n var thisYear = new Date().getFullYear();\n for (var i = thisYear; i > (thisYear - 5); i--) {\n years.push(i);\n }\n vm.years = years;\n\n vm.download = function (type) {\n if (!vm.request.year || !vm.request.month) {\n toastr.warning(\"Du må velge år og måned!\");\n } else {\n vm.request.type = type;\n systemApi.getPrognoseSenteret(vm.request).then(saveFile);\n }\n };\n }\n];\n","export default [\n \"$log\",\n \"systemApi\",\n \"toastr\",\n \"tasks\",\n \"$confirm\",\n function($log, systemApi, toastr, tasks, $confirm) {\n var vm = this;\n\n vm.tasks = tasks.data;\n\n vm.runTask = function(task) {\n $confirm({\n text: \"Kjør kun oppgaven hvis du vet hva du driver med !!\"\n }).then(function() {\n systemApi.runSystemTask(task).then(function(res) {\n toastr.info(res.data);\n });\n });\n };\n }\n];\n","export default [\"$log\", \"consent\", \"$uibModalInstance\",\n function ($log, consent, $uibModalInstance) {\n\n var modalvm = this;\n\n\n modalvm.consent = consent;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.consent);\n };\n\n\n }\n];","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"$uibModal\",\n \"toastr\",\n \"consents\",\n \"$confirm\",\n \"$state\",\n function ($log, systemApi, $uibModal, toastr, consents, $confirm, $state) {\n var vm = this;\n\n vm.consents = consents.data;\n\n vm.editConsent = function (c) {\n $uibModal\n .open({\n template: edithtml,\n controllerAs: \"modalvm\",\n resolve: {\n consent: [\n function () {\n return c || {};\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function (res) {\n if (res !== undefined) {\n systemApi.editConsent(res).then(function () {\n $state.reload();\n });\n }\n });\n };\n }\n];","export default \"
\\n

{{modalvm.consent.id ? 'Endre samtykke' : 'Nytt samtykke' }}

\\n
\\n\\n
\\n\\n\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n\\n\\n\\n
\\n\\n\\n
\\n\\n \\n\\n \\n\\n
\";","export default [\"$log\", \"postCode\", \"$uibModalInstance\", function ($log, postCode, $uibModalInstance) {\n\n var modalvm = this;\n\n modalvm.postCode = postCode;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.postCode);\n };\n\n\n}];","import editctrl from \"./edit\";\nimport edithtml from \"./edit.html\";\nexport default [\n \"$log\",\n \"systemApi\",\n \"postcodes\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function($log, systemApi, postcodes, $uibModal, $state, $confirm) {\n var vm = this;\n vm.postcodes = postcodes.data;\n\n vm.deletePostCode = function(c) {\n $confirm({\n text: \"Vil du slette postnummeret ?\"\n }).then(function() {\n c.status = -1;\n systemApi.editPostCode(c).then(function() {\n $state.reload();\n });\n });\n };\n vm.editInsert = function(c) {\n $uibModal\n .open({\n template: edithtml,\n backdrop: \"static\",\n controllerAs: \"modalvm\",\n resolve: {\n postCode: [\n function() {\n return c || {};\n }\n ]\n },\n controller: editctrl\n })\n .result.then(function(res) {\n if (res) {\n systemApi.editPostCode(res).then(function() {\n $state.reload();\n });\n }\n });\n };\n }\n];\n","export default \"
\\n

{{modalvm.postCode.display || 'Legg til nytt postnummer'}}

\\n
\\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\";","export default [\n \"$log\",\n \"systemApi\",\n \"reglinecategories\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n \"toastr\",\n function ($log, systemApi, reglinecategories, $uibModal, $state, $confirm, toastr) {\n var vm = this;\n\n vm.category1 = reglinecategories.data.category1;\n vm.category2 = reglinecategories.data.category2;\n vm.newMain = {};\n vm.newSub = {};\n\n vm.addMain = () => {\n systemApi.regLineCategoryAdd(vm.newMain).then(res => {\n\n vm.category1 = vm.category1 || [];\n vm.category1.push(res.data);\n\n vm.newMain = {};\n\n });\n\n\n };\n vm.addSub = () => {\n systemApi.regLineCategoryAdd(vm.newSub).then(res => {\n vm.category2 = vm.category2 || [];\n vm.category2.push(res.data);\n\n vm.newSub = {};\n });\n };\n\n vm.update = function (c) {\n systemApi.regLineCategoryUpdate(c).then(function () {\n toastr.info(c.name + \" oppdatert\");\n });\n };\n\n vm.delete = function (c) {\n $confirm({\n text: \"Vil du slette kategorien?\"\n }).then(function () {\n systemApi.regLineCategoryDelete(c).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.mainCategoryFilter = function (cat) {\n\n if (!vm.mainCategorySelected) return true;\n return cat.parentId === vm.mainCategorySelected;\n };\n\n }\n];","export default [\"$uibModalInstance\", \"$log\", \"setting\",\n function ($uibModalInstance, $log, setting) {\n\n\n var modalvm = this;\n modalvm.setting = setting;\n\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.setting);\n\n };\n\n\n }\n];","import editCtrl from \"./edit\";\nimport editHtml from \"./edit.html\";\n\nexport default [\n \"$log\",\n \"systemApi\",\n \"albumsettings\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n function ($log, systemApi, albumsettings, $uibModal, $state, $confirm) {\n var vm = this;\n\n function IsValidJSONString(str) {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n\n var openEditAddModal = function (setting) {\n return $uibModal.open({\n template: editHtml,\n controllerAs: \"modalvm\",\n resolve: {\n setting: setting\n },\n controller: editCtrl\n });\n };\n\n vm.albumsettings = albumsettings.data;\n\n\n vm.edit = function (setting) {\n openEditAddModal(setting).result.then(function (editSetting) {\n if (editSetting) {\n\n if (IsValidJSONString(editSetting.value)) {\n var obj = JSON.parse(editSetting.value);\n editSetting.value = JSON.stringify(obj, null, 2);\n }\n\n systemApi.updateAlbumSetting(editSetting).then(() => {\n $state.reload();\n });\n\n }\n });\n };\n vm.delete = function (setting) {\n\n $confirm({\n text: \"Er du sikker på at du vil slette innstillingen ?\"\n }).then(() => {\n setting.status = -1;\n systemApi.deleteAlbumSetting(setting).then(() => {\n $state.reload();\n });\n });\n };\n\n\n }\n];","export default \"
\\n

{{modalvm.setting.key }}

\\n
\\n
\\n\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n\\n\\n\\n\\n
\\n
\\n \\n \\n
\";","import system from \"album/system/state\";\nimport processphases from \"album/system/processphases/state\";\nimport componentgroups from \"album/system/componentgroups/state\";\nimport optioncategories from \"album/system/optioncategories/state\";\nimport projecttypes from \"album/system/projecttypes/state\";\nimport planresources from \"album/system/planresources/state\";\nimport planresources2 from \"album/system/planresources/level2/state\";\nimport projaccounts from \"album/system/projaccounts/state\";\nimport sectiontypes from \"album/system/sectiontypes/state\";\nimport smslog from \"album/system/smslog/state\";\nimport companies from \"album/system/companies/state\";\nimport definitions from \"album/system/definitions/state\";\nimport contactgroups from \"album/system/contactgroups/state\";\nimport aberrationcauses from \"album/system/aberrationcauses/state\";\nimport aberrationtypes from \"album/system/aberrationtypes/state\";\nimport models from \"album/system/models/state\";\nimport modules from \"album/system/modules/state\";\nimport processowners from \"album/system/processowners/state\";\nimport users from \"album/system/users/state\";\nimport roles from \"album/system/roles/state\";\nimport tradecodes from \"album/system/tradecodes/state\";\nimport tradecode from \"album/system/tradecodes/tradecode/state\";\n\nimport faqs from \"album/system/faqs/state\";\nimport faq from \"album/system/faqs/faq/state\";\nimport templates from \"album/system/templates/state\";\nimport prognosesenteret from \"album/system/prognosesenteret/state\";\nimport tasks from \"album/system/tasks/state\";\nimport consents from \"album/system/consents/state\";\nimport postcodes from \"album/system/postcodes/state\";\nimport reglinecategories from \"album/system/reglinecategories/state\";\nimport albumsettings from \"album/system/albumsettings/state\";\n\nexport default [\n system,\n processphases,\n componentgroups,\n optioncategories,\n projecttypes,\n planresources,\n planresources2,\n projaccounts,\n sectiontypes,\n smslog,\n companies,\n definitions,\n contactgroups,\n aberrationcauses,\n aberrationtypes,\n models,\n modules,\n processowners,\n users,\n roles,\n tradecodes,\n tradecode,\n faqs,\n faq,\n templates,\n prognosesenteret,\n tasks,\n consents,\n postcodes,\n reglinecategories,\n albumsettings\n];\n","import html from \"./system.html\";\nimport ctrl from \"./ctrl\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.system\", {\n url: \"system\",\n aData: {\n name: \"Systeminnstillinger\"\n },\n\n resolve: {\n security: [\n \"userApi\",\n function(userApi) {\n return userApi.authorized([\n \"Admin\",\n \"Sales\",\n \"SalesAdmin\",\n \"PL\",\n \"OptionAdmin\",\n \"KS\",\n \"Market\",\n \"KK\",\n \"Support\",\n \"ProductionPlanEditor\",\n \"PRL\"\n ]);\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\tSøk\\n\\t\\t
\\n\\t\\t\\n\\t
\\n\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{{setting.name}}
\\n\\t\\t\\t\\t\\t

{{setting.description}}

\\n\\t\\t\\t\\t\\t

{{vm.defaultDescription}}{{setting.name}}

\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
{{setting.name}}
\\n\\t\\t\\t\\t\\t

{{setting.description}}

\\n\\t\\t\\t\\t\\t

{{vm.defaultDescription}}{{setting.name}}

\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\n\\t\\t
\\n\\t
\\n\\t\\n
\\n\\n\\n\\n\\n\\n\\n\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./processphases.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.system.processphases\", {\n url: \"/processphases\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Prosessfaser\"\n },\n resolve: {\n processPhases: [\"systemApi\", function (systemApi) {\n return systemApi.getProcessPhases();\n }]\n },\n views: {\n\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
FaseIndeks
{{pp.phase}}{{pp.index}}\\n \\n \\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./componentgroups.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.system.componentgroups\", {\n url: \"/componentgroups\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Varegrupper\"\n },\n resolve: {\n componentGroups: [\"systemApi\", function (systemApi) {\n return systemApi.getComponentGroups();\n }]\n },\n views: {\n\n \"@\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdBeskrivelse
{{cg.compGroupId}}{{cg.description}}\\n \\n \\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./templates.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.system.templates\", {\n url: \"/templates\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Maler\"\n },\n resolve: {\n templates: [\"templateApi\", function (templateApi) {\n return templateApi.getTemplates();\n }]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n
TittelMalTypeFagområdeKategori
{{f.title}}{{f.templateType}}{{f.tradeCode.display}}{{f.regLineCategory.display}}\\n \\n \\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./prognosesenteret.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.system.prognosesenteret\", {\n url: \"/prognosesenteret\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Prognosesenteret\"\n },\n\n views: {\n\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./tasks.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.system.tasks\", {\n url: \"/tasks\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Oppgaver\"\n },\n resolve: {\n tasks: [\n \"systemApi\",\n function(systemApi) {\n return systemApi.getSystemTasks();\n }\n ]\n },\n\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n
\\n
{{task.name}}
\\n\\n \\n Kjør!\\n\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./consents.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.system.consents\", {\n url: \"/consents\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Samtykker\"\n },\n resolve: {\n consents: [\"systemApi\", function (systemApi) {\n return systemApi.getConsents();\n }]\n },\n\n views: {\n\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
{{consent.name}}
\\n\\n

{{consent.text}}

\\n Rediger\\n\\n
\\n
\\n\\n
\\n
\\n
Nytt samtykke
\\n Legg til ny\\n\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./postcodes.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.system.postcodes\", {\n url: \"/postcodes\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Postnummer\"\n },\n resolve: {\n postcodes: [\"systemApi\", function (systemApi) {\n return systemApi.getPostCodes();\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
PostnummerNavnFylkeKommune
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
{{c.num}}{{c.name}}{{c.county}}{{c.municipality}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t
\\n\\t\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./reglinecategories.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.system.reglinecategories\", {\n url: \"/reglinecategories\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Reklamasjonskategorier\"\n },\n resolve: {\n reglinecategories: [\"systemApi\", function (systemApi) {\n return systemApi.getReglinecategories();\n }]\n\n },\n views: {\n\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\n

Hovedkategorier

\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n
IdNummerNavnSkjul fra rapporterI bruk
{{cat.id}}\\n Ja\\n \\n \\n
\\n \\n
\\n\\n\\n
\\n

Underkatgorier

\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n
IdNummerHovedkategoriSkjul fra rapporterI bruk
{{cat.id}}\\n \\n 0\\\">\\n {{cat.inUse}} saker i denne kategorien\\n \\n \\n
\\n \\n\\n \\n \\n
\\n
\\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./albumsettings.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.system.albumsettings\", {\n url: \"/albumsettings\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Avanserte innstillinger\"\n },\n resolve: {\n albumsettings: [\"systemApi\", function (systemApi) {\n\n return systemApi.getAlbumsettings();\n }]\n },\n\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n\\n\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdNavn
{{setting.key}}{{setting.value | limitTo:150}}\\n \\n \\n\\n
\\n
\\n
\";","export default [\"$uibModalInstance\", \"$log\", \"parameters\",\n function ($uibModalInstance, $log, parameters) {\n var modalvm = this;\n modalvm.parameters = parameters;\n\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm);\n\n };\n modalvm.close = function () {\n $uibModalInstance.close();\n };\n }\n];","import saveFile from \"shared/saveFile\";\nimport parametersHtml from \"./parameters.html\";\nimport parametersCtrl from \"./parameters.js\";\nimport { reduce } from \"lodash\";\nimport navigation from \"shared/navigation.js\";\n\nexport default [\n \"$uibModal\",\n \"$log\",\n \"reportApi\",\n\n function ($uibModal, $log, reportApi) {\n var reportParameters = [\n {\n field: \"contractDateType\",\n name: \"Datotype\",\n value: 1\n },\n {\n field: \"year\",\n name: \"År\",\n value: new Date().getFullYear()\n },\n {\n field: \"month\",\n name: \"Måned\",\n value: new Date().getMonth() + 1\n }\n ];\n\n let parameterModal = (parameters) => {\n var modalInstance = $uibModal.open({\n template: parametersHtml,\n resolve: {\n parameters: () => parameters\n },\n controllerAs: \"modalvm\",\n controller: parametersCtrl\n });\n\n return modalInstance.result;\n };\n var vm = this;\n\n vm.nav = navigation;\n\n vm.quarterlyReportDownload = () => {\n parameterModal(reportParameters).then((modal) => {\n let params = reduce(\n modal.parameters,\n function (obj, param) {\n obj[param.field] = param.value;\n return obj;\n },\n {}\n );\n reportApi.salesReportQuarterly(params).then(saveFile);\n });\n };\n\n vm.sectionsOverviewDownload = () => {\n reportApi.sectionsOverviewExcel().then(saveFile);\n };\n\n vm.componentsOverviewDownload = () => {\n reportApi.componentsOverviewExcel().then(saveFile);\n };\n }\n];\n","export default \"
\\n

Parametere

\\n
\\n
\\n\\n\\n
\\n \\n \\n\\n
\\n\\n\\n\\n\\n
\\n
\\n \\n \\n
\";","import html from \"./reports.html\";\nimport ctrl from \"./ctrl\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.reports\", {\n url: \"reports\",\n\n aData: {\n name: \"Rapporter\"\n },\n views: {\n\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n\n });\n}];","export default \"
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Rapport
\\n Kontraktoversikt\\n
\\n Ubekreftede\\n kontrakter\\n
\\n Bekreftet - ikke\\n overlevert\\n
\\n Ferdige - usolgte\\n
\\n Salgsstatistikk\\n
\\n Åpne reklamasjoner etter alder\\n
\\n Reklamasjoner pr kategori\\n
\\n Reklamasjoner pr leverandør\\n
\\n Felles kontrollplan -\\n utførelse\\n
\\n Bonusrapport\\n
\\n Bekreftede kontrakter\\n
\\n Overleveringer\\n
\\n Statistikk pr dag\\n
\\n Prosjektportefølje\\n
\\n Reklamasjonslogg\\n
\\n Kvartalsrapport\\n
\\n Brakkerigg booking\\n
\\n Simployer timerapport\\n
\\n Global seksjonsoversikt (Excel)\\n
\\n Global vareoversikt (Excel)\\n
\\n
\";","import {\n\n forEach\n} from \"lodash\";\nexport default [\"$log\", \"$uibModal\", \"contractoverview\", function ($log, $uibModal, contractoverview) {\n\n\n var vm = this;\n vm.contractoverview = contractoverview.data;\n vm.filter = function (item) {\n\n if (item.totalPercentageSold < 100) return true;\n\n };\n\n vm.toggleCollapse = function () {\n forEach(vm.contractoverview, function (proj) {\n proj.hidden = !vm.allCollapsed;\n });\n vm.allCollapsed = !vm.allCollapsed;\n };\n\n}];","import ctrl from \"./ctrl\";\nimport html from \"./contractsoverview.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.reports.contractsoverview\", {\n url: \"/reports/contractsoverview\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Kontraktsoversikt\"\n },\n\n resolve: {\n contractoverview: [\"reportApi\", function (reportApi) {\n return reportApi.getContractOverview();\n }]\n },\n views: {\n\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n\n\n });\n}];","export default \"
\\n
\\n

Kontraktoversikt

\\n
\\n
\\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n
Alle prosjekter{{(vm.contractoverview | sumOfValue : 'totalIgangSatt')}} ({{ ((vm.contractoverview | sumOfValue : 'totalIgangSatt') /(vm.contractoverview | sumOfValue : 'totalTotal') * 100)| awnum:pct }} %){{(vm.contractoverview | sumOfValue : 'totalIgangSettes12M')}} ({{ ((vm.contractoverview | sumOfValue : 'totalIgangSettes12M') /(vm.contractoverview | sumOfValue : 'totalTotal') * 100)| awnum:pct\\n }} %){{(vm.contractoverview | sumOfValue : 'totalOverlevering12M')}} ({{ ((vm.contractoverview | sumOfValue : 'totalOverlevering12M') /(vm.contractoverview | sumOfValue : 'totalTotal') * 100)| awnum:pct\\n }} %){{(vm.contractoverview | sumOfValue : 'totalSold')}} ({{ ((vm.contractoverview | sumOfValue : 'totalSold') /(vm.contractoverview | sumOfValue : 'totalTotal') * 100)| awnum:pct }} %){{(vm.contractoverview | sumOfValue : 'totalTotal') | number:0}}
ByggIgangsattIgangsettes 12MOverlevering 12MSolgtTotal
\\n {{proj.name}}\\n {{proj.totalIgangSatt}} ({{ (proj.totalIgangSatt /proj.totalTotal * 100)| awnum:pct }} %){{proj.totalIgangSettes12M}} ({{ (proj.totalIgangSettes12M /proj.totalTotal * 100)| awnum:pct\\n }} %)\\n {{proj.totalOverlevering12M}} ({{ (proj.totalOverlevering12M /proj.totalTotal * 100)| awnum:pct\\n }} %)\\n {{proj.totalSold}} ({{ (proj.totalSold /proj.totalTotal * 100)| awnum:pct }} %){{proj.totalTotal}}
{{house.houseNum}}{{house.igangSatt}}{{house.igangSettes12M}} {{house.igangSettesWeek}}-{{house.igangSettesYear}}{{house.overlevering12M}} {{house.takeOverWeek}}-{{house.takeOverYear}}{{house.sold}}{{house.total}}
\\n
\\n
\\n \\n\";","import {\n forEach\n} from \"lodash\";\nexport default [\"$log\", \"$uibModal\", \"unconfirmedcontracts\", \"moment\", \"albumConfig\",\n function ($log, $uibModal, unconfirmedcontracts, moment, albumConfig) {\n\n\n var vm = this;\n vm.unconfirmedcontracts = unconfirmedcontracts.data;\n vm.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n\n\n forEach(vm.unconfirmedcontracts.sections, function (l) {\n\n l.contractSignedFilter = moment(l.contractSigned).format(\"DD.MM.YYYY\");\n l.takeOverDateFilter = moment(l.takeOverDate).format(\"DD.MM.YYYY\");\n\n\n });\n\n vm.nav = function (id, type) {\n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=\" + type + \"&id=\" + id + \"\";\n };\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./unconfirmedcontracts.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.reports.unconfirmedcontracts\", {\n url: \"/reports/unconfirmedcontracts\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Ubekreftede kontrakter\"\n },\n resolve: {\n unconfirmedcontracts: [\"reportApi\", function (reportApi) {\n return reportApi.getUnconfirmedContracts();\n }]\n },\n views: {\n\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
ProsjektHusSeksjonNavnSignertStatusUkerForbehold\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{contract.projectName}}\\n \\n {{contract.projectName}}\\n \\n {{contract.houseNum}}\\n \\n {{contract.houseNum}}\\n \\n {{contract.sectionNum}}\\n \\n {{contract.sectionNum}}\\n \\n {{contract.fullName}}\\n {{contract.contractSigned | date : 'dd.MM.yyyy'}}\\n !\\n 6\\\"\\n class=\\\"badge badge-danger\\\">!\\n {{contract.weeks}}{{contract.reservation}}
\\n
\\n \\n
\";","import {\n\n forEach\n} from \"lodash\";\nexport default [\"$log\", \"$uibModal\", \"confirmednotdelivered\", \"moment\", \"albumConfig\", function ($log, $uibModal, confirmednotdelivered, moment, albumConfig) {\n\n\n var vm = this;\n vm.confirmednotdelivered = confirmednotdelivered.data;\n vm.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n\n forEach(vm.confirmednotdelivered, function (l) {\n\n l.contractDateFilter = moment(l.contractDate).format(\"DD.MM.YYYY\");\n l.takeOverDateFilter = moment(l.takeOverDate).format(\"DD.MM.YYYY\");\n\n\n });\n\n vm.nav = function (id, type, path) {\n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=\" + type + \"&id=\" + id + \"&path=\" + path;\n };\n\n\n}];","import ctrl from \"./ctrl\";\nimport html from \"./confirmednotdelivered.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.reports.confirmednotdelivered\", {\n url: \"/reports/confirmednotdelivered\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Bekreftet - ikke overlevert\"\n },\n resolve: {\n confirmednotdelivered: [\"reportApi\", function (reportApi) {\n return reportApi.getConfirmedNotDelivered();\n }]\n },\n views: {\n\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
ProsjektByggSeksjonNavnKontraktstypeSignertOverlevering3%5%Forskudd
Garantier stilt
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{section.projectPhaseProjectName}}\\n \\n {{section.projectPhaseProjectName}}\\n \\n {{section.projectPhaseHouseNum}}\\n \\n {{section.projectPhaseHouseNum}}\\n \\n {{section.sectionNum}}\\n \\n {{section.sectionNum}}\\n \\n {{section.customerFullName}}\\n {{section.projCustomerContractTypeString}}{{section.contractDate | date:'dd.MM.yyyy'}}{{section.takeOverDate | date :'dd.MM.yyyy'}}{{section.percent3?'Ja':'Nei'}}\\n \\n {{section.percent3?'Ja':'Nei'}}\\n \\n {{section.percent5?'Ja':'Nei'}}\\n \\n {{section.percent3?'Ja':'Nei'}}\\n \\n {{section.percent10?'Ja':'Nei'}}\\n \\n {{section.percent3?'Ja':'Nei'}}\\n \\n
\\n
\\n \\n
\";","export default [\"$log\", \"sectionsmovedin\", \"albumConfig\",\n function ($log, sectionsmovedin, albumConfig) {\n\n var vm = this;\n vm.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n vm.sectionsmovedin = sectionsmovedin.data;\n\n vm.nav = function (id, type, path) {\n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=\" + type + \"&id=\" + id + \"&path=\" + path;\n };\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./sectionsmovedin.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.reports.sectionsmovedin\", {\n url: \"/reports/sectionsmovedin\",\n\n aData: {\n name: \"Overleveringer\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n sectionsmovedin: [\"$stateParams\", \"reportApi\", function ($stateParams, reportApi) {\n return reportApi.getSectionsMovedin();\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
SelgerProsjektHusSeksjonKundeAdresseFB protokollFB ant. avvikOT protokollOT ant. rekl.SignertOverlevert
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{s.salesRep}}\\n {{s.project}}\\n {{s.project}}\\n {{s.houseNum}}\\n {{s.sectionNum}}\\n {{s.sectionNum}}\\n \\n {{s.customerName}}\\n {{s.sectionAddress}}{{s.protocolPreInspection == true ? 'Ja' : 'Nei'}}{{s.aberrationCountPreInspection}}{{s.protocolAcquisition == true ? 'Ja' : 'Nei'}}{{s.regCountAcquisition}}{{s.contractDate|date:'dd.MM.yyyy'}}{{s.moveInDate|date:'dd.MM.yyyy'}}
\\n
\\n \\n
\";","export default [\n {\n name: \"Åpne reklamasjoner (ny versjon)\",\n key: \"regLinesAllOpen\"\n },\n {\n name: \"Åpne reklamasjoner\",\n key: \"regLinesOpen\"\n },\n {\n name: \"Visninger\",\n key: \"newViewings\"\n },\n {\n name: \"Nye reklamasjoner\",\n key: \"newRegLines\"\n },\n {\n name: \"Nye interessenter\",\n key: \"newProspects\"\n },\n {\n name: \"Nye kontrakter\",\n key: \"newContracts\"\n },\n {\n name: \"Lukkede reklamasjoner\",\n key: \"regLinesClosed\"\n },\n {\n name: \"Ferdigstilte reklamasjoner\",\n key: \"regLinesDone\"\n },\n {\n name: \"Oppgaver med utgått frist\",\n key: \"tasksOverdue\"\n },\n {\n name: \"1 måned gamle reklamasjoner\",\n key: \"regLinesAge1Month\"\n },\n {\n name: \"2 måneder gamle reklamasjoner\",\n key: \"regLinesAge2Months\"\n },\n {\n name: \"3 måneder gamle reklamasjoner\",\n key: \"regLinesAge3Months\"\n },\n {\n name: \"Reklamasjoner eldre enn 3 måneder\",\n key: \"regLinesOlderThan3Months\"\n },\n {\n name: \"Ikke behandlede reklamasjoner\",\n key: \"regLinesNotProcessed\"\n }\n];","import {\n map,\n forEach,\n reject,\n find\n} from \"lodash\";\nimport series from \"./series\";\n\nexport default [\n \"$log\",\n \"toastr\",\n \"reportApi\",\n \"moment\",\n \"projectFilter\",\n function ($log, toastr, reportApi, moment, projectFilter) {\n let dataKeysToUpdate = [];\n\n let updateData = () => {\n\n\n var chartObj = vm.timeLine.getChartObj();\n\n forEach(dataKeysToUpdate, dk => {\n let serie = find(chartObj.series, s => {\n return s.options.id === dk;\n });\n\n reportApi\n .getDailyStats({\n key: dk,\n filters: vm.selectedFilter\n })\n .then(\n stats => {\n var seriesData = map(stats.data, d => {\n return [d.unixDate, d.cnt];\n });\n serie.setData(seriesData);\n },\n err => {\n $log.error(err);\n toastr.error(\"Feil under henting av data!\");\n }\n );\n });\n };\n\n function getStats() {\n let serie = this;\n if (serie.visible) {\n dataKeysToUpdate = reject(dataKeysToUpdate, dk => {\n return dk === this.options.id;\n });\n return;\n }\n\n reportApi\n .getDailyStats({\n key: this.options.id,\n filters: vm.selectedFilter\n })\n .then(\n stats => {\n var seriesData = map(stats.data, d => {\n return [d.unixDate, d.cnt];\n });\n dataKeysToUpdate.push(this.options.id);\n serie.setData(seriesData);\n },\n err => {\n $log.error(err);\n toastr.error(\"Feil under henting av data!\");\n }\n );\n }\n\n var vm = this;\n\n vm.filter = [{\n type: \"default\",\n sort: 0,\n name: \"Alle\",\n filter: -1\n }];\n\n forEach(projectFilter.data.projects, p => {\n vm.filter.push({\n type: \"project\",\n sort: 2,\n name: p.name,\n filter: p.id\n });\n });\n forEach(projectFilter.data.companies, c => {\n vm.filter.push({\n type: \"company\",\n sort: 1,\n name: c.name,\n filter: c.id\n });\n });\n\n vm.selectedFilter = [vm.filter[0]];\n vm.filterRemoved = function () {\n updateData();\n };\n vm.filterSelected = function (item) {\n if (item.type !== \"default\") {\n vm.selectedFilter = reject(vm.selectedFilter, f => {\n return f.type === \"default\";\n });\n }\n if (item.type === \"default\") {\n vm.selectedFilter = reject(vm.selectedFilter, f => {\n return f.type !== \"default\";\n });\n }\n\n updateData();\n };\n\n vm.timeLine = {\n series: map(series, s => {\n return {\n name: s.name,\n id: s.key,\n visible: false,\n events: {\n legendItemClick: getStats\n }\n };\n }),\n\n title: {\n text: \"Statistikk pr dag\"\n },\n\n /* subtitle: {\n text: \"Velg målepunkt \"\n }, */\n xAxis: {\n type: \"datetime\"\n },\n\n tooltip: {\n formatter: function () {\n return (\n \"\" +\n this.series.name +\n \": \" +\n this.y +\n \"
\" +\n moment(new Date(this.x)).format(\"LL\")\n );\n }\n },\n\n yAxis: {\n title: {\n text: \"Antall\"\n },\n\n allowDecimals: false\n },\n legend: {\n layout: \"vertical\",\n align: \"right\",\n verticalAlign: \"middle\"\n }\n\n /* plotOptions: {\n series: {\n label: {\n connectorAllowed: false\n },\n pointStart: 2010\n }\n }, */\n\n /* responsive: {\n rules: [{\n condition: {\n maxWidth: 500\n },\n chartOptions: {\n legend: {\n layout: \"horizontal\",\n align: \"center\",\n verticalAlign: \"bottom\"\n }\n }\n }]\n } */\n };\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./dailystats.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.reports.dailystats\", {\n url: \"/reports/dailystats\",\n\n aData: {\n name: \"Statistikk pr dag\"\n },\n resolve: {\n projectFilter: [\n \"reportApi\",\n function (api) {\n return api.getProjectFilter();\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n \\n {{$item.name}}\\n \\n \\n
\\n \\n \\n \\n\\n \\n
\\n\";","import { map } from \"lodash\";\nexport default [\n \"unSoldData\",\n \"moment\",\n\n function(unSoldData, moment) {\n var vm = this;\n\n vm.unsolddelivered = {\n series: [\n {\n type: \"column\",\n name: \"Antall\",\n\n data: map(unSoldData.data.results, d => {\n return {\n x: d.unixDate,\n y: d.amount,\n desc: d.text\n };\n })\n },\n\n {\n type: \"spline\",\n name: \"10 uker\",\n data: map(unSoldData.data.results, d => {\n return {\n x: d.unixDate,\n y: d.runningTotal10\n };\n })\n },\n {\n type: \"spline\",\n name: \"30 uker\",\n data: map(unSoldData.data.results, d => {\n return {\n x: d.unixDate,\n y: d.runningTotal30\n };\n })\n },\n\n {\n type: \"spline\",\n name: \"Total\",\n data: map(unSoldData.data.results, d => {\n return {\n x: d.unixDate,\n y: d.runningTotal\n };\n })\n }\n ],\n title: {\n text: \"Ferdige - usolgte\"\n },\n\n xAxis: {\n type: \"datetime\"\n },\n\n tooltip: {\n formatter: function() {\n var text =\n this.point.desc !== undefined\n ? this.point.desc.replace(\n /(?:\\r\\n|\\r|\\n)/g,\n \"
\"\n )\n : \"Totalt antall:\" + this.point.y;\n return (\n moment(new Date(this.x)).format(\"LL\") + \"
\" + text\n );\n }\n },\n\n yAxis: {\n title: {\n text: \"Antall\"\n },\n\n allowDecimals: false\n },\n legend: {\n layout: \"vertical\",\n align: \"right\",\n verticalAlign: \"middle\"\n }\n\n /* plotOptions: {\n series: {\n label: {\n connectorAllowed: false\n },\n pointStart: 2010\n }\n }, */\n\n /* responsive: {\n rules: [{\n condition: {\n maxWidth: 500\n },\n chartOptions: {\n legend: {\n layout: \"horizontal\",\n align: \"center\",\n verticalAlign: \"bottom\"\n }\n }\n }]\n } */\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./unsolddelivered.html\";\n\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.reports.unsolddelivered\", {\n url: \"/reports/unsolddelivered\",\n\n aData: {\n name: \"Ferdige - usolgte\"\n },\n\n resolve: {\n unSoldData: [\"reportApi\", reportApi => {\n return reportApi.getUnSoldDelivered();\n }]\n },\n\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n\\n\\n \\n
\";","export default [\"$uibModalInstance\", \"$log\", \"changes\", \"comment\",\n function ($uibModalInstance, $log, changes, comment) {\n\n\n var modalvm = this;\n modalvm.changes = changes;\n modalvm.comment = comment;\n\n\n modalvm.close = function () {\n $uibModalInstance.close();\n };\n\n\n }\n];","import showchangesctrl from \"./showchanges\";\nimport showchangeshtml from \"./showchanges.html\";\nimport navigation from \"shared/navigation.js\";\nimport {\n filter\n} from \"lodash\";\nexport default [\n \"$log\",\n \"moment\",\n \"$uibModal\",\n \"reportApi\",\n \"albumConfig\",\n function ($log, moment, $uibModal, reportApi, albumConfig) {\n function fetchLog() {\n reportApi.getRegLineLog(vm.from, vm.to).then(function (res) {\n vm.logs = res.data.logs;\n vm.from = res.data.from;\n vm.to = res.data.to;\n });\n }\n\n var vm = this;\n vm.nav = navigation;\n vm.from = moment().startOf(\"month\");\n vm.to = moment().endOf(\"month\");\n vm.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n\n vm.getLog = function () {\n fetchLog();\n };\n\n vm.hiddenColumns = [{\n colName: \"text\",\n header: \"Kommentar\"\n },\n {\n colName: \"reInvoice\",\n header: \"Viderfakturer\"\n },\n {\n colName: \"costCentre\",\n header: \"Kostnadsbærer\"\n }\n ];\n\n vm.showChanges = function (l) {\n $uibModal.open({\n template: showchangeshtml,\n controllerAs: \"modalvm\",\n resolve: {\n changes: [\n function () {\n return filter(l.changes, {\n changed: true\n });\n }\n ],\n comment: [\n function () {\n return l.text;\n }\n ]\n },\n controller: showchangesctrl\n });\n };\n\n vm.nav = function (id, type, path) {\n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=\" + type + \"&id=\" + id + \"&path=\" + path;\n };\n\n vm.navReg = function (lineOid) {\n if (!vm.useMultipleAppRouting) {\n vm.nav(\"registrations/\" + lineOid);\n } else {\n window.location.href = window.location.href = \n window.location.protocol + \"//\" + window.location.hostname + \"/v2/#/registrations/\" + lineOid;\n }\n };\n }\n];","export default \"
\\n

Innhold

\\n
\\n
\\n\\n\\n
\\n\\n\\n
{{modalvm.changes.length}} endring(er)
\\n

\\n

Endret \\\"{{change.key}}\\\" til {{change.value}}

\\n

\\n
\\n
\\n

\\n

 {{modalvm.comment}}
\\n

\\n
\\n\\n\\n\\n\\n\\n
\\n
\\n\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./reglinelog.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.reports.reglinelog\", {\n url: \"/reports/reglinelog\",\n\n aData: {\n name: \"Reklamasjonslogg\"\n },\n resolve: {\n security: [\n \"userApi\",\n function (userApi) {\n return userApi.authorized([\"KK\", \"HR\", \"Market\"]);\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
TypeAvDatoInnholdIdNavnStatus{{'House'|translate}}KundeSeksjonProsjekt
\\n \\n
{{r.logTypeString}}{{r.changedBy}}{{r.changedDate | date :'dd.MM.yyyy HH:mm'}} {{r.lineIdString}}\\n \\n {{r.regLineName}}\\n {{r.status}}\\n {{r.houseName}}\\n \\n {{r.houseName}}\\n \\n {{r.customerName}}\\n \\n {{r.sectionName}}\\n \\n {{r.sectionName}}\\n \\n \\n {{r.projectName}}\\n {{r.projectName}}\\n
\\n
\\n \\n
\";","export default [\n \"controlplans\",\n \"$state\",\n function (controlplans, $state) {\n var vm = this;\n\n vm.controlplans = controlplans.data;\n\n vm.goToActivities = function (plan) {\n $state.go(\"main.projects.project.house.schedules.schedule.activities\", {\n scheduleId: plan.schId,\n ppId: plan.houseId,\n id: plan.pId\n });\n };\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./controlplan.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.reports.controlplan\", {\n url: \"/reports/controlplan\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Felles kontrollplan - utførelse\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n controlplans: [\"$stateParams\", \"reportApi\", function ($stateParams, reportApi) {\n return reportApi.getControlPlans();\n }]\n }\n\n\n });\n}];","export default \"\\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Id:Prosjekt:Bygg:Prosess:Fagområde:Fagansvarlig utførende:Ferdigmeldt dato:Avvik:Kommentar:
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{s.projectId}}{{s.projectName}}{{s.house}}{{s.processName}}{{s.tradeCodeName}}{{s.responsible}}{{s.date | date:'dd.MM.yyyy'}}{{s.aberrations ? 'Ja':'Nei'}} {{s.comments ? 'Ja':'Nei'}}
\\n
\\n \\n
\\n\";","import domtoimage from \"dom-to-image\";\nimport { saveBlob } from \"shared/saveFile\";\n\nexport default [\n \"commonApi\",\n \"salesstats\",\n \"projtypes\",\n \"$state\",\n \"$stateParams\",\n \"$rootScope\",\n \"$log\",\n \"albumConfig\",\n function (commonApi, salesstats, projtypes, $state, $stateParams, $rootScope, $log, \n albumConfig) {\n var weeksToDisplay = function (week) {\n return week < 4\n ? [1, 2, 3, 4]\n : [week - 3, week - 2, week - 1, week];\n };\n\n var vm = this;\n\n var week = commonApi.getWeekNumber(new Date());\n\n if ($stateParams.week && $stateParams.year) {\n week = [$stateParams.year, $stateParams.week];\n }\n if ($stateParams.projTypeId) {\n vm.projTypeId = $stateParams.projTypeId;\n }\n\n vm.year = week[0];\n vm.week = week[1];\n vm.weeksToDisplay = weeksToDisplay(vm.week);\n vm.salesstats = salesstats.data;\n vm.projtypes = projtypes.data;\n vm.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n\n vm.nav = function (id, type, path) {\n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=\" + type + \"&id=\" + id + \"&path=\" + path;\n };\n\n vm.export = function () {\n const element = document.getElementById(\n \"salesstatsexportcontainer\"\n );\n element.style.display = \"block\";\n\n domtoimage\n .toBlob(element, {\n style: { background: \"white\" }\n })\n .then(function (blob) {\n element.style.display = \"none\";\n saveBlob(blob, \"Salgsstatistikk.png\");\n })\n .catch(function (error) {\n $log.error(error);\n })\n .finally(function () { });\n };\n\n vm.reloadReport = function (prevweek, nextweek, prevyear, nextyear) {\n if (prevweek) {\n if (vm.week === 1) return;\n vm.week--;\n }\n if (nextweek) {\n if (vm.week === 53) return;\n vm.week++;\n }\n if (prevyear) {\n vm.year--;\n }\n if (nextyear) {\n vm.year++;\n }\n\n $state.go(\"main.reports.salesstats\", {\n year: vm.year,\n week: vm.week,\n projTypeId: vm.projTypeId\n });\n };\n\n vm.getNetContracts = function (salesStatsWeeks) {\n if (salesStatsWeeks.netContracts || \n salesStatsWeeks.cancelations && salesStatsWeeks.contracts) {\n return salesStatsWeeks.netContracts;\n }\n };\n }\n];\n","export default [\n \"$log\",\n \"commonApi\",\n \"$uibModal\",\n \"stats\",\n function ($log, commonApi, $uibModal, stats) {\n var vm = this;\n\n vm.stats = stats.data.stats;\n }\n];","export default [\n \"reportApi\",\n function (reportApi) {\n var vm = this;\n\n vm.fetchData = function () {\n reportApi.getProjectPortfolio({}).then(result => {\n // eslint-disable-next-line\n console.info(\"report\", result.data);\n });\n };\n\n vm.fetchData();\n }\n];","export default [\n \"regbyage\",\n \"albumConfig\",\n function (regbyage, albumConfig) {\n var vm = this;\n vm.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n vm.regbyage = regbyage.data;\n\n vm.nav = function (id, type, path) {\n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=\" + type + \"&id=\" + id + \"&path=\" + path;\n };\n }\n];","import {\n map\n} from \"lodash\";\n\n\nexport default [\n \"regbyCategory\", \"$scope\", \"$state\", \"$stateParams\", \"moment\",\n function (regbyCategory, $scope, $state, $stateParams, moment) {\n\n let subCategoriesSelected = [];\n\n let loadData = data => {\n vm.regByCategories = {\n\n exporting: {\n buttons: {\n customButton: {\n x: -62,\n className: \"d-none customexportbuttoncategory\",\n onclick: function () {\n\n\n $state.go(\"main.reports.drilldown\", {\n from: vm.dates && vm.dates.from ? moment(vm.dates.from).format(\"YYYY-MM-DD\") : null,\n to: vm.dates && vm.dates.to ? moment(vm.dates.to).format(\"YYYY-MM-DD\") : null,\n subCategories: subCategoriesSelected.join(\",\")\n\n });\n\n\n },\n symbol: \"diamond\"\n }\n }\n },\n\n chart: {\n type: \"column\",\n events: {\n drilldown: function (category) {\n\n subCategoriesSelected = map(category.seriesOptions.data, x => x.subCategoryId);\n\n $(\".customexportbuttoncategory\")\n .removeClass(\"d-none\");\n\n }\n }\n },\n title: {\n text: \"Reklamasjoner pr kategori\"\n },\n subtitle: {\n text: \"Klikk på kategori for å se pr underkategori\"\n },\n xAxis: {\n type: \"category\"\n },\n yAxis: {\n title: {\n text: \"Antall reklamasjoner\"\n }\n },\n legend: {\n enabled: false\n },\n plotOptions: {\n series: {\n borderWidth: 0,\n dataLabels: {\n enabled: true,\n format: \"{point.y}\"\n },\n cursor: \"pointer\",\n point: {\n events: {\n click: function () {\n\n if (!this.options || !this.options.subCategoryId) return false;\n\n\n $state.go(\"main.reports.drilldown\", {\n from: vm.dates && vm.dates.from ? moment(vm.dates.from).format(\"YYYY-MM-DD\") : null,\n to: vm.dates && vm.dates.to ? moment(vm.dates.to).format(\"YYYY-MM-DD\") : null,\n subCategoryId: this.options.subCategoryId\n\n });\n\n }\n }\n }\n }\n },\n\n tooltip: {\n headerFormat: \"{series.name}
\",\n pointFormat: \"{point.name}: {point.y} reklamasjoner
\"\n },\n series: [{\n name: \"Kategori\",\n colorByPoint: true,\n data: map(data, c => {\n return {\n name: c.categoryName,\n y: c.cnt,\n drilldown: c.categoryId\n };\n })\n }],\n\n drilldown: {\n series: map(data, c => {\n return {\n name: c.categoryName,\n id: c.categoryId,\n data: map(c.subCategories, sc => {\n return {\n name: sc.subCategoryName,\n y: sc.cnt,\n subCategoryId: sc.subCategoryId\n };\n })\n };\n })\n }\n };\n\n\n };\n let reloadData = function (newDates, oldDates) {\n\n if (newDates === oldDates) return;\n var dates = newDates;\n if (dates) {\n\n\n $state.go(\".\", {\n from: dates.from ? moment(dates.from).format(\"YYYY-MM-DD\") : null,\n to: dates.to ? moment(dates.to).format(\"YYYY-MM-DD\") : null\n }, {\n notify: false\n });\n }\n\n\n };\n\n var vm = this;\n vm.dates = {};\n\n vm.dates.from = $stateParams.from ? moment($stateParams.from).toDate() : null;\n vm.dates.to = $stateParams.to ? moment($stateParams.to).toDate() : null;\n $scope.$watch(\"vm.dates\", reloadData, true);\n\n\n loadData(regbyCategory.data);\n }\n];","import {\n map\n} from \"lodash\";\n\n\nexport default [\n \"regbycontractor\", \"$scope\", \"$state\", \"$stateParams\", \"moment\",\n function (regbycontractor, $scope, $state, $stateParams, moment) {\n\n\n let loadData = data => {\n vm.regsByContractor = {\n\n chart: {\n type: \"column\"\n\n },\n title: {\n text: \"Reklamasjoner pr leverandør\"\n },\n\n xAxis: {\n type: \"category\"\n },\n yAxis: {\n title: {\n text: \"Antall reklamasjoner\"\n }\n },\n legend: {\n enabled: false\n },\n plotOptions: {\n series: {\n borderWidth: 0,\n dataLabels: {\n enabled: true,\n format: \"{point.y}\"\n }\n }\n },\n\n tooltip: {\n headerFormat: \"{series.name}
\",\n pointFormat: \"{point.name}: {point.y} reklamasjoner
\"\n },\n series: [{\n name: \"Leverandør\",\n colorByPoint: true,\n data: map(data, c => {\n return {\n name: c.contactName,\n y: c.cnt\n };\n })\n }]\n\n\n };\n\n\n };\n let reloadData = function (dates) {\n\n\n if (dates) {\n $state.go(\".\", {\n from: dates.from ? moment(dates.from).format(\"YYYY-MM-DD\") : null,\n to: dates.to ? moment(dates.to).format(\"YYYY-MM-DD\") : null\n }, {\n notify: false\n });\n\n\n }\n\n\n };\n\n var vm = this;\n vm.dates = {};\n\n vm.dates.from = $stateParams.from ? moment($stateParams.from).toDate() : null;\n vm.dates.to = $stateParams.to ? moment($stateParams.to).toDate() : null;\n $scope.$watch(\"vm.dates\", reloadData, true);\n\n\n loadData(regbycontractor.data);\n }\n];","export default [\n \"bonus\",\n \"albumConfig\",\n function (bonus, albumConfig) {\n var vm = this;\n vm.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n vm.bonus = bonus.data;\n\n vm.nav = function (id, type, path) {\n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=\" + type + \"&id=\" + id + \"&path=\" + path;\n };\n }\n];","export default [\n \"confirmedcontracts\",\n \"albumConfig\",\n function (confirmedcontracts, albumConfig) {\n var vm = this;\n vm.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n vm.confirmedcontracts = confirmedcontracts.data;\n\n vm.hiddenColumns = [{\n colName: \"price\",\n header: \"Pris\",\n exportFormat: \"kr\"\n },\n {\n colName: \"attic\",\n header: \"Loft\"\n },\n {\n colName: \"atticPrice\",\n header: \"Pris på loft\",\n exportFormat: \"kr\"\n }\n ];\n\n vm.nav = function (id, type, path) {\n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=\" + type + \"&id=\" + id + \"&path=\" + path;\n };\n }\n];","export default [\n \"data\",\n function (data) {\n\n\n var vm = this;\n vm.list = data.data.list;\n\n }\n];","import reports from \"album/reports/state\";\nimport contractsoverview from \"album/reports/contractsoverview/state\";\nimport unconfirmedcontracts from \"album/reports/unconfirmedcontracts/state\";\nimport confirmednotdelivered from \"album/reports/confirmednotdelivered/state\";\nimport sectionsmovedin from \"album/reports/sectionsmovedin/state\";\nimport dailystats from \"album/reports/dailystats/state\";\nimport unsolddelivered from \"album/reports/unsolddelivered/state\";\nimport reglinelog from \"album/reports/reglinelog/state\";\nimport controlplan from \"album/reports/controlplan/state\";\nimport salesstats from \"album/reports/salesstats/state\";\nimport stats from \"album/reports/stats/state\";\nimport projectportfolio from \"album/reports/projectportfolio/state\";\n\nimport regbyage from \"album/reports/regbyage/state\";\nimport regbycategory from \"album/reports/regbycategory/state\";\nimport regbycontractor from \"album/reports/regbycontractor/state\";\nimport bonus from \"album/reports/bonus/state\";\nimport confirmedcontracts from \"album/reports/confirmedcontracts/state\";\nimport drilldown from \"album/reports/drilldown/state\";\n\nexport default [\n reports,\n contractsoverview,\n unconfirmedcontracts,\n confirmednotdelivered,\n sectionsmovedin,\n dailystats,\n reglinelog,\n controlplan,\n salesstats,\n stats,\n regbyage,\n regbycategory,\n bonus,\n confirmedcontracts,\n unsolddelivered,\n drilldown,\n regbycontractor,\n projectportfolio\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./salesstats.html\";\nexport default [\n \"$stateProvider\",\n function ($stateProvider) {\n $stateProvider.state(\"main.reports.salesstats\", {\n url: \"/reports/salesstats\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Salgsstatistikk\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n params: {\n year: null,\n week: null,\n projTypeId: null\n },\n\n resolve: {\n salesstats: [\n \"commonApi\",\n \"$stateParams\",\n \"reportApi\",\n function (commonApi, $stateParams, reportApi) {\n var week = commonApi.getWeekNumber(new Date());\n\n if ($stateParams.week && $stateParams.year) {\n week = [$stateParams.year, $stateParams.week];\n }\n\n return reportApi.getSalesStats(\n week[0],\n week[1],\n $stateParams.projTypeId\n );\n }\n ],\n projtypes: [\n \"systemApi\",\n function (systemApi) {\n return systemApi.getProjectTypes();\n }\n ]\n }\n });\n }\n];\n","export default \"\\n\\n
\\n
\\n \\n
\\n
\\n\\n\\n \\n \\n \\n \\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n K\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n {{vm.salesstats.forecastSum}}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{vm.year}} \\n \\n Uke {{vm.weeksToDisplay[0]}} Uke {{vm.weeksToDisplay[1]}}Uke {{vm.weeksToDisplay[2]}}Uke {{vm.weeksToDisplay[3]}} Hittil i årPrognoseSalgstaktStatus
\\n SelskapProsjekt\\n PVKFNKPVKFNKPVKFNKPVKFNKPV%K%FNK\\n BRBR1030SolgtUsolgtFerdig usolgt
\\n \\n \\n \\n
{{proj.owner}}\\n {{proj.projectName}}\\n \\n {{proj.projectName}}\\n \\n {{proj.salesStatsWeeks[0].prospects | emptyif0}}{{proj.salesStatsWeeks[0].showings | emptyif0}}{{proj.salesStatsWeeks[0].contracts | emptyif0}}{{proj.salesStatsWeeks[0].cancelations | emptyif0}}\\n {{vm.getNetContracts(proj.salesStatsWeeks[0])}}\\n {{proj.salesStatsWeeks[1].prospects |emptyif0}}{{proj.salesStatsWeeks[1].showings | emptyif0}}{{proj.salesStatsWeeks[1].contracts | emptyif0}}{{proj.salesStatsWeeks[1].cancelations | emptyif0}}\\n {{vm.getNetContracts(proj.salesStatsWeeks[1])}}{{proj.salesStatsWeeks[2].prospects | emptyif0}}{{proj.salesStatsWeeks[2].showings | emptyif0}}{{proj.salesStatsWeeks[2].contracts | emptyif0}}{{proj.salesStatsWeeks[2].cancelations | emptyif0}}\\n {{vm.getNetContracts(proj.salesStatsWeeks[2])}}{{proj.salesStatsWeeks[3].prospects | emptyif0}}{{proj.salesStatsWeeks[3].showings | emptyif0}}{{proj.salesStatsWeeks[3].contracts | emptyif0}}{{proj.salesStatsWeeks[3].cancelations | emptyif0}}\\n {{vm.getNetContracts(proj.salesStatsWeeks[3])}}{{proj.salesStatsWeeks[3].aggrProspects | emptyif0}} {{proj.salesStatsWeeks[3].aggrShowings | emptyif0}}{{(proj.salesStatsWeeks[3].aggrShowings / proj.salesStatsWeeks[3].aggrProspects * 100) |\\n number : 0 | emptyif0:true}}{{proj.salesStatsWeeks[3].aggrContracts | emptyif0}}{{(proj.salesStatsWeeks[3].aggrContracts / proj.salesStatsWeeks[3].aggrShowings * 100) |\\n number : 0 | emptyif0:true}}{{proj.salesStatsWeeks[3].aggrCancelations | emptyif0}}\\n {{proj.salesStatsWeeks[3].aggrNetContracts | emptyif0}}{{proj.budget | emptyif0}}{{proj.salesStatsWeeks[3].aggrNetContracts-proj.budget | emptyif0}}\\n {{proj.forecast | emptyif0}}{{proj.budgetYear | emptyif0}}{{proj.forecastResult | emptyif0}}{{proj.salesRate10}}{{proj.salesRate30}}{{proj.sold | emptyif0}}{{proj.forSale | emptyif0}}{{proj.unsoldDelivered | emptyif0}}
Sum pr uke{{vm.salesstats.aggregatedPrWeek[0].prospects}}{{vm.salesstats.aggregatedPrWeek[0].showings}}{{vm.salesstats.aggregatedPrWeek[0].contracts}}{{vm.salesstats.aggregatedPrWeek[0].cancelations}}\\n {{vm.salesstats.aggregatedPrWeek[0].netContracts}}{{vm.salesstats.aggregatedPrWeek[1].prospects}}{{vm.salesstats.aggregatedPrWeek[1].showings}}{{vm.salesstats.aggregatedPrWeek[1].contracts}}{{vm.salesstats.aggregatedPrWeek[1].cancelations}}\\n {{vm.salesstats.aggregatedPrWeek[1].netContracts}}{{vm.salesstats.aggregatedPrWeek[2].prospects}}{{vm.salesstats.aggregatedPrWeek[2].showings}}{{vm.salesstats.aggregatedPrWeek[2].contracts}}{{vm.salesstats.aggregatedPrWeek[2].cancelations}}\\n {{vm.salesstats.aggregatedPrWeek[2].netContracts}}{{vm.salesstats.aggregatedPrWeek[3].prospects}}{{vm.salesstats.aggregatedPrWeek[3].showings}}{{vm.salesstats.aggregatedPrWeek[3].contracts}}{{vm.salesstats.aggregatedPrWeek[3].cancelations}}\\n {{vm.salesstats.aggregatedPrWeek[3].netContracts}}
Sum akkumulert{{vm.salesstats.aggregatedPrWeek[0].aggrProspects}}{{vm.salesstats.aggregatedPrWeek[0].aggrShowings}}{{vm.salesstats.aggregatedPrWeek[0].aggrContracts}}{{vm.salesstats.aggregatedPrWeek[0].aggrCancelations}}\\n {{vm.salesstats.aggregatedPrWeek[0].aggrNetContracts}}{{vm.salesstats.aggregatedPrWeek[1].aggrProspects}}{{vm.salesstats.aggregatedPrWeek[1].aggrShowings}}{{vm.salesstats.aggregatedPrWeek[1].aggrContracts}}{{vm.salesstats.aggregatedPrWeek[1].aggrCancelations}}\\n {{vm.salesstats.aggregatedPrWeek[1].aggrNetContracts}}{{vm.salesstats.aggregatedPrWeek[2].aggrProspects}}{{vm.salesstats.aggregatedPrWeek[2].aggrShowings}}{{vm.salesstats.aggregatedPrWeek[2].aggrContracts}}{{vm.salesstats.aggregatedPrWeek[2].aggrCancelations}}\\n {{vm.salesstats.aggregatedPrWeek[2].aggrNetContracts}}{{vm.salesstats.aggregatedPrWeek[3].aggrProspects}}{{vm.salesstats.aggregatedPrWeek[3].aggrShowings}}{{vm.salesstats.aggregatedPrWeek[3].aggrContracts}}{{vm.salesstats.aggregatedPrWeek[3].aggrCancelations}}\\n {{vm.salesstats.aggregatedPrWeek[3].aggrNetContracts}}{{vm.salesstats.aggregatedPrWeek[3].aggrProspects}}{{vm.salesstats.aggregatedPrWeek[3].aggrShowings}}{{(vm.salesstats.aggregatedPrWeek[3].aggrShowings /\\n vm.salesstats.aggregatedPrWeek[3].aggrProspects\\n * 100) | number : 0 | emptyif0:true}}{{vm.salesstats.aggregatedPrWeek[3].aggrContracts}}{{(vm.salesstats.aggregatedPrWeek[3].aggrContracts /\\n vm.salesstats.aggregatedPrWeek[3].aggrShowings\\n * 100) | number : 0 | emptyif0:true}}{{vm.salesstats.aggregatedPrWeek[3].aggrCancelations}}\\n {{vm.salesstats.aggregatedPrWeek[3].aggrNetContracts}}{{vm.salesstats.budgetSum}}{{vm.salesstats.aggregatedPrWeek[3].aggrNetContracts-vm.salesstats.budgetSum | emptyif0}}\\n {{vm.salesstats.budgetYearSum}}{{vm.salesstats.forecastSum-vm.salesstats.budgetYearSum | emptyif0}}\\n {{vm.salesstats.salesRate10Sum}}{{vm.salesstats.salesRate30Sum}}{{vm.salesstats.soldSum}}{{vm.salesstats.forSaleSum}}{{vm.salesstats.unsoldDeliveredSum}}
\\n
\\n P=Prospekter\\n V=Visninger\\n K=Kontrakter\\n F=Frafall\\n NK=Netto kontrakter\\n B=Budsjett\\n R=Prognose i forhold til budsjett\\n 10=Salgstakt siste 10 uker\\n 30=Salgstakt siste 30 uker\\n
\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./stats.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.reports.stats\", {\n url: \"/reports/stats\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Statistikk\"\n },\n views: {\n\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n },\n\n\n resolve: {\n stats: [\"moment\", \"$stateParams\", \"reportApi\", function (moment, $stateParams, reportApi) {\n\n var date1 = moment().startOf(\"year\").toDate();\n var date2 = moment().toDate();\n\n\n return reportApi.getStats(date1, date2);\n }]\n }\n\n\n });\n}];","export default \"\\n\\n\\n
\\n \\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
ProsjektKontrakterKrSikre kontrakterKrKansellerte kontrakterKrIgangsatte leiligheterKrFerdige leiligheterKrOverleverte leiligheterKrFerdige,usolgte leiligheterKr
{{group.projType.description}}{{group.contract}}{{group.contractPrice | number :0}}{{group.confirmedContract}}{{group.confirmedContractPrice | number :0}}{{group.canceledContract}}{{group.canceledContractPrice | number :0}}{{group.construction}}{{group.constructionPrice | number :0}}{{group.done}}{{group.donePrice | number :0}}{{group.takenOver}}{{group.takenOverPrice | number :0}}{{group.unsold}}{{group.unsoldPrice | number :0}}
{{p.project.name}}{{p.contract}}{{p.contractPrice | number :0}}{{p.confirmedContract}}{{p.confirmedContractPrice | number :0}}{{p.canceledContract}}{{p.canceledContractPrice | number :0}}{{p.construction}}{{p.constructionPrice | number :0}}{{p.done}}{{p.donePrice | number :0}}{{p.takenOver}}{{p.takenOverPrice | number :0}}{{p.unsold}}{{p.unsoldPrice | number :0}}
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./regbyage.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.reports.regbyage\", {\n url: \"/reports/regbyage\",\n\n aData: {\n name: \"Åpne reklamasjoner etter alder\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n regbyage: [\"$stateParams\", \"reportApi\", function ($stateParams, reportApi) {\n return reportApi.getRegByAge();\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n \\n
\\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
ProsjektSelskapUten frist\\n 1 mnd2 mnd3 mndEldreSumUtsatt
\\n {{s.projectName}}\\n \\n {{s.projectName}}\\n \\n {{s.companyName}}{{s.noDeadLine}}{{s.month1}}{{s.month2}}{{s.month3}}{{s.older}}{{s.total}}{{s.postPoned}}
Totalt{{vm.regbyage | sumOfValue:'noDeadLine'}}{{vm.regbyage | sumOfValue:'month1'}}{{vm.regbyage | sumOfValue:'month2'}}{{vm.regbyage | sumOfValue:'month3'}}{{vm.regbyage | sumOfValue:'older'}}{{vm.regbyage | sumOfValue:'total'}}{{vm.regbyage | sumOfValue:'postPoned'}}
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./regbycategory.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.reports.regbycategory\", {\n url: \"/regbycategory?from&to\",\n\n aData: {\n name: \"Reklamasjoner etter kategori\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n regbyCategory: [\"$stateParams\", \"reportApi\", function ($stateParams, reportApi) {\n\n return reportApi.getRegByCategory($stateParams.from, $stateParams.to);\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n Fra - til\\n
\\n \\n \\n \\n \\n\\n\\n
\\n\\n \\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./bonusreport.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.reports.bonusreport\", {\n url: \"/reports/bonusreport\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Bonus\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n bonus: [\"$stateParams\", \"reportApi\", function ($stateParams, reportApi) {\n return reportApi.getBonusReport();\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n
Prosjekt:Prosjekt id (entreprenør)Bygg:Fagområde:Ferdigmeldt dato:
\\n \\n \\n \\n \\n \\n
\\n {{s.projectName}}\\n {{s.projectName}}\\n \\n {{s.projIdEnt}}\\n \\n {{'House' |\\n translate}}\\n {{s.houseNum}}\\n {{'House' |\\n translate}}\\n {{s.houseNum}}\\n {{s.tradeCodeName}}{{s.lastCompletedDate | date:'dd.MM.yyyy'}}
\\n
\\n \\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./confirmedcontracts.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.reports.confirmedcontracts\", {\n url: \"/reports/confirmedcontracts\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Bekreftede kontrakter\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n confirmedcontracts: [\"$stateParams\", \"reportApi\", function ($stateParams, reportApi) {\n return reportApi.getConfirmedContracts();\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n \\n \\n
Selger:Prosjekt:Bygg:Seksjon:Kontraktsdato:Sikker kontrakt:Kjøper 1:Kjøper 2:Overtagelsedato:
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{s.salesRep}}\\n {{s.projectName}}\\n {{s.projectName}}\\n \\n {{'House' |\\n translate}} {{s.houseNum}}\\n {{'House' |\\n translate}} {{s.houseNum}}\\n \\n Seksjon\\n {{s.section}}\\n Seksjon\\n {{s.section}}\\n {{s.contractDate | date:'dd.MM.yyyy'}}{{s.confirmedDate | date:'dd.MM.yyyy'}}{{s.customer1}}{{s.customer2}}{{s.moveInDate | date:'dd.MM.yyyy'}}
\\n
\\n \\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./drilldown.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.reports.drilldown\", {\n url: \"/reports/drilldown?from&to&subCategoryId&subCategories\",\n\n aData: {\n name: \"Detaljer\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n data: [\"$stateParams\", \"reportApi\", function ($stateParams, reportApi) {\n\n\n return reportApi.getRegByCategoryDrilldown($stateParams.from,\n $stateParams.to, $stateParams.subCategoryId, $stateParams.subCategories);\n\n\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n\\n\\n \\n\\n\\n\\n \\n \\n \\n \\n \\n\\n \\n \\n
IdPunktKundeKategoriProsjektKildeDatoFristStatusAnsvarlig
\\n {{reg.lineIndexLineId}}\\n \\n \\n {{reg.categoryName}}\\n {{reg.customerName\\n | singleSpace}}\\n

{{reg.customerName | singleSpace}}\\n

\\n
\\n {{reg.projectName}}\\n {{reg.regHeaderSourceString}}\\n {{reg.lineCreatedDate | date : 'dd.MM.yyyy'}}\\n {{reg.timeLimit | date : 'dd.MM.yyyy'}}{{reg.regStatus}}\\n \\n
\\n
\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./regbycontractor.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.reports.regbycontractor\", {\n url: \"/regbycontractor?from&to\",\n\n aData: {\n name: \"Reklamasjoner etter leverandør\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n regbycontractor: [\"$stateParams\", \"reportApi\", function ($stateParams, reportApi) {\n\n return reportApi.getRegbyContractor($stateParams.from, $stateParams.to);\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n Fra - til\\n
\\n \\n \\n \\n \\n\\n\\n
\\n\\n \\n\\n
\";","import html from \"./projectportfolio.html\";\nimport ctrl from \"./ctrl\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.reports.projectportfolio\", {\n url: \"/reports/projectportfolio\",\n\n aData: {\n name: \"Prosjektportefølje\"\n },\n views: {\n\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n\n });\n}];","export default \"

Under utvikling

\";","import {\n forEach,\n find\n} from \"lodash\";\n\nexport default [\n \"projects\",\n function (projects) {\n var vm = this;\n vm.projects = projects.data.projects;\n vm.projectStatuses = projects.data.projectStatuses;\n vm.projTypes = projects.data.projTypes;\n vm.companies = projects.data.companies;\n\n vm.hiddenColumns = [{\n colName: \"salesResponsibleUserInfoContactPersonPersonFullName\",\n header: \"Selger\"\n },\n {\n colName: \"id\",\n header: \"Id\"\n },\n {\n colName: \"address\",\n header: \"Address\"\n },\n {\n colName: \"postCode\",\n header: \"Postnummer\"\n },\n {\n colName: \"postCodeName\",\n header: \"Poststed\"\n }\n ];\n\n forEach(vm.projects, p => {\n\n\n let sectionData = find(projects.data.sections, {\n \"key\": p.id\n });\n if (sectionData) {\n p.sectionsSold = sectionData.sold;\n p.sectionsTotal = sectionData.total;\n }\n\n switch (p.projTypeName) {\n case \"Flerfamilie\":\n p.thumbImg = \"/img/project_imgs/flerfamilie-round.png\";\n break;\n case \"Omnibo\":\n p.thumbImg = \"/img/project_imgs/omnibo-round.png\";\n break;\n case \"Unibo\":\n p.thumbImg = \"/img/project_imgs/flerfamilie-round.png\";\n break;\n case \"Trykon\":\n p.thumbImg = \"/img/project_imgs/trykon-round.png\";\n break;\n default:\n p.thumbImg = \"/img/project_imgs/misc-rounded.png\";\n break;\n }\n\n\n });\n\n\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./projects.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects\", {\n url: \"projects\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Prosjekter\"\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n },\n resolve: {\n projects: [\"projectApi\", function (projectApi) {\n\n return projectApi.getProjects();\n }]\n }\n\n\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t\\n\\t
\\n\\t\\n
\";","import { find } from \"lodash\";\n\nexport default [\n \"project\",\n \"$log\",\n \"userApi\",\n \"$state\",\n \"store\",\n \"favorites\",\n \"$timeout\",\n function (project, $log, userApi, $state, store, favorites, $timeout) {\n var fav;\n var vm = this;\n\n vm.project = project.data.project;\n vm.regCount = project.data.regCount;\n vm.soldCount = project.data.soldCount;\n vm.totalCount = project.data.totalCount;\n\n if (\n vm.project.projectCompleted &&\n vm.project.projectCompleted.milestonesInfo\n ) {\n var lastMilestone = Object.create(\n vm.project.projectCompleted.milestonesInfo\n )\n .reverse()\n .find((x) => x.completed);\n }\n vm.project.lastid = lastMilestone ? lastMilestone.id : \"\";\n $timeout(function () {\n $(\"#hov-mouse\").trigger(\"mouseover\");\n });\n\n vm.isExistingProject = vm.project.status !== 2;\n\n vm.sr10 = project.data.sr10;\n vm.pctSoldRounded =\n Math.ceil(((vm.soldCount / vm.totalCount) * 100) / 5) * 5;\n\n fav = find(favorites.data ? favorites.data : [], {\n favoriteKey: vm.project.id\n });\n\n vm.project.isOnMyList = fav !== undefined;\n\n vm.toggleMyProjects = function (add) {\n userApi\n .updateProfile({\n operation: add ? \"add\" : \"remove\",\n favorites: [\n fav || {\n favoriteKey: vm.project.id,\n name: vm.project.name\n }\n ]\n })\n .then(function () {\n $state.reload();\n });\n };\n\n vm.isProjectPage = function () {\n if (window.location.href.indexOf(\"projindex\") > -1) {\n return true;\n } else if (window.location.href.indexOf(\"project/-1/new\") > -1) {\n return true;\n } else {\n return false;\n }\n };\n\n vm.setbg = () => {\n switch (vm.project.projTypeId) {\n case 1:\n return \"trysilhusBG\";\n case 2:\n return \"omniboBG\";\n case 3:\n return \"omnihusBG\";\n default:\n return \"miscBG\";\n }\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./project.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.projects.project\", {\n url: \"/project/{id}\",\n abstract: true,\n data: {\n requiresLogin: true,\n note: true\n },\n aData: {\n breadcrumbProxy: \"main.projects.project.index\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n project: [\n \"projectApi\",\n \"$stateParams\",\n function(projectApi, $stateParams) {\n return projectApi.getProject($stateParams.id);\n }\n ]\n }\n });\n }\n];\n","export default \"\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n
\\n\\n
\\n
\\n
\\n

{{ vm.project.name }}

\\n
\\n

\\n Prosjekt nr:\\n {{ vm.project.projId }}\\n |\\n

\\n

\\n {{ vm.project.projTypeName }} |\\n

\\n

\\n {{ vm.project.projStatusString }}\\n

\\n
\\n
\\n

\\n {{ vm.project.address }}, \\n {{ vm.project.postCode}},\\n \\n {{\\n vm.project.postCodeName | uppercase\\n }}\\n

\\n

| Gnr: {{ vm.project.gnr }} |

\\n

Bnr: {{ vm.project.bnr }}

\\n
\\n\\n \\n
\\n Prosjekt nr:\\n {{ vm.project.projId }}\\n {{\\n vm.project.projTypeName\\n }}\\n {{ vm.project.projStatusString }}\\n \\n {{ vm.project.address }},\\n \\n {{ vm.project.postCode}}\\n \\n \\n {{ vm.project.postCodeName |\\n uppercase }}\\n \\n Gnr: {{ vm.project.gnr }}\\n Bnr: {{ vm.project.bnr }}\\n
\\n
\\n
\\n 0 \\\">\\n {{ vm.soldCount }}/{{ vm.totalCount }} solgt\\n \\n
\\n
\\n
\\n 0\\\"\\n class=\\\"progress-bar bg-success\\\" role=\\\"progressbar\\\" uib-tooltip=\\\"Prosjekt byggestatus\\\"\\n tooltip-placement=\\\"bottom\\\"\\n ng-style=\\\"{'width': {{vm.project.projectCompleted.percentCompleteMileStones *100 | number : 0}} +'%' }\\\">\\n \\n {{vm.project.projectCompleted.percentCompleteMileStones *100 | number : 0}}%\\n
\\n 0\\\"\\n class=\\\"progress-bar bg-danger\\\" role=\\\"progressbar\\\" uib-tooltip=\\\"Prosjekt byggestatus\\\"\\n tooltip-placement=\\\"bottom\\\"\\n ng-style=\\\"{'width': {{vm.project.projectCompleted.percentOutdatedMileStones*100 | number : 0}} +'%' }\\\">\\n \\n {{vm.project.projectCompleted.percentOutdatedMileStones *100 | number : 0}}%\\n
\\n 0\\\"\\n class=\\\"progress-bar progress-bar-striped bg-info\\\" role=\\\"progressbar\\\" uib-tooltip=\\\"Prosjekt byggestatus\\\"\\n tooltip-placement=\\\"bottom\\\"\\n ng-style=\\\"{'width': {{vm.project.projectCompleted.percentInCompleteMileStones*100 | number : 0}} +'%' }\\\">\\n \\n {{vm.project.projectCompleted.percentInCompleteMileStones *100 | number : 0}}%\\n
\\n
\\n
\\n

{{ vm.sr10 }} solgt siste 10 uker

\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n {{ vm.project.name }}\\n
\\n \\n \\n \\n
\\n
\\n \\n \\n\\n
\\n\";","import {\n filter\n} from \"lodash\";\nexport default [\"$uibModalInstance\", \"$log\", \"project\", \"projects\", \"processOwners\", \"houseApi\", \"moment\", \"models\",\n function ($uibModalInstance, $log, project, projects, processOwners, houseApi, moment, models) {\n\n\n var modalvm = this;\n modalvm.projects = projects.data;\n modalvm.processOwners = processOwners.data;\n modalvm.house = {\n projTable: project.data.project.id\n };\n modalvm.models = filter(models.data, {\n projTypeId: project.data.project.projTypeId\n });\n\n modalvm.getHouses = function () {\n houseApi.getHouses(modalvm.projectId).then(function (res) {\n modalvm.phases = res.data.houses;\n });\n };\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n if (!modalvm.copySchedule) {\n modalvm.copyPhase = null;\n }\n if (!modalvm.filterOnProcessOwner) {\n modalvm.processOwner = null;\n }\n\n\n $uibModalInstance.close({\n house: modalvm.house,\n processOwner: modalvm.processOwner,\n copyPhase: modalvm.copyPhase\n\n });\n\n };\n\n\n }\n];","import newhousectrl from \"./newhouse\";\nimport newhousehtml from \"./newhouse.html\";\nimport { forEach, map } from \"lodash\";\nexport default [\n \"project\",\n \"projectApi\",\n \"$state\",\n \"houses\",\n \"$uibModal\",\n \"houseApi\",\n function (project, projectApi, $state, houses, $uibModal, houseApi) {\n function newHouseModal() {\n var modalInstance = $uibModal.open({\n template: newhousehtml,\n controllerAs: \"modalvm\",\n controller: newhousectrl,\n resolve: {\n project: [\n function () {\n return project;\n }\n ],\n projects: [\n \"projectApi\",\n function (projectApi) {\n return projectApi.getProjectList();\n }\n ],\n processOwners: [\n \"systemApi\",\n function (systemApi) {\n return systemApi.getProcessOwners();\n }\n ],\n models: [\n \"systemApi\",\n function (systemApi) {\n return systemApi.getModels();\n }\n ]\n }\n });\n\n return modalInstance;\n }\n var vm = this;\n\n vm.houses = houses.data.houses;\n vm.projectCompleted = houses.data.projectCompleted;\n\n vm.regCount = project.data.regCount;\n vm.project = project.data.project;\n vm.projectStatuses = project.data.projectStatuses;\n vm.projTypes = project.data.projTypes;\n\n vm.upsertProject = function () {\n vm.project.status = vm.project.status === 0 ? 1 : vm.project.status;\n projectApi.upsertProject(vm.project).then(function (res) {\n $state.go(\n \"main.projects.project.index\",\n {\n id: res.data\n },\n {\n reload: true\n }\n );\n });\n };\n vm.newHouse = function () {\n newHouseModal().result.then(function (chr) {\n if (chr) {\n houseApi.createHouse(chr).then(function () {\n $state.reload();\n });\n }\n });\n };\n\n vm.$onInit = function () {\n forEach(vm.houses, function (house) {\n var temp = house.salesRates;\n house.salesRates = map(temp, function (sr, i) {\n return {\n weekRate: i === 0 ? 10 : i === 1 ? 30 : 52,\n rate: sr.count\n };\n });\n\n house.sold = 0;\n house.atticCount = 0;\n forEach(house.projSections, function (section) {\n if (section.reservedStatus === 2) house.sold++;\n if (section.attic) house.atticCount++;\n });\n\n house.soldPct = house.sold / house.projSections.length;\n if (\n house.sold === house.projSections.length &&\n house.projSections.length > 0\n ) {\n house.allSold = true;\n }\n });\n };\n }\n];\n","export default \"
\\n\\t

Opprett nytt {{\\\"House\\\" | translate | lowercase}}

\\n
\\n
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\n\\t
\\n\\t
\\n\\t\\t\\n\\t\\t\\n\\t
\\n\\t\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\n\\t\\t
\\n\\t
\\n
\\n
\\n\\t\\n\\t\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.index\", {\n url: \"/projindex\",\n //parent: 'project',\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{project.data.project.name || 'Nytt prosjekt'}}\"\n },\n resolve: {\n houses: [\"houseApi\", \"$stateParams\", function (houseApi, $stateParams) {\n return houseApi.getHouses($stateParams.id);\n }]\n\n\n },\n\n views: {\n \"projcontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n
\\n
\\n
\\n
\\n

\\n \\n {{'House' | translate}} {{house.houseNum}}\\n {{house.houseNum}}\\n \\n

\\n (Snr.\\n {{house.sectionRange}})\\n
\\n {{house.projModel && house.projModel.modelName ?\\n house.projModel.modelName : \\\"\\\"}}\\n
\\n
\\n \\n Gå til seksjoner\\n Seksjoner\\n \\n \\n

{{house.sold}}/{{house.projSections.length}} solgt

\\n
\\n
\\n
\\n 0.67 }\\\">Salgsstatus:\\n {{house.soldPct*100 | number : 0}}%\\n
\\n
\\n
\\n 0.67 }\\\">Byggestatus:\\n {{house.houseCompleted.percentCompleteMileStones *100 | number : 0}}%\\n
0\\\"\\n class=\\\"progress-bar bg-success\\\" role=\\\"progressbar\\\"\\n ng-style=\\\"{'width': {{house.houseCompleted.percentCompleteMileStones *100 | number : 0}} +'%' }\\\">\\n
\\n
0\\\"\\n class=\\\"progress-bar bg-danger\\\" role=\\\"progressbar\\\"\\n ng-style=\\\"{'width': {{house.houseCompleted.percentOutdatedMileStones*100 | number : 0}} +'%' }\\\">\\n
\\n
0\\\"\\n class=\\\"progress-bar progress-bar-striped bg-info\\\" role=\\\"progressbar\\\"\\n ng-style=\\\"{'width': {{house.houseCompleted.percentInCompleteMileStones*100 | number : 0}} +'%' }\\\">\\n
\\n
\\n
\\n
\\n
3 || !house.projModel.projTypeId)}\\\">\\n
\\n
\\n
\\n
\\n
\\n
\\n
\";","export default [\n \"project\",\n \"$log\",\n \"projectApi\",\n \"$state\",\n \"parentProjects\",\n function(project, $log, projectApi, $state, parentProjects) {\n var vm = this;\n vm.project = project.data.project;\n vm.projectStatuses = project.data.projectStatuses;\n vm.projTypes = project.data.projTypes;\n vm.parentProjects = parentProjects.data;\n\n vm.upsertProject = function() {\n vm.project.status = vm.project.status === 0 ? 1 : vm.project.status;\n projectApi.upsertProject(vm.project).then(function(res) {\n $state.go(\n \"main.projects.project.info\",\n {\n id: res.data\n },\n {\n reload: true\n }\n );\n });\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./new.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.projects.project.new\", {\n url: \"/new\",\n //parent: 'project',\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{project.data.project.name || 'Nytt prosjekt'}}\"\n },\n resolve: {\n parentProjects: [\n \"projectApi\",\n function(projectApi) {\n return projectApi.parentProjectList();\n }\n ]\n },\n\n views: {\n projcontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n

{{vm.project.projId}}

\\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n
\\n\\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n
\";","import {\n forEach\n} from \"lodash\";\nexport default [\n \"customers\",\n \"moment\",\n \"project\",\n \"$state\",\n \"$log\",\n \"customerApi\",\n \"toastr\",\n \"projects\",\n function (customers, moment, project, $state, $log, customerApi, toastr, projects) {\n var vm = this;\n vm.customers = customers.data;\n vm.project = project.data.project;\n vm.projects = projects.data;\n\n vm.addCustomer = function () {\n customerApi\n .addCustomer({\n projects: vm.projects,\n user: {\n project: vm.project.id\n }\n })\n .then(\n function () {\n $state.go(\"main.projects.project.customers\", {\n id: vm.project.id\n });\n },\n function () {\n toastr.warning(\"Feil oppstått !\");\n }\n );\n };\n\n vm.changeRating = function (rating, id) {\n customerApi.setCustomerRating({\n id: id,\n probability: rating\n });\n };\n\n vm.countInterested = function () {\n var interested = 0;\n forEach(vm.customers, function (c) {\n if (c.projCustStatus === 0) {\n interested++;\n }\n });\n return interested;\n };\n vm.countCustomers = function () {\n var customers = 0;\n forEach(vm.customers, function (c) {\n if (c.projCustStatus === 1) {\n customers++;\n }\n });\n return customers;\n };\n vm.countOutdatedInterests = function () {\n var outdatedInterests = 0;\n forEach(vm.customers, function (c) {\n if (c.projCustStatus === 0 && c.changedDate) {\n var differenceDate = moment.duration(moment().diff(c.changedDate));\n var months = differenceDate.asMonths();\n if (months > 5) {\n outdatedInterests++;\n }\n }\n });\n return outdatedInterests;\n };\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./customers.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.projects.project.customers\", {\n url: \"/customers\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Kunder\"\n },\n views: {\n projcontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n resolve: {\n projects: [\n \"projectApi\",\n function(projectApi) {\n return projectApi.getProjectList();\n }\n ],\n customers: [\n \"projectApi\",\n \"$stateParams\",\n function(projectApi, $stateParams) {\n return projectApi.getProjectCustomers($stateParams.id);\n }\n ]\n }\n });\n }\n];\n","export default \"

\\n {{vm.countCustomers()}} kunder\\n

\\n

\\n {{vm.countInterested()}} interessenter\\n

\\n

\\n {{vm.countOutdatedInterests()}}\\n interessenter 5 måneder utdatert\\n

\\n\\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n \\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
OpprettetOppdatertStatusNavn\\n Sannsynlighet\\n Seksjon
\\n \\n \\n \\n \\n \\n \\n\\n
\\n Ikke interessert lenger\\n {{p.custStatus}}\\n {{p.custStatus}}\\n {{p.custStatus}}\\n {{p.custStatus}}\\n {{p.custStatus}}\\n {{p.custStatus}}\\n {{p.custStatus}}\\n \\n {{p.customerPersonFullName}}\\n \\n \\n \\n \\n {{p.projSectionSectionNum}}\\n (Hus\\n {{p.projSectionProjectPhaseHouseNum}})  \\n
\\n
\\n
\";","export default [\n \"project\",\n \"$state\",\n \"$log\",\n \"customerApi\",\n function(project, $state, $log, customerApi) {\n var vm = this;\n vm.project = project.data.project;\n\n vm.addCustomer = function() {\n customerApi.createCustomer(vm.customer).then(function(res) {\n $state.go(\"main.customers.customer.index\", {\n id: res.data.customerId\n });\n });\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./add.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.addcustomer\", {\n\n url: \"/addcustomer\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Registrering av ny interessent\"\n },\n\n views: {\n \"projcontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n\n });\n}];","export default \"\\n\";","export default [\n \"houses\",\n function (houses) {\n var vm = this;\n\n vm.houses = houses.data.houses;\n vm.projectCompleted = houses.data.projectCompleted;\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./houses.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.houses\", {\n\n url: \"/houses\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Hus\"\n },\n views: {\n \"projcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n\n resolve: {\n houses: [\"houseApi\", \"$stateParams\", function (houseApi, $stateParams) {\n return houseApi.getHouses($stateParams.id);\n }]\n\n\n }\n\n\n });\n}];","export default \"
\\n \\n
\\n\\n\\n\";","export default [\n \"sections\",\n function (sections) {\n var vm = this;\n\n vm.sections = sections.data;\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./sections.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.sections\", {\n\n url: \"/sections\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Seksjoner\"\n },\n\n views: {\n \"projcontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n\n resolve: {\n sections: [\"projectApi\", \"$stateParams\", function (projectApi, $stateParams) {\n return projectApi.getSections($stateParams.id);\n }]\n\n\n }\n\n\n });\n}];","export default \"\";","export default [\"$log\", \"customerApi\", \"tasks\", \"project\", \"$state\",\n function ($log, customerApi, tasks, project, $state) {\n\n\n var vm = this;\n\n vm.tasks = tasks.data.tasks;\n vm.taskTypes = tasks.data.taskTypes;\n\n\n vm.addTask = function () {\n\n\n $state.go(\"main.tasks.edit\", {\n taskId: \"-1\",\n createTask: {\n projectId: project.data.project.id\n }\n });\n };\n\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./tasks.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.tasks\", {\n url: \"/tasks\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Oppgaver \"\n },\n\n views: {\n \"projcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n tasks: [\"taskApi\", \"$stateParams\", function (taskApi, $stateParams) {\n\n return taskApi.getProjectTasks($stateParams.id);\n\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnFristKundeSeksjonAnsvarligFullført
\\n\\n \\n
{{t.name}} {{t.taskTypeString}}{{t.deadLine | date : 'dd.MM.yyyy HH:mm'}}{{t.customerPersonFullName}}{{t.sectionSectionNum}}{{t.assignedToContactPersonPersonFullName}}{{t.completedDate | date :'dd.MM.yyyy HH:mm'}}
\\n
\\n
\";","import {\n forEach\n} from \"lodash\";\nexport default [\"$uibModalInstance\", \"$log\", \"optionApi\", \"options\",\n function ($uibModalInstance, $log, optionApi, options) {\n\n var modalvm = this;\n modalvm.search = null;\n modalvm.onSearchChanged = function () {\n modalvm.options.forEach(function (item) {\n item.hidden = !modalvm.search ? false :\n !item.name.toLowerCase().includes(modalvm.search.toLowerCase());\n if (item.selected && item.hidden)\n item.selected = false;\n });\n modalvm.isAllSelected();\n modalvm.isAnyOptionsSelected();\n };\n\n modalvm.options = options.data;\n modalvm.options.forEach(function (item) {\n item.hidden = false;\n });\n\n modalvm.anyOptions = modalvm.options.length > 0;\n modalvm.anyOptionsSelected = false;\n modalvm.isAnyOptionsSelected = function () {\n modalvm.anyOptionsSelected = modalvm.options.filter(item => item.selected).length > 0;\n };\n\n modalvm.selectOne = function () {\n modalvm.isAllSelected();\n modalvm.isAnyOptionsSelected();\n };\n\n modalvm.isAllSelected = function () {\n var selectedCount = modalvm.options\n .filter(item => !item.hidden && item.selected).length;\n var allCount = modalvm.options\n .filter(item => !item.hidden).length;\n modalvm.allSelected = allCount > 0 && selectedCount == allCount;\n };\n\n modalvm.selectAll = function () {\n modalvm.isAllSelected();\n forEach(modalvm.options, function (o) {\n if (!o.hidden) {\n o.selected = modalvm.allSelected ? false : true;\n }\n });\n modalvm.isAllSelected();\n modalvm.isAnyOptionsSelected();\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n\n var selected = [];\n\n forEach(modalvm.options, function (o) {\n if (o.selected) {\n selected.push(o.id);\n }\n });\n $uibModalInstance.close(selected);\n\n };\n\n setTimeout(() => {\n var element = document.getElementById(\"inputOptionSearch\");\n element.focus();\n }, 500);\n }\n];","import addoptionsctrl from \"./addoptions\";\nimport addoptionshtml from \"./addoptions.html\";\nimport { sum, map } from \"lodash\";\n\nexport default [\n \"$log\",\n \"optionApi\",\n \"options\",\n \"project\",\n \"toastr\",\n \"$uibModal\",\n \"$state\",\n \"$confirm\",\n \"albumConfig\",\n function (\n $log,\n optionApi,\n options,\n project,\n toastr,\n $uibModal,\n $state,\n $confirm,\n albumConfig\n ) {\n function openAddOptionsModal() {\n var modalInstance = $uibModal.open({\n template: addoptionshtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n controller: addoptionsctrl,\n resolve: {\n options: [\n function () {\n return optionApi.getOptionsFromPool(\n project.data.project.id\n );\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var vm = this;\n vm.project = project.data.project;\n vm.options = options.data;\n vm.env = albumConfig.env;\n\n vm.addProjectOptionCalc = function () {\n openAddOptionsModal().result.then(function (sel) {\n if (sel) {\n optionApi\n .copyOptionsFromPool(sel, vm.project.id)\n .then(function () {\n $state.reload();\n });\n }\n });\n };\n\n vm.updatePricesFromPool = function () {\n optionApi.updateOptionsFromPool(vm.options).then(function () {\n $state.reload();\n });\n };\n\n vm.removeOptionFromProject = function (opt) {\n $confirm({\n text: \"Fjerne tilvalg fra prosjektet?\"\n }).then(function () {\n optionApi.deleteProjectOption(opt).then(function () {\n $state.reload();\n });\n });\n };\n vm.removeAllOptionFromProject = function (opt) {\n $confirm({\n text: \"Fjerne alle tilvalg fra prosjektet?\"\n }).then(function () {\n opt.forEach((x) => {\n if (!x.isRemoved) {\n optionApi.deleteProjectOption(x).then(function () { });\n }\n });\n $state.reload();\n });\n };\n\n vm.getEntPrice = function (opt) {\n var priceCalc = optionApi.setPriceCalc(\n opt,\n opt.costs\n );\n \n return priceCalc.cost + opt.amountEnt;\n };\n \n }\n];\n","export default \"\\n\\n\\n
\\n

Legg til tilvalg

\\n
\\n \\n
\\n
\\n
\\n
\\n

Ingen tilvalg funnet

\\n Husk å fyll inn både riktig leilighetstype og bygg modell for å vise tilvalg.\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
TilvalgTypeKategoriBeskrivelse
{{o.typeName}}{{o.categoryName}}\\n \\n
\\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./options.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.options\", {\n url: \"/options\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Tilvalg \"\n },\n\n views: {\n \"projcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n options: [\"projectApi\", \"$stateParams\", function (projectApi, $stateParams) {\n\n return projectApi.getOptions($stateParams.id);\n\n }]\n }\n\n\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
NavnTypeKategoriPris kundePris entr.BildeUtgåttFjernet fra prosjekt
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\tUtgått! \\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t Ingen pris!\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{opt.name}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{opt.typeName}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{opt.categoryName}}\\n\\t\\t\\t\\t\\t{{opt.price |\\n\\t\\t\\t\\t\\t\\tnumber:0}}\\n\\t\\t\\t\\t\\t\\t{{vm.getEntPrice(opt) | number:0}}{{opt.hasImage ? 'Ja' : 'Nei'}}{{opt.inActive ? 'Ja' : 'Nei'}}{{opt.isRemoved ? 'Ja' : 'Nei'}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t
\\n
\";","export default [\n \"$log\",\n \"optionApi\",\n \"projectOption\",\n \"$state\",\n function($log, optionApi, projectOption, $state) {\n var vm = this;\n vm.projectOption = projectOption.data.projectOption;\n vm.projectOption.priceCalc = optionApi.setPriceCalc(\n vm.projectOption,\n vm.projectOption.costs\n );\n vm.accounts = projectOption.data.accounts;\n\n vm.goToProjectOption = function() {\n $state.go(\"main.options.option.index\", {\n optionId: vm.projectOption.optionId\n });\n };\n\n vm.priceCalcUpdate = function(pc) {\n vm.projectOption.amountEnt = pc.amountEnt;\n vm.projectOption.amountPercentageEnt = pc.amountPercentageEnt;\n vm.projectOption.amountPercentageSales = pc.amountPercentageSales;\n vm.projectOption.amountSales = pc.amountSales;\n vm.projectOption.amountTax = pc.amountTax;\n vm.projectOption.price = pc.price;\n };\n vm.saveOptionCalc = function() {\n optionApi.saveProjectOptionCalc(vm.projectOption).then(function() {\n $state.reload();\n });\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./option.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.options.option\", {\n url: \"/{projectOptionId}\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{projectOption.data.projectOption.projOptionPool.name}}\"\n },\n\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n projectOption: [\"projectApi\", \"$stateParams\", function (projectApi, $stateParams) {\n\n return projectApi.getOption($stateParams.projectOptionId);\n\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n

Prosjekt tilvalg: {{vm.projectOption.name}}

\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n

Utregning

\\n \\n \\n
\";","import { filter, maxBy, find } from \"lodash\";\nexport default [\n \"$uibModalInstance\",\n \"minuteApi\",\n \"meetingsToCopyFrom\",\n \"$log\",\n \"$stateParams\",\n \"$state\",\n \"minutes\",\n function(\n $uibModalInstance,\n minuteApi,\n meetingsToCopyFrom,\n $log,\n $stateParams,\n $state,\n minutes\n ) {\n var modalvm = this;\n var currentProjectId = $stateParams.id;\n\n modalvm.changeType = function() {\n var prevMeetings = filter(minutes, function(m) {\n return m.meetingType == modalvm.newMinuteData.meetingType;\n });\n\n var newMeetingNumber =\n prevMeetings.length == 0\n ? 1\n : maxBy(prevMeetings, function(m) {\n return m.meetingNumber;\n }).meetingNumber + 1;\n\n modalvm.newMinuteData.meetingNumber = newMeetingNumber;\n };\n\n modalvm.newMinuteData = {\n copyType: 0,\n projectId: Number(currentProjectId)\n };\n modalvm.selectedProjectOid = -1;\n modalvm.meetingTypesList = meetingsToCopyFrom.data.meetingTypesList;\n modalvm.projectList = meetingsToCopyFrom.data.projectList;\n modalvm.meetingList = meetingsToCopyFrom.data.meetingList;\n\n modalvm.copyOnlyHeadersChange = function() {\n if (modalvm.newMinuteData.copyOnlyHeaders) {\n modalvm.newMinuteData.copyAllLines = false;\n modalvm.disableCopyAllLines = true;\n } else {\n modalvm.disableCopyAllLines = false;\n }\n };\n modalvm.copyAllLinesChange = function() {\n if (modalvm.newMinuteData.copyAllLines) {\n modalvm.newMinuteData.copyOnlyHeaders = false;\n modalvm.disableCopyOnlyHeaders = true;\n } else {\n modalvm.disableCopyOnlyHeaders = false;\n }\n };\n\n modalvm.copyTypeChange = () => {\n modalvm.newMinuteData.copy = modalvm.newMinuteData.copyType !== 0;\n\n if (\n modalvm.newMinuteData.copyType === 2 &&\n meetingsToCopyFrom.data.meetingTemplateProjectId !== 0\n ) {\n modalvm.newMinuteData.projectId =\n meetingsToCopyFrom.data.meetingTemplateProjectId;\n\n if (modalvm.newMinuteData.meetingType !== undefined) {\n var firstMatchingTemplate = find(modalvm.meetingList, m => {\n return (\n m.item5 === modalvm.newMinuteData.meetingType &&\n m.item1 == modalvm.newMinuteData.projectId\n );\n });\n\n modalvm.newMinuteData.meetingId =\n firstMatchingTemplate && firstMatchingTemplate.item2;\n }\n }\n };\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.ok = function() {\n modalvm.newMinuteData.projectId = currentProjectId;\n\n minuteApi.createMinute(modalvm.newMinuteData).then(function(res) {\n $uibModalInstance.close();\n $state.go(\"main.projects.project.minutes.minute\", {\n minuteId: res.data.newId\n });\n });\n };\n }\n];\n","import {\n saveAs\n} from \"file-saver\";\nimport newminutectrl from \"./newminute\";\nimport newminutehtml from \"./newminute.html\";\n\nexport default [\n \"minutes\",\n \"$uibModal\",\n \"$state\",\n \"$stateParams\",\n \"minuteApi\",\n \"$confirm\",\n\n function (minutes, $uibModal, $state, $stateParams, minuteApi, $confirm) {\n var vm = this;\n vm.minutes = minutes.data;\n vm.downloadAll = function () {\n minuteApi.downloadAllMinutes($stateParams.id).then(function (res) {\n var data = new Blob([res.data.blob], {\n type: res.data.contentType\n });\n saveAs(data, res.data.name);\n });\n };\n\n vm.delMinute = function (minute) {\n $confirm({\n text: \"Er du sikker på at du vil slette møtet?\"\n }).then(function () {\n minuteApi.deleteMinute(minute).then(function () {\n $state.go(\n \"main.projects.project.minutes\",\n {},\n {\n reload: true\n }\n );\n });\n });\n };\n\n vm.newMinute = function () {\n $uibModal.open({\n size: \"lg\",\n resolve: {\n minutes: [\n () => {\n return vm.minutes;\n }\n ],\n meetingsToCopyFrom: [\n \"commonApi\",\n function (commonApi) {\n return commonApi.getAllMeetings();\n }\n ]\n },\n \n template: newminutehtml,\n controllerAs: \"modalvm\",\n controller: newminutectrl\n });\n };\n }\n];","export default \"
\\n

Legg til nytt møtereferat

\\n
\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n\\n
\\n\\n \\n \\n\\n \\n \\n \\n \\n
\\n\\n\\n\\n\\n
\\n\\n\\n\\n
\\n
Kopier fra
\\n
\\n
\\n \\n \\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n\\n\\n
\\n
\\n \\n \\n
\\n\\n
\\n
\\n\\n
\\n
Kopier fra mal
\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n
\\n\\n\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n
\\n\\n\\n\\n\\n\\n\\n\\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./minutes.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.minutes\", {\n url: \"/minutes\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Møtereferater\"\n },\n views: {\n \"projcontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n\n resolve: {\n minutes: [\"minuteApi\", \"$stateParams\", function (minuteApi, $stateParams) {\n return minuteApi.getMinutes($stateParams.id);\n }]\n\n\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NummerTypeNavnStedStartMøtelederReferent
{{mm.meetingNumber}}{{mm.meetingTypeString}}{{mm.meetingName}}{{mm.meetingLocation}}{{mm.meetingStart | date}}{{mm.meetingLeaderName}}{{mm.refererName}}\\n \\n
\\n
\\n
\";","import { forEach } from \"lodash\";\nexport default [\n \"$uibModalInstance\",\n \"$log\",\n \"recipients\",\n \"commonApi\",\n \"toastr\",\n function($uibModalInstance, $log, recipients, commonApi, toastr) {\n var modalvm = this;\n modalvm.recipients = recipients;\n modalvm.body = \"Vedlagt ligger referat fra møtet\";\n modalvm.attachments = [];\n\n forEach(modalvm.recipients, function(r) {\n var validEmail = commonApi.validateEmail(r.email);\n\n r.invalidEmail = !validEmail;\n r.sendTo = validEmail;\n r.email = !validEmail ? \"Epost ikke gyldig!\" : r.email;\n });\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.ok = function() {\n var rCount = modalvm.recipients.filter(r => r.sendTo || r.copyTo)\n .length;\n\n var anyTos = modalvm.recipients.filter(r => r.sendTo).length > 0;\n\n if (!anyTos) {\n toastr.error(\"Det må være minst en mottaker i \\\"til\\\" feltet!\");\n return;\n }\n\n if (rCount > 0) {\n $uibModalInstance.close(modalvm);\n } else {\n toastr.warning(\"Ingen å sende til!\");\n }\n };\n }\n];\n","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"minuteLog\",\n function($uibModalInstance, $log, minuteLog) {\n var modalvm = this;\n\n modalvm.minuteLog = minuteLog;\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n }\n];\n","const translationSettings = {\n checkAll: \"Velg alle\",\n uncheckAll: \"Fjern alle\",\n selectionCount: \"valgt\",\n buttonDefaultText: \"Velg\",\n dynamicButtonTextSuffix: \"valgt\"\n};\n\nexport { translationSettings };\n","import saveFile from \"shared/saveFile\";\nimport sendctrl from \"./send\";\nimport sendhtml from \"./send.html\";\n\nimport logCtrl from \"./log\";\nimport logHtml from \"./log.html\";\n\nimport { find, forEach, reject, orderBy, max } from \"lodash\";\nimport { translationSettings } from \"shared/dropdownMultiSelectHelper\";\n\nexport default [\n \"minute\",\n \"$log\",\n \"minuteApi\",\n \"$state\",\n \"$confirm\",\n \"toastr\",\n \"moment\",\n \"project\",\n \"$uibModal\",\n \"aberrationApi\",\n function (\n minute,\n $log,\n minuteApi,\n $state,\n $confirm,\n toastr,\n moment,\n project,\n $uibModal,\n aberrationApi\n ) {\n function updateHeadLine(updated) {\n var headLine = find(vm.minute.headLines, {\n id: updated.id\n });\n if (headLine) {\n headLine.headlineNumber = updated.headlineNumber;\n headLine.headlineTxt = updated.headlineTxt;\n }\n }\n\n function updateLine(headLineId, updated) {\n var headLine = find(vm.minute.headLines, {\n id: headLineId\n });\n if (headLine) {\n var line = find(headLine.lines, {\n id: updated.id\n });\n if (line) {\n line.index = updated.index;\n line.txt = updated.txt;\n line.meetingCode = updated.meetingCode;\n line.deadLine = updated.deadLine;\n line.responsible = updated.responsible;\n }\n }\n }\n\n function mergeUpdates(updates) {\n forEach(updates, function (headLine) {\n switch (headLine.status) {\n case 1:\n updateHeadLine(headLine);\n break;\n case 2:\n headLine.showLines = true;\n vm.minute.headLines.push(headLine);\n break;\n }\n\n forEach(headLine.lines, function (line) {\n switch (line.status) {\n case 1:\n updateLine(headLine.id, line);\n break;\n case 2:\n var header = find(vm.minute.headLines, {\n id: line.headerId\n });\n if (header) {\n header.showLines = true;\n header.lines.push(line);\n }\n break;\n }\n });\n });\n\n vm.lastSaved = moment().format(\"DD.MM.YYYY HH:mm:ss\");\n }\n\n function sendMinute(recipients) {\n var modalInstance = $uibModal.open({\n template: sendhtml,\n controllerAs: \"modalvm\",\n controller: sendctrl,\n size: \"lg\",\n resolve: {\n recipients: [\n \"minuteApi\",\n function (minuteApi) {\n return minuteApi\n .populateRecipients(recipients)\n .then(function (res) {\n return res.data.recipients;\n });\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n function modalLog(minuteId) {\n var modalInstance = $uibModal.open({\n template: logHtml,\n controllerAs: \"modalvm\",\n controller: logCtrl,\n size: \"lg\",\n resolve: {\n minuteLog: [\n \"minuteApi\",\n function (minuteApi) {\n return minuteApi\n .getLog(minuteId)\n .then(function (res) {\n return res.data;\n });\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var vm = this;\n\n vm.project = project.data.project;\n vm.translationTexts = translationSettings;\n\n // vm.settings = {...settings,...localsettings};\n\n vm.dropdownSettings = {\n idProperty: \"id\",\n externalIdProperty: \"id\",\n scrollable: true,\n scrollableHeight: \"55vh\",\n enableSearch: true,\n showCheckAll: true,\n showUncheckAll: true,\n buttonClasses: \"btn btn-secondary\",\n groupBy: \"contactGroup\"\n };\n\n vm.delMinute = function () {\n $confirm({\n text: \"Er du sikker på at du vil slette møtet?\"\n }).then(function () {\n minuteApi.deleteMinute(vm.minute).then(function () {\n $state.go(\n \"main.projects.project.minutes\",\n {},\n {\n reload: true\n }\n );\n });\n });\n };\n vm.sendMinuteToRecipients = function () {\n sendMinute(vm.minute.recipients).result.then(function (res) {\n if (res) {\n vm.minute.recipients = res.recipients;\n vm.minute.project = {\n name: vm.project.name\n };\n\n minuteApi\n .sendMinute(vm.minute, res.body, res.attachments)\n .then(function (res) {\n if (res.data.errorResponses) {\n forEach(res.data.errorResponses, function (er) {\n toastr.error(er.error);\n });\n }\n\n toastr.success(\"Epost sendt til mottakere\");\n });\n }\n });\n };\n\n vm.toggleCollapse = function () {\n forEach(vm.minute.headLines, function (hl) {\n hl.showLines = !vm.allCollapsed;\n });\n vm.allCollapsed = !vm.allCollapsed;\n };\n\n vm.addAberration = function () {\n aberrationApi.aberrationModal().result.then(function (aberration) {\n if (aberration) {\n aberration.projTable = vm.minute.projTable;\n aberration.projMeetingMinutes = vm.minute.id;\n aberration.category = 1;\n aberration.emailText =\n \"Nytt avvik opprettet i \" + vm.minute.meetingName;\n aberration.status = 2;\n aberration.aberrationTypeId = 1;\n\n aberrationApi\n .insertUpdateAberration(aberration)\n .then(function (res) {\n toastr.success(\"Avvik registrert\");\n vm.aberrations = vm.aberrations || [];\n vm.aberrations.push(res.data);\n });\n }\n });\n };\n\n vm.linesMenu = [\n [\n \"Bold\",\n function ($itemScope) {\n $itemScope.l.bold = !$itemScope.l.bold;\n vm.updateLine($itemScope.l);\n }\n ],\n [\n \"Italic\",\n function ($itemScope) {\n $itemScope.l.italic = !$itemScope.l.italic;\n vm.updateLine($itemScope.l);\n }\n ],\n null,\n [\n \"Farge\",\n function () { },\n [\n [\n \"Ingen\",\n function ($itemScope) {\n $itemScope.l.hexColor = \"#000000\";\n vm.updateLine($itemScope.l);\n }\n ],\n [\n \"Rød\",\n function ($itemScope) {\n $itemScope.l.hexColor = \"#FF0000\";\n vm.updateLine($itemScope.l);\n }\n ],\n [\n \"Blå\",\n function ($itemScope) {\n $itemScope.l.hexColor = \"#0000FF\";\n vm.updateLine($itemScope.l);\n }\n ],\n [\n \"Gul\",\n function ($itemScope) {\n $itemScope.l.hexColor = \"#FFFF00\";\n vm.updateLine($itemScope.l);\n }\n ],\n [\n \"Grønn\",\n function ($itemScope) {\n $itemScope.l.hexColor = \"#008000\";\n vm.updateLine($itemScope.l);\n }\n ]\n ]\n ]\n ];\n\n vm.minute = minute.data.minute;\n\n vm.projectContacts = orderBy(\n minute.data.projectContacts.map(pc => ({\n id: pc.id.toString(),\n label: pc.contactPersonPersonFullName,\n email: pc.contactPersonPersonEmail,\n contactGroup: pc.contactGroup\n })),\n \"label\"\n );\n\n vm.minute.recipients = minute.data.minute.projMeetingContacts\n .filter(r => {\n return r.distribution;\n })\n .map(r => ({\n id: r.projectContactId.toString(),\n label: r.projectContactContactPersonPersonFullName,\n email: r.projectContactContactPersonPersonEmail,\n contactGroup: r.contactGroup\n }));\n vm.minute.participants = minute.data.minute.projMeetingContacts\n .filter(r => {\n return r.attended;\n })\n .map(r => ({\n id: r.projectContactId.toString(),\n label: r.projectContactContactPersonPersonFullName,\n email: r.projectContactContactPersonPersonEmail,\n contactGroup: r.contactGroup\n }));\n\n vm.users = minute.data.users;\n vm.meetingTypesList = minute.data.meetingTypesList;\n vm.minute.registrationLines = minute.data.registrationLines;\n\n vm.regStatuses = minute.data.regStatuses;\n vm.aberrations = minute.data.aberrations;\n\n vm.minute.meetingStart = new Date(vm.minute.meetingStart);\n vm.minute.nextMeeting = new Date(vm.minute.nextMeeting);\n\n vm.toggleCollapse();\n\n vm.addHeader = function (h) {\n\n h.headLineNumber = max(vm.minute.headLines.map(h => h.headlineNumber));\n\n minuteApi\n .addMinuteHeader({\n headlineNumber: h.headlineNumber,\n projMeetingMinutes: vm.minute.id\n })\n .then(function (res) {\n mergeUpdates(res.data);\n });\n };\n vm.deleteHeader = function (h) {\n minuteApi.deleteHeader(h).then(function (res) {\n mergeUpdates(res.data);\n vm.minute.headLines = reject(vm.minute.headLines, {\n id: h.id\n });\n });\n };\n vm.updateHeader = function (changedHeader) {\n minuteApi.updateHeader(changedHeader).then(function () {\n vm.lastSaved = moment().format(\"DD.MM.YYYY HH:mm:ss\");\n });\n };\n\n vm.addLine = function (header) {\n var newLine = {\n headerId: header.id,\n meetingCode: vm.minute.meetingCode\n };\n\n minuteApi.addLine(newLine).then(function (res) {\n mergeUpdates(res.data);\n });\n };\n vm.deleteLine = function (line) {\n minuteApi.deleteLine(line).then(function (res) {\n mergeUpdates(res.data);\n var header = find(vm.minute.headLines, {\n id: line.headerId\n });\n if (header) {\n header.lines = reject(header.lines, {\n id: line.id\n });\n }\n });\n };\n vm.updateLine = function (changedLine) {\n minuteApi.updateLine(changedLine).then(function () {\n vm.lastSaved = moment().format(\"DD.MM.YYYY HH:mm:ss\");\n });\n };\n vm.saveMinute = function () {\n minuteApi.updateMinute(vm.minute).then(function () {\n $state.reload();\n });\n };\n vm.download = function () {\n minuteApi.downloadMinute(vm.minute).then(saveFile);\n };\n\n vm.viewLog = function () {\n modalLog(vm.minute.id);\n };\n }\n];\n","export default \"\\n
\\n

Send møtereferat på epost

\\n
\\n
\\n

\\n Epost blir sendt ut til mottakere krysset av på listen, møtereferat blir lagt som vedlegg (PDF)\\n

\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnEpostSend tilKopi til
{{r.label}}{{r.email}}\\n \\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n\\n
\\n
\\n \\n \\n
\";","export default \"\\n
\\n

Logg

\\n
\\n
\\n\\n
\\n
\\n\\n

\\n \\n\\n

\\n\\n\\n\\n
\\n
\\n\\n Mottakere:\\n

{{r.emailAddress}}

\\n\\n Tekst:\\n

\\n Vedlegg:\\n

\\n \\n\\n \\n \\n\\n \\n

\\n
\\n
\\n
\\n
\\n\\n\\n\\n
\\n
\\n

Ingen logg her enda

\\n

Ingen logg på møtereferater sendt før 01.nov 2019

\\n
\\n
\\n\\n
\\n
\\n\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./minute.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.minutes.minute\", {\n url: \"/minute/{minuteId}\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{minute.data.minute.meetingName}}\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n\n checkBrowser: [\"$rootScope\", function ($rootScope) {\n let isIe = $rootScope.isMsie;\n return isIe === false;\n\n }],\n\n minute: [\"minuteApi\", \"$stateParams\", \"checkBrowser\", \"$q\", function (minuteApi, $stateParams, checkBrowser, $q) {\n\n if (!checkBrowser) {\n return $q.reject({\n status: 401,\n msg: \"Denne siden er ikke tilgjengelig i Internet Explorer\"\n });\n }\n\n return minuteApi.getMinute($stateParams.minuteId);\n }]\n }\n });\n}];","export default \"\\n\\n
\\n\\t
\\n\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t Referat\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t Linjer\\n\\t\\t\\t
\\n\\t\\t\\tAutolagret\\n\\t\\t\\t\\t{{vm.lastSaved}}\\n\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
PunktSakAnsvarFristOpprinnelse
0 ? h.showLines=!h.showLines : return;\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t{{h.headlineNumber}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t0,'fa-minus-square':h.showLines}\\\">\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t{{h.headlineNumber}}-{{l.index}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\n\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t Avvik\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
IdTittelFristRegistrertTypeHusSeksjonStatus
{{a.id}}\\n\\t\\t\\t\\t\\t\\t\\t\\t{{a.title}}\\n\\t\\t\\t\\t\\t\\t\\t{{a.timeLimit | date : 'dd.MM.yyyy'}}{{a.registrated | date : 'dd.MM.yyyy'}}{{a.aberrationType}}{{a.houseNum}}{{a.sectionNum}}{{a.aberrationStatusString}}
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t Reklamasjoner\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
KildeHusSeksjonReklamasjonBeskrivelseMerknadFristStatus
{{reg.regSource}}{{reg.houseNum}}{{reg.sectionNum}}{{reg.name}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\";","export default [\n\n \"$uibModalInstance\",\n \"$log\",\n \"project\",\n \"projects\",\n function ($uibModalInstance, $log, project, projects) {\n var modalvm = this;\n modalvm.projects = projects.data;\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.projectId);\n };\n }\n];","import saveFile from \"shared/saveFile\";\nimport importcontactsctrl from \"./importcontacts\";\nimport importcontactshtml from \"./importcontacts.html\";\n\nexport default [\n \"contacts\",\n \"$log\",\n \"$stateParams\",\n \"contactApi\",\n \"$state\",\n \"$confirm\",\n \"toastr\",\n\n \"project\",\n \"$uibModal\",\n \"projectApi\",\n function(\n contacts,\n $log,\n $stateParams,\n contactApi,\n $state,\n $confirm,\n toastr,\n\n project,\n $uibModal,\n projectApi\n ) {\n function openImportModal() {\n var modalInstance = $uibModal.open({\n template: importcontactshtml,\n controllerAs: \"modalvm\",\n resolve: {\n project: [\n function() {\n return vm.project;\n }\n ],\n projects: [\n \"projectApi\",\n function(projectApi) {\n return projectApi.getProjectList();\n }\n ]\n },\n controller: importcontactsctrl\n });\n return modalInstance;\n }\n var vm = this;\n vm.contacts = contacts.data;\n vm.project = project.data.project;\n vm.edit = function(c) {\n $state.go(\"main.projects.project.contacts.projcontact\", {\n projContactId: c.id\n });\n };\n\n vm.importList = function() {\n openImportModal().result.then(function(projectId) {\n projectApi.importContactList(projectId, vm.project.id).then(function() {\n $state.reload();\n });\n });\n };\n vm.exportList = function() {\n contactApi.exportContactList(vm.contacts).then(res => {\n saveFile(res, `Prosjektkontakter ${vm.project.name}.xlsx`);\n });\n };\n\n vm.deleteProjContact = function(pc) {\n $confirm({\n text: \"Vil du slette kontakten fra dette prosjektet?\"\n }).then(function() {\n contactApi.removeProjectContact(pc.id).then(function() {\n $state.go(\n \"main.projects.project.contacts\",\n {},\n {\n reload: true\n }\n );\n });\n });\n };\n\n vm.save = function(res) {\n res.projId = $stateParams.id;\n\n if (res.contactPerson.person) {\n res.contactPerson2 = res.contactPerson;\n }\n\n contactApi.addProjectContact(res).then(function() {\n $state.go(\n \"main.projects.project.contacts\",\n {},\n {\n reload: true\n }\n );\n });\n };\n }\n];\n","export default \"
\\n\\t

Importer kontakter

\\n
\\n
\\n\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\n\\t
\\n\\n\\n\\n\\n\\n\\n\\n
\\n
\\n\\t\\n\\t\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./contacts.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.contacts\", {\n url: \"/contacts\",\n\n data: {\n requiresLogin: true\n },\n\n aData: {\n name: \"Kontakter\"\n },\n views: {\n \"projcontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n\n resolve: {\n contacts: [\"projectApi\", \"$stateParams\", function (projectApi, $stateParams) {\n return projectApi.getContacts($stateParams.id);\n }]\n\n\n }\n\n\n });\n}];","export default \"
\\n\\t\\n\\t\\n\\t\\n
\\n\\n
\\n\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\n\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\n\\t
FirmakontaktFirmatelefonKontaktpersonRolleMobiltelefonEpost
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t{{group.projectContactGroup}}\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{c.contactName}}\\n\\t\\t\\t\\t{{c.contactName}}{{c.contactPhone}}{{c.contactPersonPersonFullName}}\\n\\t\\t\\t\\t{{c.projContactRole}} {{c.contactPersonPersonMobile}} {{c.contactPersonPersonEmail}}
\\n
\\n
\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\";","export default [\n \"projcontact\",\n \"$log\",\n \"projectApi\",\n \"$state\",\n \"contactApi\",\n \"$confirm\",\n function(projcontact, $log, projectApi, $state, contactApi, $confirm) {\n var vm = this;\n\n vm.projContact = projcontact.data.projContact;\n vm.groups = projcontact.data.groups;\n\n vm.updateProjContact = function() {\n contactApi.updateProjContact(vm.projContact).then(() => {\n $state.reload();\n });\n };\n vm.deleteProjContact = function() {\n $confirm({\n text: \"Vil du slette kontakten fra dette prosjektet?\"\n }).then(function() {\n contactApi\n .removeProjectContact(vm.projContact.id)\n .then(function() {\n $state.go(\n \"main.projects.project.contacts\",\n {},\n {\n reload: true\n }\n );\n });\n });\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./projcontact.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.projects.project.contacts.projcontact\", {\n url: \"/projcontact/{projContactId}\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{projcontact.data.projContact.contactName}}\"\n },\n resolve: {\n projcontact: [\n \"contactApi\",\n \"$stateParams\",\n function(contactApi, $stateParams) {\n return contactApi.getProjContact(\n $stateParams.projContactId\n );\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

Prosjektkontakt

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\";","export default [\n \"project\",\n \"$log\",\n \"customerApi\",\n \"aberrations\",\n \"$state\",\n \"aberrationApi\",\n function (project, $log, customerApi, aberrations, $state, aberrationApi) {\n var vm = this;\n\n vm.project = project.data.project;\n vm.aberrations = aberrations.data;\n vm.addAberration = function () {\n var preSelect = {\n projectId: vm.project.id\n };\n aberrationApi.aberrationModalFull(preSelect).result.then(function (newAberration) {\n if (newAberration) {\n aberrationApi.insertUpdateAberration(newAberration, true).then(function () {\n\n $state.reload();\n });\n }\n });\n };\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./aberrations.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.aberrations\", {\n url: \"/aberrations\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Avvik \"\n },\n\n views: {\n \"projcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n aberrations: [\"projectApi\", \"project\", function (projectApi, project) {\n\n return projectApi.getAberrations(project.data.project.id);\n\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdOpprettetStatusHusSeksjonTittelAktivitetProsess
{{a.aberrationId}}{{a.created | date : 'dd.MM.yyyy'}}{{a.statusString}}{{a.houseNum}}\\n {{a.sectionNum}}\\n ({{a.customerName}})\\n {{a.title}}\\n {{a.activityName}}{{a.processName}}
\\n
\\n
\";","import {\n map\n} from \"lodash\";\nexport default [\n \"$uibModalInstance\",\n \"data\",\n \"$log\",\n \"projects\",\n function ($uibModalInstance, data, $log, projects) {\n var modalvm = this;\n modalvm.projects = projects.data;\n modalvm.processOwners = data.processOwners;\n modalvm.importFromOwners = map(data.processOwners, function (po) {\n return po.key.toString();\n });\n\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n var importRequest = {\n toId: data.currentProjId,\n fromId: modalvm.projectId,\n owners: modalvm.importFromOwners\n };\n\n $uibModalInstance.close(importRequest);\n };\n }\n];","import { find } from \"lodash\";\nexport default [\n \"$uibModalInstance\",\n \"contacts\",\n \"tradeCodes\",\n \"listOfExistingTradeCodesInProject\",\n \"contactPersons\",\n \"$log\",\n \"po\",\n \"contactApi\",\n function(\n $uibModalInstance,\n contacts,\n tradeCodes,\n listOfExistingTradeCodesInProject,\n contactPersons,\n $log,\n po,\n contactApi\n ) {\n var modalvm = this;\n modalvm.po = po;\n modalvm.contacts = contacts;\n modalvm.tradeCodes = tradeCodes;\n modalvm.contactPersons = contactPersons.data;\n\n modalvm.tradeCodes.forEach(tc => {\n tc.notAnOption = listOfExistingTradeCodesInProject.includes(tc.id);\n });\n\n modalvm.changeTradeCode = function() {\n po.tradeCode = find(tradeCodes, {\n id: po.tradeCodeId\n });\n };\n modalvm.changeContact = function() {\n po.contact = find(contacts, {\n id: po.contactId\n });\n\n contactApi.companyContactPersons(po.contactId).then(res => {\n modalvm.contactPersons = res.data;\n });\n };\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.ok = function() {\n /* po.status = po.status === 2 ? 2 : 1;\n\n var lcp = find(modalvm.contactPersons, {\n id: po.leaderId\n }) || {\n name: \"\"\n };\n po.leaderContactPerson = {\n person: {\n fullName: lcp.name\n }\n };\n \n\n var rcp = find(modalvm.contactPersons, {\n id: po.responsibleId\n }) || {\n name: \"\"\n };\n po.responsibleContactPerson = {\n person: {\n fullName: rcp.name\n }\n }; */\n\n $uibModalInstance.close(po);\n };\n }\n];\n","import saveFile from \"shared/saveFile\";\nimport importProjOrganizationctrl from \"./importProjOrganization\";\nimport importProjOrganizationhtml from \"./importProjOrganization.html\";\nimport insertUpdateProjOrganizationctrl from \"./insertUpdateProjOrganization\";\nimport insertUpdateProjOrganizationhtml from \"./insertUpdateProjOrganization.html\";\n\nexport default [\n \"$scope\",\n \"organization\",\n \"contactApi\",\n \"$stateParams\",\n \"$log\",\n \"toastr\",\n \"$timeout\",\n \"$confirm\",\n \"$uibModal\",\n \"projectApi\",\n \"$state\",\n \"project\",\n \"haveRoleFilter\",\n\n function (\n $scope,\n organization,\n contactApi,\n $stateParams,\n $log,\n toastr,\n $timeout,\n $confirm,\n $uibModal,\n projectApi,\n $state,\n project,\n haveRole\n ) {\n function openImportModal() {\n var modalInstance = $uibModal.open({\n template: importProjOrganizationhtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n resolve: {\n data: [\n function () {\n return {\n currentProjId: project.data.project.id,\n processOwners: organization.data.processOwners\n };\n }\n ],\n projects: [\n function () {\n return projectApi.getProjectList();\n }\n ]\n },\n controller: importProjOrganizationctrl\n });\n\n return modalInstance;\n }\n\n function openInsertUpdateModal(po) {\n var modalInstance = $uibModal.open({\n template: insertUpdateProjOrganizationhtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n resolve: {\n po: [\n function () {\n return po;\n }\n ],\n contacts: [\n function () {\n return organization.data.contacts;\n }\n ],\n tradeCodes: [\n function () {\n return organization.data.tradeCodes;\n }\n ],\n listOfExistingTradeCodesInProject: [\n function () {\n return organization.data\n .listOfExistingTradeCodesInProject;\n }\n ],\n contactPersons: [\n function () {\n return contactApi.companyContactPersons(\n po.contactId\n );\n }\n ]\n },\n controller: insertUpdateProjOrganizationctrl\n });\n\n return modalInstance;\n }\n\n var vm = this;\n\n vm.projOrganizationDto = organization.data;\n vm.editPermissions = haveRole([\"PRL\", \"PL\", \"PU\", \"ProcessAdmin\"], \"any\");\n\n vm.deleteProjOrganization = function (po) {\n $confirm({\n text: \"Slette fagområdet ?\"\n }).then(function () {\n po.status = -1;\n projectApi.upsertProjOrganization(po).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.insertUpdateProjOrganization = function (po) {\n openInsertUpdateModal(po).result.then(function (res) {\n if (res) {\n po.projectId = $stateParams.id;\n\n projectApi.upsertProjOrganization(po).then(function () {\n $state.reload();\n });\n }\n });\n };\n\n vm.exportProjOrganizations = function () {\n projectApi\n .exportProjOrganization(vm.projOrganizationDto)\n .then(res => {\n saveFile(\n res,\n `Fagområder ${project.data.project.name}.xlsx`\n );\n });\n };\n vm.importProjOrganizations = function () {\n openImportModal().result.then(function (res) {\n if (res) {\n projectApi\n .importProjOrganizations(res)\n .then(function (importRes) {\n $state.reload();\n toastr.info(\n \"Importerte \" +\n importRes.data.importCount +\n \" prosjektkontakter\"\n );\n });\n }\n });\n };\n vm.changeCommunityPermission = function (projOrg, origin, group) {\n if (projOrg.communityWritePermissionProjContact && origin == \"ProjContact\") {\n projOrg.communityWritePermissionLeader = true;\n projOrg.communityWritePermissionResponsible = true;\n }\n projectApi.updateProjOrganizationPermissions(projOrg).then(function (res) {\n });\n };\n }\n];\n","export default \"
\\n

\\n {{modalvm.po.status === 2 ? 'Legg til':'Rediger'}}\\n

\\n
\\n
\\n
\\n
\\n \\n
\\n

\\n {{modalvm.po.tradeCode.processOwner}}\\n

\\n
\\n
\\n
\\n \\n
\\n

{{modalvm.po.tradeCode.display}}

\\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n \\n \\n
\";","export default \"
\\n

Importer fagområdet

\\n
\\n
\\n\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n\\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./organization.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.organization\", {\n url: \"/organization\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Fagområder\"\n },\n\n views: {\n \"projcontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n resolve: {\n organization: [\"projectApi\", \"$stateParams\", function (projectApi, $stateParams) {\n return projectApi.getOrganization($stateParams.id);\n }]\n }\n });\n}];","export default \"\\n\\n
\\n \\n \\n \\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n
{{'TradeCode' | translate}}FirmaTilgang\\n dokumenthotell\\n Faglig lederTilgang\\n dokumenthotellFagansvarlig utførendeTilgang\\n dokumenthotell
\\n \\n {{group.processOwnerGroup}}\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\";","export default [\"$uibModalInstance\", \"$log\", \"project\",\n function ($uibModalInstance, $log, project) {\n\n\n var modalvm = this;\n modalvm.project = project;\n\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.save = function () {\n $uibModalInstance.close(modalvm.project);\n };\n\n\n }\n];","export default [\"$uibModalInstance\",\n function ($uibModalInstance) {\n\n var modalvm = this;\n\n modalvm.cancel = function () {\n $uibModalInstance.close(false);\n };\n modalvm.send = function () {\n $uibModalInstance.close(true);\n };\n }\n];","export default [\"$uibModalInstance\", \"projectNumbers\", \"companies\",\n function ($uibModalInstance, projectNumbers, companies) {\n\n var modalvm = this;\n\n modalvm.projectNumbers = Object.assign({}, projectNumbers);\n modalvm.companies = companies;\n modalvm.isEdit = projectNumbers.projName !== undefined;\n modalvm.error = null;\n\n setTimeout(() => {\n var input = document.getElementById(modalvm.isEdit ? \"txtprojNumbersDeveloper\" : \"txtprojNumbersName\");\n input.focus();\n }, 500);\n\n modalvm.projNameFocus = function () {\n modalvm.error = null;\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.save = function (projectNumbers) {\n\n if (!projectNumbers.projName || !projectNumbers.projName.trim()) {\n modalvm.error = \"Prosjektnavn er påkrevd\";\n }\n else {\n $uibModalInstance.close(projectNumbers);\n }\n };\n }\n];","import uuidv4 from \"uuid/v4\";\nimport updateprojidctrl from \"./updateprojid\";\nimport updateprojidhtml from \"./updateprojid.html\";\nimport sendnewsletterctrl from \"./sendnewsletter\";\nimport sendnewsletterhtml from \"./sendnewsletter.html\";\nimport projectnumbersctrl from \"./projectnumbers\";\nimport projectnumbershtml from \"./projectnumbers.html\";\n\nimport { saveBlob } from \"shared/saveFile\";\n\nimport QRCode from \"qrcode\";\nimport jsPDF from \"jspdf\";\n\nexport default [\n \"info\",\n \"projectApi\",\n \"$scope\",\n \"commonApi\",\n \"$state\",\n \"project\",\n \"$uibModal\",\n \"$confirm\",\n \"toastr\",\n \"albumConfig\",\n function (\n info,\n projectApi,\n $scope,\n commonApi,\n $state,\n project,\n $uibModal,\n $confirm,\n toastr,\n albumConfig\n ) {\n let updateProjIdModal = function (project) {\n var modal = $uibModal.open({\n template: updateprojidhtml,\n controllerAs: \"modalvm\",\n\n resolve: {\n project: [\n function () {\n return project;\n }\n ]\n },\n controller: updateprojidctrl\n });\n\n return modal;\n };\n\n let sendnewsletterModal = function () {\n var modal = $uibModal.open({\n template: sendnewsletterhtml,\n controllerAs: \"modalvm\",\n controller: sendnewsletterctrl\n });\n return modal;\n };\n\n let projectNumbersModal = function (projNumbers) {\n var modal = $uibModal.open({\n template: projectnumbershtml,\n controllerAs: \"modalvm\",\n resolve: {\n projectNumbers: [\n function () {\n return projNumbers;\n }\n ],\n companies: [\n function () {\n return vm.companies;\n }\n ]\n },\n controller: projectnumbersctrl\n });\n return modal;\n };\n\n var vm = this;\n\n vm.projectStatuses = project.data.projectStatuses;\n vm.projTypes = project.data.projTypes;\n vm.parentProjects = info.data.parentProjects;\n vm.info = info.data.info;\n vm.info.infotechProjSettings.autoCheckoutTime =\n new Date(vm.info.infotechProjSettings.autoCheckoutTime);\n vm.isNewsletterSent = project.data.project.isNewsletterSent;\n vm.companies = info.data.companies;\n vm.users = info.data.users;\n vm.infotechProjects = [];\n\n const btAddress = albumConfig.btAddress;\n const url = `${btAddress}/projects/${vm.info.id}`;\n\n projectApi.getInfotechProjects().then(function (res) {\n vm.infotechProjects = res.data;\n });\n\n vm.disableNewsletterModeChange = vm.info.newsletterSummary\n .filter(x => x.sent == true).length > 0;\n\n vm.updateProjectAndProjInformation = function () {\n if (vm.projectImage) {\n vm.info.projectImage = JSON.stringify(vm.projectImage);\n }\n if (typeof vm.info.condominiumStartPrice === \"string\" || vm.info.condominiumStartPrice instanceof String) {\n vm.info.condominiumStartPrice = parseFloat(vm.info.condominiumStartPrice);\n }\n projectApi.updateInformation(vm.info).then(function () {\n $state.reload();\n });\n };\n\n vm.updateProjId = function () {\n updateProjIdModal({\n id: vm.info.id,\n oldId: vm.info.projId,\n connectionId: info.data.connectionId\n }).result.then(modalres => {\n if (modalres) {\n projectApi.updateProjId(modalres).then(() => {\n toastr.success(\"Prosjekt Id er oppdatert!\");\n $state.reload();\n });\n }\n });\n };\n\n vm.changedInfotechAutocheckout = function () {\n if (!vm.info.infotechProjSettings.isAutoCheckoutEnabled) {\n vm.info.infotechProjSettings.autoCheckoutTime = null;\n } else {\n vm.info.infotechProjSettings.autoCheckoutTime = new Date(\"1970-01-01T23:59\");\n }\n };\n\n vm.sendStartUpNewsletter = function () {\n sendnewsletterModal({}).result.then(modalres => {\n if (modalres) {\n projectApi.postNewsletter({ projectId: vm.info.id, type: 0 })\n .then((response) => {\n toastr.success(\"Sendte nyhetsbrev til \" + response.data.emailsToSend + \" kunder\");\n $state.reload();\n });\n }\n });\n };\n\n vm.sendNewsletter = function (newsletter) {\n $confirm({\n text: \"Sende nyhetsbrev \" +\n (newsletter.type == 1 ? \"'Boligen din reiser seg'\" : \"'Nå er det ikke lenge igjen'\")\n + \" til \" + newsletter.buildingName + \"?\"\n }).then(function () {\n projectApi.postNewsletter({\n projectId: vm.info.id,\n phaseId: newsletter.phaseId,\n type: newsletter.type\n })\n .then(() => {\n newsletter.sent = true;\n vm.disableNewsletterModeChange = true;\n });\n });\n };\n\n $scope.$watch(\"vm.projectImage\", function watchImage(newValue) {\n if (newValue && newValue.filename) {\n vm.info.projectImageName = newValue.filename;\n }\n });\n\n vm.loadImage = function () {\n if (vm.projectImage) {\n openImage(transformImage(vm.projectImage));\n } else {\n projectApi.loadImage(vm.info.id).then(response => {\n openImage(transformImage(response.data));\n });\n }\n };\n let transformImage = image => {\n image.guid = uuidv4();\n image.status = 0;\n if (image.image) {\n image.base64 = image.image;\n } else {\n image.contentType = image.filetype;\n }\n\n return image;\n };\n let openImage = image => {\n commonApi.downloadOrOpen(\n {\n data: image\n },\n [image]\n );\n };\n\n vm.delImage = function () {\n vm.info.projectImageName = null;\n vm.projectImage = null;\n vm.info.projectImage = \"delete\";\n };\n\n vm.addProjectToProjNumbers = function () {\n projectNumbersModal({}).result.then(modalres => {\n if (modalres) {\n vm.info.projectNumbers.push(modalres);\n }\n });\n };\n\n vm.editProjNumbers = function (projectNumbers) {\n projectNumbersModal(projectNumbers).result.then(modalres => {\n if (modalres) {\n var index = vm.info.projectNumbers\n .findIndex(item => item.projName == modalres.projName);\n if (index > -1) {\n vm.info.projectNumbers.splice(index, 1, modalres);\n }\n }\n });\n };\n\n vm.deleteProjNumbers = function (projectNumbers) {\n $confirm({\n text: \"Slette prosjekt \" + projectNumbers.projName + \"?\"\n }).then(function () {\n var index = vm.info.projectNumbers\n .findIndex(item => item.projName == projectNumbers.projName);\n if (index > -1) {\n vm.info.projectNumbers.splice(index, 1);\n }\n });\n };\n\n vm.fieldInfo = function (tradeCodeNumber) {\n\n var field = \"\";\n switch (tradeCodeNumber) {\n case \"2700\":\n field = \"Selger\";\n break;\n case \"2100\":\n field = \"Prosjektutvikler\";\n break;\n case \"3100\":\n field = \"Produksjonsleder\";\n break;\n case \"2300\":\n field = \"Kundeansvarlig\";\n break;\n case \"3130\":\n field = \"Servicekoordinator\";\n break;\n }\n\n var text = `Dette feltet styres av 'Fagområder' på prosjektet (Fagområde: ${field}). Feltet endrer også verdi dersom fagansvarlig utførende på fagområde blir endret.`;\n\n $confirm({\n title: `Felt '${field}'`,\n text: text,\n hideCancel: true\n }).then(function () {\n });\n };\n\n vm.downloadQr = function () {\n const cWidth = 455;\n const cHeight = 455;\n const qrSize = 455;\n const btSize = 150;\n\n var canvas = document.getElementById(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n ctx.canvas.height = cHeight.toString();\n ctx.canvas.width = cWidth.toString();\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, cWidth, cHeight);\n\n // const url =\n // process.env.VUE_APP_REDIRECTURI + `/projects/${this.projectId}`;\n\n QRCode.toDataURL(url, {\n errorCorrectionLevel: \"H\",\n version: 6,\n margin: 1,\n width: cWidth,\n color: {\n dark: \"#000000\",\n light: \"#ffffff\"\n }\n }).then((url) => {\n let img = new Image();\n img.src = url;\n\n img.onload = function () {\n var center = (cWidth - qrSize - 2) / 2;\n\n ctx.drawImage(img, center, 0, qrSize, qrSize);\n\n let btImg = new Image();\n btImg.src = \"/img/BT-logo.png\";\n\n btImg.onload = function () {\n var center = (cWidth - btSize + 0 - 2) / 2;\n var center3 = (cWidth - btSize - 2) / 2;\n ctx.drawImage(btImg, center, center3, btSize, btSize);\n vm.makePDFQr();\n };\n };\n });\n };\n\n vm.makePDFQr = function () {\n var pdf = new jsPDF();\n //Center qr code\n const qrCodeWidth = 120;\n const marginX = (pdf.internal.pageSize.width - qrCodeWidth) / 2;\n var canvas = document.getElementById(\"canvas\");\n\n var img = canvas.toDataURL(\"image/png\");\n\n pdf.setFont(\"Quicksand\");\n\n if (vm.info.name) {\n centeredText(pdf, vm.info.name, 40, 40);\n }\n\n pdf.setFontSize(16);\n pdf.setFont(\"Quicksand\", \"bold\");\n pdf.text(38, 60, \"Første gangen\");\n pdf.line(38, 61, 72, 61);\n pdf.setFont(\"Quicksand\", \"normal\");\n pdf.text(72, 60, \" du kommer til et prosjekt, må du godkjenne\");\n\n var info1 = \"Personlig Sikkerhetsinstruks (PSI) for å komme inn på byggeplass. Dette gjør\";\n centeredText(pdf, info1, 67, 16);\n var info2 = \"du ved å scanne QR koden under og følge lenken til Bygg Trysilhus\";\n centeredText(pdf, info2, 74, 16);\n\n\n var info3 = \"Hvis du ikke kommer inn på byggeplass, kontakt din nærmeste leder.\";\n centeredText(pdf, info3, 90, 16);\n pdf.addImage(img, \"png\", marginX, 100, qrCodeWidth, qrCodeWidth);\n\n let logo = new Image();\n logo.src = \"/img/trysilhus_logo.png\";\n pdf.addImage(logo, \"png\", 10, 10, 43, 11.5);\n\n centeredText(pdf, \"I Bygg Trysilhus har du blant annet oversikt over / tilgang til å:\", 230, 12, true);\n\n pdf.setFontSize(12);\n pdf.setFont(\"Quicksand\", \"bold\");\n pdf.text(67, 240, \"• Dine reklamasjoner, tiltak, henvendelser.\");\n pdf.text(67, 250, \"• Legge inn rapport om uønsket hendelse\");\n pdf.text(67, 260, \"• HMS plan for prosjektet.\");\n pdf.text(67, 270, \"• Bygge/anleggsmøtereferater \");\n pdf.text(67, 280, \"• Med mer...\");\n\n\n const filename = `QR-Kode-${vm.info.name}.pdf`;\n pdf.save(filename);\n };\n\n vm.downloadQrImg = function () {\n const cWidth = 600;\n const cHeight = 600;\n const qrSize = 400;\n const btSize = 150;\n\n var canvas = document.getElementById(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n ctx.canvas.height = cHeight.toString();\n ctx.canvas.width = cWidth.toString();\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, cWidth, cHeight);\n\n\n QRCode.toDataURL(url, {\n errorCorrectionLevel: \"H\",\n version: 10,\n margin: 1,\n width: cWidth,\n color: {\n dark: \"#000000\",\n light: \"#ffffff\"\n }\n }).then((url) => {\n let img = new Image();\n img.src = url;\n\n img.onload = function () {\n var center = (cWidth - qrSize - 2) / 2;\n\n ctx.drawImage(img, center, 100, qrSize, qrSize);\n\n //Header\n var title = vm.info.name;\n if (vm.info.name.length > 20) {\n title = title.substring(0, 20);\n title = title + \"...\";\n }\n\n ctx.font = \"50px Quicksand\";\n ctx.fillStyle = \"black\";\n ctx.textAlign = \"center\";\n ctx.fillText(title, cWidth / 2, 50);\n\n //SubTitle\n if (vm.projTypes && vm.info.projTypeId) {\n ctx.font = \"20px Quicksand\";\n ctx.fillStyle = \"black\";\n ctx.textAlign = \"center\";\n ctx.fillText(vm.projTypes[vm.info.projTypeId], cWidth / 2, 80);\n }\n\n let btImg = new Image();\n btImg.src = \"/img/BT-logo.png\";\n\n btImg.onload = function () {\n var center = (cWidth - btSize + 10 - 2) / 2;\n var center3 = (cWidth - btSize - 2) / 2;\n ctx.drawImage(btImg, center, center3, btSize, btSize);\n var blob = canvas.toDataURL(\"image/png\");\n saveBlob(blob, `${vm.info.name}_qr.png`);\n };\n };\n });\n };\n\n const centeredText = function (pdf, text, y, fontSize, bold = false) {\n if (fontSize) {\n pdf.setFontSize(fontSize);\n }\n if (bold) {\n pdf.setFont(\"Quicksand\", \"bold\");\n }\n var textWidth =\n (pdf.getStringUnitWidth(text) * pdf.internal.getFontSize()) /\n pdf.internal.scaleFactor;\n var textOffset = (pdf.internal.pageSize.width - textWidth) / 2;\n\n pdf.text(textOffset, y, text);\n\n if (bold) {\n pdf.setFont(\"Quicksand\", \"normal\");\n }\n };\n\n\n vm.downloadHMSPlanQr = function () {\n const cWidth = 600;\n const cHeight = 600;\n const qrSize = 400;\n const btSize = 150;\n\n const urlHms = `${btAddress}/projects/${vm.info.id}/hms`;\n\n var canvas = document.getElementById(\"canvas\");\n var ctx = canvas.getContext(\"2d\");\n ctx.canvas.height = cHeight.toString();\n ctx.canvas.width = cWidth.toString();\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, cWidth, cHeight);\n\n\n QRCode.toDataURL(urlHms, {\n errorCorrectionLevel: \"H\",\n version: 10,\n margin: 1,\n width: cWidth,\n color: {\n dark: \"#000000\",\n light: \"#ffffff\"\n }\n }).then((urlHms) => {\n let img = new Image();\n img.src = urlHms;\n\n img.onload = function () {\n var center = (cWidth - qrSize - 2) / 2;\n\n ctx.drawImage(img, center, 100, qrSize, qrSize);\n\n //Header\n var title = vm.info.name;\n if (vm.info.name.length > 20) {\n title = title.substring(0, 20);\n title = title + \"...\";\n }\n\n ctx.font = \"50px Quicksand\";\n ctx.fillStyle = \"black\";\n ctx.textAlign = \"center\";\n ctx.fillText(title, cWidth / 2, 50);\n\n //SubTitle\n if (vm.projTypes && vm.info.projTypeId) {\n ctx.font = \"20px Quicksand\";\n ctx.fillStyle = \"black\";\n ctx.textAlign = \"center\";\n ctx.fillText(\"HMS plan\", cWidth / 2, 80);\n }\n\n let btImg = new Image();\n btImg.src = \"/img/BT-logo.png\";\n\n btImg.onload = function () {\n var center = (cWidth - btSize + 10 - 2) / 2;\n var center3 = (cWidth - btSize - 2) / 2;\n ctx.drawImage(btImg, center, center3, btSize, btSize);\n var blob = canvas.toDataURL(\"image/png\");\n saveBlob(blob, `${vm.info.name}_qr_hms.png`);\n };\n };\n });\n };\n\n }\n];\n","export default \"
\\n

{{ modalvm.isEdit ? 'Rediger prosjekt' : 'Legg til prosjekt' }}

\\n
\\n
\\n
Prosjektnavn
\\n \\n {{ modalvm.error }}\\n
Prosjektnr. utbygger
\\n \\n
Prosjektnr. entreprenør bygg
\\n \\n
Prosjektnr. entreprenør grunn
\\n \\n
Prosjektnr. entreprenør p-kjeller
\\n \\n
Bestillingsmøte
\\n \\n
Prosjekteier
\\n \\n
\\n
\\n \\n \\n
\";","export default \"
\\n

Oppdater prosjekt id

\\n
\\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n Endring av prosjekt id vil tagge tilknytted felleskap mot ny id\\n
\\n\\n\\n
\\n
\\n \\n \\n
\";","export default \"
\\n

Send - Nyhetsbrev Oppstart

\\n
\\n
\\n Du er i ferd med å sende nyhetsbrev om oppstart til alle kunder i prosjektet som ønsker å motta\\n nyhetsbrev.
Denne\\n handlingen kan kun utføres en\\n gang.

Er du sikker på at du vil sende nyhetsbrevet nå?\\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./info.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.info\", {\n url: \"/info\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Informasjon\"\n },\n views: {\n \"projcontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n\n resolve: {\n info: [\"projectApi\", \"$stateParams\", function (projectApi, $stateParams) {\n return projectApi.getInfo($stateParams.id);\n }]\n\n\n }\n\n\n });\n}];","export default \"\\n\\n
\\n
\\n \\n \\n \\n \\n \\n
\\n
\\n\\n
\\n
\\n

Prosjekt informasjon

\\n
\\n
\\n \\n
\\n \\n
\\n\\n\\n
\\n
\\n \\n
\\n\\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n {{$select.selected.name}}\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n Prosjektbilde:\\n
\\n
\\n \\n \\n\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n\\n\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n

Boligsameie

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n

Byggeplass

\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{$select.selected.name}} ({{$select.selected.id}})\\n \\n \\n {{item.name}} ({{item.id}})\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n\\n
\\n

Adresser og finn.no

\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n

Tomtverdier og konto

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n

Byggesak

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n\\n
\\n
\\n

Nyhetsbrev

\\n - Nyhetsbrev \\\"oppstart\\\" sendes 2 uker etter oppstart Husmontering i\\n Årsfremdriftsplan\\n - Nyhetsbrev \\\"nå er det ikke lenge igjen\\\" sendes 8 uker før sluttdato Sluttkontroll\\n 1.etg i\\n Årsfremdriftsplan\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n

Prosjektnøkler

\\n
\\n
\\n \\n
\\n
0\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n Prosjektnavn\\n \\n Prosjektnr. utbygger\\n \\n Prosjektnr. entreprenør bygg\\n \\n Prosjektnr. entreprenør grunn\\n \\n Prosjektnr. entreprenør p-kjeller\\n \\n Prosjekteier\\n \\n Bestillingsmøte\\n
\\n {{ proj.projName }}\\n \\n {{ proj.projNumDeveloper }}\\n \\n {{ proj.projNumContractorPhase }}\\n \\n {{ proj.projNumContractorGround }}\\n \\n {{ proj.projNumContractorParkingBasement }}\\n \\n {{ proj.projBuilder }}\\n \\n {{ proj.projOrderMeetingNumber }}\\n \\n \\n \\n
\\n
\\n
Ingen prosjekter lagt til
\\n
\\n
\";","export default [\"project\", \"projDocuments\", \"ibmApi\", \"$state\", \"$window\", \"$log\", \"$stateParams\",\n function (project, projDocuments, ibmApi, $state, $window, $log, $stateParams) {\n var vm = this;\n vm.folderId = $stateParams.folderId;\n vm.project = project.data.project;\n\n vm.projDocuments = projDocuments.data;\n\n\n vm.loadDocuments = function (folder) {\n $state.go(\"main.projects.project.documents\", {\n folderId: folder\n });\n };\n\n\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./documents.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.documents\", {\n url: \"/documents/:folderId\",\n params: {\n folderId: null\n },\n data: {\n requiresLogin: true\n },\n\n aData: {\n name: \"Dokumenter\"\n },\n views: {\n \"projcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n\n resolve: {\n projDocuments: [\"ibmApi\", \"$stateParams\", function (ibmApi, $stateParams) {\n\n if ($stateParams.folderId) {\n return ibmApi.getProjDocumentsInFolder($stateParams.id, $stateParams.folderId);\n } else {\n return ibmApi.getProjDocuments($stateParams.id);\n }\n\n\n }]\n }\n });\n}];","export default \"\";","export default [\n \"project\",\n function (project) {\n var vm = this;\n\n vm.project = project.data.project;\n\n vm.persistKey = \"project_registrations_\" + vm.project.id;\n\n vm.regContext = {\n projectId: vm.project.id\n };\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./registrations.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.registrations\", {\n url: \"/registrations\",\n data: {\n requiresLogin: true,\n titleText: \"Reklamasjoner {{project.data.project.name}}\"\n },\n aData: {\n name: \"Reklamasjoner\"\n },\n\n\n views: {\n\n \"projcontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n\n\n });\n\n}];","export default \"\\n\\n\";","export default [\n \"$log\",\n \"project\",\n \"checklists\",\n function ($log, project, checklists) {\n var vm = this;\n vm.checklists = checklists.data.checklists;\n vm.project = project.data.project;\n vm.availableChecklists = checklists.data.availableChecklists;\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./checklists.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.checklists\", {\n url: \"/projectchecklists\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Sjekklister\"\n },\n resolve: {\n checklists: [\"checklistApi\", \"$stateParams\", function (checklistApi, $stateParams) {\n\n return checklistApi.getProjectChecklists($stateParams.id);\n\n }]\n },\n views: {\n \"projcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"\";","import saveFile from \"shared/saveFile\";\nimport navigation from \"shared/navigation.js\";\n\nexport default [\n \"project\",\n \"$stateParams\",\n \"$log\",\n \"$state\",\n \"openregs\",\n \"toastr\",\n \"registrationApi\",\n\n function(project, $stateParams, $log, $state, openregs, toastr, registrationApi) {\n var vm = this;\n\n vm.project = project.data.project;\n vm.exportFileName = \"Åpne reklamasjoner \" + vm.project.name + \".xlsx\";\n\n vm.registrations = openregs.data;\n vm.persistKey = \"project_openregistrations_\" + vm.project.id;\n\n vm.nav = navigation;\n\n vm.workorders = function() {\n registrationApi.exportWorkOrdersFromLines(vm.idArray).then(saveFile);\n };\n\n vm.insertNew = function() {\n var stateParams = {\n projectId: vm.project.id,\n regType: 1\n };\n\n $state.go(\"main.registrations.newreg\", stateParams);\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./openregistrations.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.openregistrations\", {\n url: \"/openregistrations\",\n\n data: {\n requiresLogin: true,\n titleText: \"Åpne reklamasjoner {{project.data.project.name}}\"\n },\n\n aData: {\n name: \"Åpne reklamasjoner\"\n },\n resolve: {\n openregs: [\"registrationApi\", \"$stateParams\", function (registrationApi, $stateParams) {\n return registrationApi.getRegistrationsOpen($stateParams.id);\n }]\n },\n views: {\n\n \"projcontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n\n\n });\n\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n
\\n \\n
\\n Excel\\n\\n\\n\\n\\n PDF\\n (Arbeidsordrer)\\n
\\n
\\n\\n \\n
\\n \\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdPunktKundeAddresseSeksjon{{'House'|translate}}\\n HovedkategoriKategoriKildeDatoFristStatus\\n Ansvarlig
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n
\\n\\n
\\n Ingen reklamasjoner er åpne\\n
\\n\\n
\\n \\n {{r.lineId}}\\n \\n \\n \\n \\n {{r.customerName\\n | singleSpace}}\\n

{{r.customerName | singleSpace}}

\\n
{{r.address}}\\n {{r.sectionNum}}\\n \\n {{r.houseNum}}\\n {{r.parentCategory}}{{r.category}}{{r.regSourceString}}{{r.lineDate | date : 'dd.MM.yyyy'}}{{r.deadLine | date : 'dd.MM.yyyy'}}{{r.regStatus}}\\n \\n
\\n
\\n \\n
\";","import saveFile from \"shared/saveFile\";\nimport { map, forEach, flatMap, filter, sumBy } from \"lodash\";\nexport default [\n \"$log\",\n \"blueprints\",\n \"toastr\",\n \"bytesFilter\",\n \"$confirm\",\n \"$scope\",\n \"projectApi\",\n \"$stateParams\",\n function(\n $log,\n blueprints,\n toastr,\n bytes,\n $confirm,\n $scope,\n projectApi,\n $stateParams\n ) {\n var vm = this;\n\n vm.blueprints = blueprints.data;\n vm.mainGroups = map(blueprints.data, g => {\n return {\n name: g.group,\n value: g.group\n };\n });\n vm.toggleSelectAll = function(bp) {\n forEach(vm.blueprints, function(g) {\n forEach(g.list, function(d) {\n d.selected = false;\n });\n });\n\n bp.selectAll = !bp.selectAll;\n\n forEach(bp.list, function(doc) {\n doc.selected = bp.selectAll;\n });\n };\n\n $scope.$watch(\n \"vm.blueprints\",\n function watchBluePrints(newValue) {\n if (newValue) {\n forEach(newValue, function(g) {\n g.selectedCount = filter(g.list, \"selected\").length;\n });\n }\n },\n true\n );\n\n /* vm.selectCount = function () {\n var cnt = 0;\n forEach(vm.blueprints, function (g) {\n forEach(g.list, function (d) {\n\n cnt += d.selected ? 1 : 0;\n });\n });\n\n if (cnt > 0) {\n return cnt;\n }\n\n }; */\n\n vm.download = function() {\n var blueprints = flatMap(vm.blueprints, \"list\");\n\n var selected = filter(blueprints, {\n selected: true\n });\n\n if (selected.length === 0) {\n toastr.error(\"Ingen tegninger valgt!\");\n } else {\n var totalSize = bytes(sumBy(selected, \"size\"));\n\n $confirm({\n text:\n \"Vil du laste ned \" +\n selected.length +\n \" med en total størrelse på \" +\n totalSize +\n \" ?\"\n }).then(function() {\n var selectedId = map(selected, \"id\");\n projectApi\n .downloadBluePrints($stateParams.id, selectedId)\n .then(saveFile);\n });\n }\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./blueprints.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.blueprints\", {\n url: \"/blueprints\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Tegninger\"\n },\n\n views: {\n \"projcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n\n blueprints: [\n \"projectApi\", \"$stateParams\",\n function (projectApi, $stateParams) {\n return projectApi.getBluePrints($stateParams.id);\n }\n ]\n }\n\n\n });\n}];","export default \"
\\n
\\n\\n
\\n
\\n
\\n

Finner ingen tegninger

\\n

Tegninger må ligge i mappen\\n

\\n/05 Gjennomføring tiltak/00 Tegninger - Arbeidstegninger\\n                
\\n for å dukke opp her.

\\n
\\n
\\n\\n\\n
0\\\">\\n
\\n
\\n \\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n
MappeNavn
\\n \\n \\n \\n
\\n \\n \\n \\n\\n
\\n {{bp.selectedCount}}\\n tegninger valgt\\n \\n \\n
\\n\\n\\n
\\n
\\n
\\n\\n\\n\\n\\n
\";","import { map } from \"lodash\";\nexport default [\n \"$uibModalInstance\",\n \"$log\",\n \"$stateParams\",\n \"scheduleApi\",\n \"templates\",\n\n function ($uibModalInstance, $log, $stateParams, scheduleApi, templates) {\n var modalvm = this;\n modalvm.wrikeProjectName = \"\";\n modalvm.projType = null;\n\n modalvm.templates = map(templates.data, wp => {\n return {\n projectId: wp.key,\n projectName: wp.value\n };\n });\n modalvm.milestoneProcesses = [];\n\n modalvm.templateSelected = function () {\n var template = modalvm.templates.find(t => t.projectId == modalvm.wrikeProject);\n if (template) {\n var nameArray = template.projectName.split(\" \");\n modalvm.projType = nameArray[nameArray.length - 1].trim();\n modalvm.wrikeProjectName = \"Tidplan \" + modalvm.projType;\n modalvm.getWrikeScheduleMilestones();\n }\n };\n\n modalvm.getWrikeScheduleMilestones = function() { \n scheduleApi.getWrikeScheduleMilestones(\n { \n projectId: $stateParams.id, \n wrikeProjectId: modalvm.wrikeProject \n }).then(res => {\n modalvm.milestoneProcesses = res.data;\n });\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n\n modalvm.ok = function () {\n if (modalvm.wrikeProject) {\n $uibModalInstance.close({\n type: \"wrike\",\n id: modalvm.wrikeProject,\n processKey: modalvm.wrikeProjectAdjustProcess,\n adjustedDate: modalvm.adjustedDate,\n wrikeProjectName: modalvm.wrikeProjectName,\n projType: modalvm.projType\n });\n }\n };\n }\n];\n","import importCtrl from \"./import\";\nimport importHtml from \"./import.html\";\nimport { forEach } from \"lodash\";\n\nexport default [\n \"schedules\",\n \"projTypes\",\n \"toastr\",\n \"scheduleApi\",\n \"processApi\",\n \"projectApi\",\n \"taskApi\",\n \"$uibModal\",\n \"$stateParams\",\n \"$state\",\n \"project\",\n \"$confirm\",\n \"$log\",\n \"haveRoleFilter\",\n \"lastUpdate\",\n \"moment\",\n function (\n schedules,\n projTypes,\n toastr,\n scheduleApi,\n processApi,\n projectApi,\n taskApi,\n $uibModal,\n $stateParams,\n $state,\n project,\n $confirm,\n $log,\n haveRole,\n lastUpdate,\n moment\n ) {\n function importWrikeModal() {\n var modalInstance = $uibModal.open({\n template: importHtml,\n controllerAs: \"modalvm\",\n controller: importCtrl,\n resolve: {\n templates: [\n \"scheduleApi\",\n function (scheduleApi) {\n return scheduleApi.wrikeProjects();\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var vm = this;\n\n vm.project = project.data.project;\n vm.schedules = schedules.data;\n vm.projTypes = projTypes.data;\n vm.projType = $stateParams.projType.toLowerCase();\n vm.hasSubTasks = vm.schedules.length > 0 && vm.schedules.filter(x => x.parentId).length > 0;\n vm.lastUpdate = lastUpdate.data.updatedDateTime ? \"Tidplan sist oppdatert \" + moment(lastUpdate.data.updatedDateTime).format(\"DD.MM.YYYY HH:mm\") + \" av \" + lastUpdate.data.updatedBy : null;\n\n vm.isAllExpanded = () => {\n if (!vm.schedules || vm.schedules.length == 0) return false;\n var schedules = vm.schedules.filter(x => x.parentId == null);\n return schedules.length == schedules.filter(x => x.expanded == true).length;\n };\n\n vm.allExpanded = vm.isAllExpanded();\n\n vm.allowUpdateAllProcessesToNewVersion = haveRole(\"ProcessAdmin\") && vm.projType.toLowerCase() != \"all\";\n vm.allowImport =\n haveRole([\"ProcessAdmin\", \"PU\", \"PRL\"], \"any\") && vm.projType.toLowerCase() == \"all\";\n //!vm.project.externalProjectId;\n vm.allowUpdateResponsible =\n haveRole([\"ProcessAdmin\", \"PU\", \"PRL\"], \"any\") &&\n vm.schedules.length > 0 && vm.projType.toLowerCase() != \"all\";\n vm.allowGenerateTasks =\n haveRole([\"ProcessAdmin\", \"PU\", \"PRL\"], \"any\") &&\n vm.schedules.length > 0 && vm.projType.toLowerCase() != \"all\";\n vm.allowSync =\n haveRole([\"ProcessAdmin\", \"PU\", \"PRL\"], \"any\") &&\n vm.schedules.length > 0 && vm.projType.toLowerCase() != \"all\";\n //vm.project.externalProjectId;\n vm.allowDelete =\n haveRole([\"ProcessAdmin\", \"PU\", \"PRL\"], \"any\") &&\n vm.schedules.length > 0 && vm.projType.toLowerCase() != \"all\";\n //vm.project.externalProjectId;\n\n forEach(vm.schedules, function (sch) {\n if (!sch.activitiesCreated) {\n scheduleApi.createActivites(sch).then(response => {\n if (response.data.activityCount) {\n sch.activityCount = response.data.activityCount;\n sch.activityDoneCount = response.data.activityDoneCount;\n sch.commentCount = response.data.commentCount;\n }\n\n $log.info(response.data);\n });\n }\n });\n\n vm.updateAllProcessesToNewVersion = function () {\n processApi\n .prepareUpdateProcessesToLastVersion({\n projectId: $stateParams.id,\n idArray: vm.idArray\n })\n .then(response => {\n processApi\n .updateProcessesModal(response.data)\n .then(updates => {\n if (updates) {\n processApi\n .updateProcessesToLastVersion(updates)\n .then(function (res) {\n toastr.success(\n `${res.data.updatedCount} tidplaner oppdatert`\n );\n\n $state.reload();\n });\n }\n });\n });\n };\n\n /* vm.updateAllProcessesToNewVersion = () => {\n $confirm({\n text: `Er du sikker på at vil oppdatere ${vm.idArray.length} tidplaner til siste versjon ?`\n }).then(function() {\n processApi\n .updateProcessesToLastVersion({\n projectId: $stateParams.id,\n idArray: vm.idArray\n })\n .then(function(res) {\n if (res.data.updatedCount === 0) {\n toastr.warning(\n \"Alle tidplaner hadde allerede siste versjon av prosess!\"\n );\n } else {\n toastr.success(\n `${res.data.updatedCount} tidplaner oppdatert til siste versjon`\n );\n }\n\n if (res.data.processStartedCount > 0) {\n toastr.warning(\n `${res.data.processStartedCount} kunne ikke oppdateres til siste versjon pga at prosess var startet`\n );\n }\n\n $state.reload();\n });\n });\n }; */\n\n vm.generateTasks = () => {\n taskApi.generateTasksModal(vm.schedules).result.then(schedules => {\n if (schedules) {\n scheduleApi.updateTaskStatus(schedules).then(() => {\n toastr.success(\"Status oppdatert!\");\n $state.reload();\n });\n }\n else {\n $state.reload();\n }\n });\n };\n\n vm.setEditMode = sch => {\n vm.editToolTipVisible = true;\n vm.editSchedule = sch;\n };\n\n vm.updateSchResponsible = (sch, item) => {\n sch.responsibleId = item.contactPersonId;\n sch.responsiblePersonFullName = item.fullName;\n sch.contactId = item.contactId;\n scheduleApi.updateScheduleResponsible(sch).then(() => {\n vm.editToolTipVisible = false;\n toastr.success(\"Oppdatert ansvarlig på tidplan\");\n });\n };\n\n vm.updateResponsible = () => {\n scheduleApi\n .updateResponsibleProjectSchedule(vm.project.id, vm.projType)\n .then(response => {\n $log.info(response.data);\n $state.reload();\n });\n };\n\n vm.sync = () => {\n scheduleApi\n .wrikeImportSync({\n projectId: $stateParams.id,\n projType: vm.projType\n })\n .then(response => {\n response.data.result.forEach(element => {\n toastr.success(element);\n });\n\n $state.reload();\n });\n };\n\n vm.openTask = task => {\n scheduleApi.getWrikeTask(task.wrikeId).then(response => {\n window.open(response.data.permalink);\n });\n };\n vm.openWrikeProject = () => {\n scheduleApi.openWrikeFolder(\n {\n projectId: $stateParams.id,\n projType: vm.projType\n }).then(response => {\n window.open(response.data.permalink);\n });\n };\n\n vm.addSchedule = () => {\n importWrikeModal().result.then(selected => {\n if (selected) {\n scheduleApi\n .wrikeImport({\n wrikeProjectName: selected.wrikeProjectName,\n wrikeProjectId: selected.id,\n projectId: $stateParams.id,\n processKey: selected.processKey ? selected.processKey.key : null,\n adjustedDate: selected.adjustedDate,\n projType: selected.projType\n })\n .then(() => {\n $state.go(\"main.projects.project.schedule\", { projType: selected.projType });\n });\n }\n });\n };\n\n vm.deleteWrikeProject = () => {\n $confirm({\n text:\n \"Er du sikker på at vil slette tidplanen og koblingen til Wrike ?\"\n }).then(() => {\n scheduleApi\n .wrikeDeleteProject({\n projectId: vm.project.id,\n projType: vm.projType\n })\n .then(() => {\n $state.go(\"main.projects.project.schedule\", { projType: \"all\" });\n });\n });\n };\n\n vm.toogleSubTasks = (sch) => {\n sch.expanded = !sch.expanded;\n forEach(vm.schedules, function (schedule) {\n if (schedule.parentId == sch.id) {\n schedule.visible = sch.expanded;\n }\n });\n vm.allExpanded = vm.isAllExpanded();\n };\n\n vm.filterTable = (el, column) => {\n var filters = new Object();\n filters[\"phase\"] = vm.filterPhase;\n filters[\"name\"] = vm.filterName;\n filters[\"tradeCode\"] = vm.filterTradeCode;\n filters[\"completed\"] = vm.filterCompletedDate;\n filters[\"responsible\"] = vm.filterResponsiblePersonFullName;\n scheduleApi.getProjectSchedule(vm.project.id, $stateParams.projType, filters)\n .then(response => {\n vm.schedules = response.data;\n vm.allExpanded = vm.isAllExpanded();\n });\n };\n\n vm.toogleExpand = () => {\n var expand = !vm.allExpanded;\n forEach(vm.schedules.filter(x => x.parentId == null), function (sch) {\n sch.expanded = expand;\n forEach(vm.schedules.filter(x => x.parentId == sch.id), function (sch2) {\n sch2.visible = sch.expanded;\n });\n });\n vm.allExpanded = vm.isAllExpanded();\n };\n\n vm.projTypeChange = () => {\n $state.go(\"main.projects.project.schedule\", { projType: vm.projType });\n };\n }\n];\n","export default \"
\\n

Importer tidplan

\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./schedule.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.schedule\", {\n\n url: \"/schedule/{projType}\",\n params: {\n projType: { value: \"all\" }\n },\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Tidplan prosjekt\"\n },\n views: {\n \"projcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n\n resolve: {\n schedules: [\"scheduleApi\", \"$stateParams\", function (scheduleApi, $stateParams) {\n return scheduleApi.getProjectSchedule($stateParams.id, $stateParams.projType);\n }],\n projTypes: [\"scheduleApi\", \"$stateParams\", function (scheduleApi, $stateParams) {\n return scheduleApi.getProjTypes($stateParams.id);\n }],\n lastUpdate: [\"scheduleApi\", \"$stateParams\", function (scheduleApi, $stateParams) {\n return scheduleApi.getLastUpdateProject($stateParams.id, $stateParams.projType);\n }]\n }\n });\n}];","export default \"\\n\\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n {{ vm.lastUpdate }}\\n
TypeFaseNavnNivåFagområdeKlartFristFullførtAnsvarligAktiviteter
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n {{ sch.projType }}{{ sch.phase }}\\n\\n {{\\n sch.name\\n }}\\n \\n {{ !sch.parentId ? 1 : 2 }}\\n {{ sch.tradeCode }}{{ sch.startDate | date }}{{ sch.endDate | date }}{{ sch.completedDate | date }}\\n {{ sch.responsiblePersonFullName }}\\n \\n \\n \\n \\n {{ sch.activityDoneCount }} / {{ sch.activityCount }}\\n \\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n\\n
\\n
\\n
\\n\\n\\n\\n\";","import saveFile from \"shared/saveFile\";\nexport default [\n \"schedule\",\n \"activities\",\n \"project\",\n \"toastr\",\n \"$confirm\",\n \"$state\",\n \"scheduleApi\",\n\n function(schedule, activities, project, toastr, $confirm, $state, scheduleApi) {\n var vm = this;\n\n vm.project = project.data.project;\n vm.schedule = schedule.data;\n vm.activities = activities.data;\n\n vm.setProcessAsDone = function() {\n if (!vm.allActivitiesComplete) {\n toastr.error(\"Alle aktiviteter må være fullført før du kan ferdigmelde prosess!\");\n return;\n }\n\n $confirm({\n text: \"Vil du fullføre denne prosessen ?\"\n }).then(function() {\n scheduleApi.complete(vm.schedule).then(function() {\n $state.reload();\n });\n });\n };\n\n vm.exportpdf = () => {\n scheduleApi.exportActivitiesPdf(vm.schedule.id).then(saveFile);\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./activities.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.projects.project.scheduleactivities\", {\n url: \"/activities/{scheduleId}\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{schedule.data.processName}}\",\n customBreadCrumb: \"{{path}}\"\n },\n views: {\n projcontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n resolve: {\n path: [\n \"schedule\",\n \"project\",\n (sch, proj) => {\n let customPath = [\n {\n route: \"main\",\n displayName: \"Hjem\"\n },\n {\n route: \"main.projects\",\n displayName: \"Prosjekter\"\n },\n {\n route: \"main.projects.project.index\",\n displayName: proj.data.project.name\n }\n ];\n\n customPath.push(\n {\n route: \"main.projects.project.schedule\",\n displayName: \"Tidplan\"\n },\n {\n route: \"main.projects.project.scheduleactivities\",\n displayName: `Aktiviteter ${sch.data.processName}`\n }\n );\n\n return customPath;\n }\n ],\n activities: [\n \"activityApi\",\n \"$stateParams\",\n function(activityApi, $stateParams) {\n return activityApi.getScheduleActivities($stateParams.scheduleId);\n }\n ],\n schedule: [\n \"scheduleApi\",\n \"$stateParams\",\n function(scheduleApi, $stateParams) {\n return scheduleApi.getHouseSchedule($stateParams.scheduleId);\n }\n ]\n }\n });\n }\n];\n","export default \"
\\n
\\n
\\n \\n \\n

\\n Prosess ferdigmeldt {{vm.schedule.completedDate|date}} av {{vm.schedule.completedBy}}\\n

\\n
\\n
\\n
\\n\";","import exportexcelhtml from \"./export.html\";\nimport exportexcelctrl from \"./export\";\n\nimport saveFile from \"shared/saveFile\";\nimport { forEach } from \"lodash\";\nimport { stringify } from \"@uirouter/angularjs\";\n\nexport default [\n \"$uibModal\",\n \"$confirm\",\n \"toastr\",\n \"$state\",\n \"project\",\n \"projCrewRegistrations\",\n \"projectApi\",\n \"customerApi\",\n function (\n $uibModal,\n $confirm,\n toastr,\n $state,\n project,\n projCrewRegistrations,\n projectApi,\n customerApi\n ) {\n var vm = this;\n vm.projCrewRegistrations = projCrewRegistrations.data;\n vm.timeLimit = { fromIn: null, toIn: null, fromOut: null, toOut: null };\n\n vm.displayOut = false;\n vm.displayCheckedIn = true;\n\n function openExportModal() {\n var modalInstance = $uibModal.open({\n template: exportexcelhtml,\n controllerAs: \"modalvm\",\n resolve: {\n timeLimit: [\n function () {\n return vm.timeLimit;\n }\n ]\n },\n controller: exportexcelctrl\n });\n return modalInstance;\n }\n\n vm.anySelected = function () {\n return vm.projCrewRegistrations.find((x) => x.selected);\n };\n\n vm.selectAll = function () {\n vm.projCrewRegistrations.forEach((x) => {\n x.selected = vm.allSelected;\n });\n };\n\n vm.getAcceptSms = function (phNummer) {\n return phNummer && phNummer !== \"\";\n //if (!phNummer || phNummer === \"\") return false;\n // eslint-disable-next-line no-invalid-regexp, no-useless-escape\n // var validNummber = new RegExp(\n // \"^\\\\+\\\\d{1,2}\\\\s?\\\\d{3}\\\\s?\\\\d{3}\\\\s?\\\\d{4}$\"\n // );\n\n // return validNummber.test(phNummer);\n };\n\n vm.getRecipients = function () {\n var recipients = [];\n var selected = vm.projCrewRegistrations.filter((x) => x.selected);\n\n if (!selected) {\n toastr.error(\"Ingen mottaker valgt!\");\n }\n\n selected.forEach((x) => {\n var acceptSms = vm.getAcceptSms(x.personMobile);\n recipients.push({\n id: x.id,\n number: x.personMobile,\n fullName: x.personName,\n acceptSms: acceptSms,\n excludeSectionTemplate: true\n });\n });\n\n return recipients;\n };\n\n vm.createSms = function () {\n var recipients = vm.getRecipients();\n vm.allSelected = false;\n customerApi.openSmsModal(recipients).result.then(() => {\n forEach(vm.displayCollection, (s) => {\n s.selected = false;\n });\n });\n };\n\n vm.checkout = function (projCrewRegistration) {\n $confirm({\n text: `Sjekke ut '${projCrewRegistration.personName}' fra byggeplass?`\n }).then(function () {\n projectApi\n .putCrewRegistration(projCrewRegistration)\n .then((res) => {\n vm.getCrewRegistrations();\n });\n });\n };\n\n vm.timeLimitUpdate = function () {\n setTimeout(() => {\n vm.getCrewRegistrations();\n });\n };\n\n vm.removeFilter = function () {\n $state.reload();\n };\n\n vm.getCrewRegistrations = function () {\n projectApi\n .getCrewRegistrations({\n projTable: project.data.project.id,\n fromIn: vm.timeLimit.fromIn,\n toIn: vm.timeLimit.toIn,\n fromOut: vm.timeLimit.fromOut,\n toOut: vm.timeLimit.toOut\n })\n .then((res) => {\n vm.projCrewRegistrations = res.data;\n vm.displayOut =\n vm.projCrewRegistrations.findIndex(\n (i) => i.out != null\n ) > -1;\n vm.displayCheckedIn =\n vm.timeLimit.fromIn == null &&\n vm.timeLimit.toIn == null &&\n vm.timeLimit.fromOut == null &&\n vm.timeLimit.toOut == null;\n });\n };\n\n vm.openExportModal = function () {\n projectApi\n .exportCrewRegistrations({\n projTable: project.data.project.id,\n fromIn: vm.timeLimit.fromIn,\n toIn: vm.timeLimit.toIn,\n fromOut: vm.timeLimit.fromOut,\n toOut: vm.timeLimit.toOut\n })\n .then(function (r) {\n saveFile(\n r,\n `Mannskapsregistrering_${project.data.project.name.trim()}.xlsx`,\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n );\n });\n };\n\n vm.openCoursesModal = function (cr) {\n var text = \"\";\n forEach(cr.courses, function (course) {\n text += `${course.name}\\n`;\n });\n\n $confirm({\n text: text,\n title: `${cr.personName}`\n }).then(function () {});\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./crewregistration.html\";\nexport default [\n \"$stateProvider\",\n function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.crewregistration\", {\n url: \"/crewregistration\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Mannskapsregistrering\"\n },\n resolve: {\n projCrewRegistrations: [\n \"$stateParams\",\n \"projectApi\",\n function ($stateParams, projectApi) {\n return projectApi.getCrewRegistrations({\n projTable: $stateParams.id\n });\n }\n ]\n },\n\n views: {\n projcontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n
\\n \\n
\\n \\n
\\n \\n \\n \\n \\n \\n Adgangskontroll \\n \\n
\\n
\\n
\\n\\n \\n\\n
\\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n På byggeplass nå:\\n
HMS-kortnummerNavnFødtMobilPSI akseptertFirmaKurs/SertInnsjekkUtsjekkVarighet (d.tt:mm:ss)
{{ cr.cardId }}\\n \\n {{ cr.personName }}\\n \\n \\n {{ cr.personName }}\\n \\n {{ cr.personBirthDate | date: \\\"dd.MM.yyyy\\\" }}{{ cr.personMobile }}{{ cr.psiAccepted | date: \\\"dd.MM.yyyy\\\" }}\\n \\n {{ cr.orgName }}\\n \\n \\n {{ cr.orgName }}\\n \\n \\n 0\\\" title=\\\"Se Kurs/Sertifiseringer\\\"\\n ng-click=\\\"vm.openCoursesModal(cr)\\\">{{\\n cr.courses.length }}\\n {{ cr.in | date: \\\"dd.MM.yyyy HH:mm:ss\\\" }}{{ cr.out | date: \\\"dd.MM.yyyy HH:mm:ss\\\" }}{{ cr.duration }}\\n \\n
\\n
\\n
\";","import { forEach } from \"lodash\";\n\nexport default [\n \"$confirm\",\n \"psiAccepted\",\n \"moment\",\n function ($confirm, psiAccepted, moment) {\n var vm = this;\n vm.psi = psiAccepted.data;\n\n vm.openCoursesModal = function (cr) {\n var text = \"\";\n forEach(cr.contactPerson.contactPersonCourses, function (course) {\n text += `${course.course.name} ${\n course.expiryDate\n ? ` - ${moment(course.expiryDate).format(\"DD.MM.YYYY\")}`\n : \"\"\n } \\n`;\n });\n\n $confirm({\n text: text,\n title: `${cr.person.fullName}`\n }).then(function () {});\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./psi.html\";\nexport default [\n \"$stateProvider\",\n function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.psi\", {\n url: \"/psi\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"PSI\"\n },\n resolve: {\n psiAccepted: [\n \"$stateParams\",\n \"projectApi\",\n function ($stateParams, projectApi) {\n return projectApi.getPsiAccepted($stateParams.id);\n }\n ]\n },\n\n views: {\n projcontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n
\\n \\n
\\n \\n
\\n \\n\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n På byggeplass nå:\\n
HMS-kortnummerNavnFødtMobilPSI akseptertFirmaKurs/Sert
{{ cr.contactPerson.hmsCardNumber }}\\n \\n {{ cr.person.fullName }}\\n \\n \\n {{ cr.person.fullName }}\\n \\n {{ cr.person.birthDate | date: \\\"dd.MM.yyyy\\\" }}{{ cr.person.mobile }}{{ cr.value.date | date: \\\"dd.MM.yyyy\\\" }}\\n {{ cr.contactPerson.contact.name }}\\n \\n 0\\\"\\n title=\\\"Se Kurs/Sertifiseringer\\\" ng-click=\\\"vm.openCoursesModal(cr)\\\">\\n {{ cr.contactPerson.contactPersonCourses.length }}\\n \\n
\\n
\\n
\";","import { forEach } from \"lodash\";\n\nexport default [\n \"$uibModal\",\n \"$confirm\",\n \"toastr\",\n \"$state\",\n \"project\",\n \"projectApi\",\n \"crewAccess\",\n function (\n $uibModal,\n $confirm,\n toastr,\n $state,\n project,\n projectApi,\n crewAccess\n ) {\n var vm = this;\n vm.crewAccess = crewAccess.data;\n\n projectApi.getCrewAccessOrgData(crewAccess.data).then(function (res) {\n vm.crewAccess = [...res.data];\n forEach(vm.crewAccess, function (item) {\n if (item.contactPersonId) {\n projectApi.getPsiAcceptedDate(\n project.data.project.id, item.contactPersonId).then(function (r) {\n var itemIndex =\n vm\n .crewAccess\n .findIndex(\n i => i.contactPersonId == r.data.contactPersonId);\n if (itemIndex > -1) {\n vm.crewAccess[itemIndex].psiAccepted = r.data.date;\n }\n });\n }\n });\n });\n\n vm.removeAccess = function (crewAccessItem) {\n $confirm({\n text: `Vil du fjerne adgangen til prosjektets byggeplass for HMS-kortnummer ${crewAccessItem.cardAttributes.cardId} (${crewAccessItem.personAttributes.firstName} ${crewAccessItem.personAttributes.lastName})?`\n }).then(function () {\n projectApi.deleteCrewAccess(\n project.data.project.id,\n crewAccessItem.cardAttributes.cardId)\n .then(function () {\n $state.reload();\n });\n });\n };\n }\n];","import ctrl from \"./ctrl\";\nimport html from \"./crewaccess.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.crewaccess\", {\n url: \"/crewaccess\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Adgangskontroll (byggeplass)\"\n },\n resolve: {\n crewAccess: [\"$stateParams\", \"projectApi\", function ($stateParams, projectApi) {\n return projectApi.getCrewAccess($stateParams.id);\n }]\n },\n\n views: {\n \"projcontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"\\n\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n \\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
HMS-kortnummerNavnFødtMobilFirmaPSI-akseptert
{{ ca.cardAttributes.cardId }}{{ ca.personAttributes.firstName }} {{ ca.personAttributes.lastName\\n }}\\n \\n {{ ca.personAttributes.firstName }} {{ ca.personAttributes.lastName }}\\n \\n {{ ca.personAttributes.birthDate | date: \\\"dd.MM.yyyy\\\" }}{{ ca.personAttributes.mobile }}{{ ca.customOrgAttributes.name }}\\n \\n {{ ca.customOrgAttributes.name }}\\n \\n {{ ca.psiAccepted | date: \\\"dd.MM.yyyy\\\" }}\\n
\\n
\\n
\";","\r\nexport default [\"$uibModalInstance\", \"$log\", \"optionApi\", \"barracksOptions\", \"toastr\", \"projectId\", \"editBarrack\",\r\n function ($uibModalInstance, $log, optionApi, barracksOptions, toastr, projectId, editBarrack) {\r\n \r\n var modalvm = this;\r\n modalvm.search = null;\r\n\r\n modalvm.barracks = barracksOptions.data.barracks;\r\n modalvm.responsibles = barracksOptions.data.users;\r\n modalvm.barracksProjects = barracksOptions.data.barracksProjects;\r\n \r\n modalvm.edit = !!editBarrack;\r\n\r\n modalvm.selected = modalvm.edit ? editBarrack.barracksId : null;\r\n modalvm.responsible = modalvm.edit ? editBarrack.responsibleId : null;\r\n modalvm.location = modalvm.edit ? editBarrack.location : \"\";\r\n\r\n modalvm.barrackSelected = () => {\r\n const isSaved = modalvm.barracksProjects.find(x => x.barracksId === modalvm.selected);\r\n if (isSaved) {\r\n modalvm.responsible = isSaved.responsibleId;\r\n modalvm.location = isSaved.location;\r\n }\r\n };\r\n\r\n modalvm.cancel = function () {\r\n $uibModalInstance.close();\r\n };\r\n modalvm.ok = function () {\r\n if (modalvm.selected === null || modalvm.responsible === null) {\r\n if (modalvm.selected === null) {\r\n toastr.warning(\"Må velge brakkerigg\");\r\n }\r\n if (modalvm.responsible === null) {\r\n toastr.warning(\"Må fylle ut ansvarlig\");\r\n }\r\n } else {\r\n var data = {\r\n barracksId: modalvm.selected,\r\n projectId: projectId,\r\n responsibleId: modalvm.responsible,\r\n location: modalvm.location\r\n };\r\n $uibModalInstance.close(data);\r\n }\r\n \r\n };\r\n }\r\n];","import addbarracksctrl from \"./addBarracks\";\nimport addbarrackshtml from \"./addBarracks.html\";\n\nexport default [\n \"$confirm\",\n \"barracks\",\n \"moment\",\n \"$uibModal\",\n \"barracksApi\",\n \"$stateParams\",\n \"$state\",\n function (\n $confirm,\n barracks,\n moment,\n $uibModal,\n barracksApi,\n $stateParams,\n $state\n ) {\n\n function openAddBarracksModal(barrack) {\n var modalInstance = $uibModal.open({\n template: addbarrackshtml,\n controllerAs: \"modalvm\",\n // size: \"lg\",\n controller: addbarracksctrl,\n resolve: {\n barracksOptions: [\n function () {\n return barracksApi.getBarracksProjectsOptions($stateParams.id);\n // return optionApi.getOptionsFromPool(\n // project.data.project.id\n // );\n }\n ],\n projectId: [\n function() {\n return $stateParams.id;\n }\n ],\n editBarrack: [\n function() {\n return barrack;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var vm = this;\n vm.barracks = barracks.data;\n\n vm.barracks.forEach(x => {\n x.roomsTot = x.barrackRooms.filter(x => !x.disabled).length;\n });\n\n\n vm.addBarracks = () => {\n openAddBarracksModal().result.then(function (data) {\n if (data) {\n barracksApi.addBarrackProject(data).then(function () {\n $state.reload();\n });\n }\n });\n };\n\n vm.editBarracks = (barrack) => {\n openAddBarracksModal(barrack).result.then(function (data) {\n if (data) {\n data.id = barrack.id;\n barracksApi.editBarrackProject(data).then(function () {\n $state.reload();\n });\n }\n });\n };\n\n vm.infoBarracks = (barrack) => {\n $state.go(\"main.projects.project.barracksInfo\", {\n barrackId: barrack.id\n });\n };\n\n vm.moveBarracks = (barrack) => {\n const title = `Bekreft ${barrack.isMoved ? \"gjenopprett\":\"flytting\"}`;\n const texs = barrack.isMoved ? \"Brakkerigg vil bli tilgjengelig for booking igjen\" : \"Brakkerigg blir fjernet fra prosjekt og kan ikke bookes fra dette prosjektet. Vil du fortsette?\";\n\n $confirm({\n title: title,\n text: texs\n }).then(function () {\n \n barracksApi.moveBarrackProject(barrack.id).then(function () {\n $state.reload();\n });\n });\n \n\n // barracksApi.moveBarrackProject(barrack.id).then(function () {\n // $state.reload();\n // });\n };\n\n\n vm.openCoursesModal = function (cr) {\n var text = \"\";\n\n $confirm({\n text: text,\n title: `${cr.person.fullName}`\n }).then(function () {});\n };\n }\n];\n","export default \"\\r\\n\\r\\n\\r\\n
\\r\\n

{{modalvm.edit ? \\\"Rediger brakkerigg\\\" : \\\"Legg til brakkerigg\\\"}}

\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./barracks.html\";\nexport default [\n \"$stateProvider\",\n function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.barracks\", {\n url: \"/barracks\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Brakkerigg\"\n },\n resolve: {\n barracks: [\n \"$stateParams\",\n \"barracksApi\",\n function ($stateParams, barracksApi) {\n return barracksApi.getBarracksProject($stateParams.id);\n }\n ]\n \n },\n\n views: {\n projcontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n {{barrack.barracksName}} {{ barrack.isMoved ? \\\"(Flyttet)\\\":\\\"\\\"}}\\n {{ barrack.barrackIsDisabled ? \\\"(Deaktivert)\\\":\\\"\\\"}}\\n
\\n \\n

Ansvarlig: {{barrack.responsibleName}}

\\n

Plassering: {{barrack.location}}

\\n\\n

Reserverte rom: {{barrack.bookingsToday}} / {{barrack.roomsTot}}

\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n\\n\";","\r\nexport default [\"$uibModalInstance\", \"$log\", \"barracksApi\", \"bookings\", \"$confirm\", \"$state\", \"moment\",\r\n function ($uibModalInstance, $log, barracksApi, bookings, $confirm, $state, moment) {\r\n \r\n var modalvm = this;\r\n modalvm.search = null;\r\n modalvm.bookings = bookings.data;\r\n\r\n modalvm.delBooking = (booking) => {\r\n const title = `Bekreft sletting av ${booking.roomName}`;\r\n const texs = `Er du sikker på at du vil slette booking av ${booking.roomName}`;\r\n\r\n $confirm({\r\n title: title,\r\n text: texs\r\n }).then(function () {\r\n barracksApi.delBooking(booking.id).then(() => {\r\n $state.reload();\r\n $uibModalInstance.close();\r\n });\r\n });\r\n };\r\n\r\n modalvm.canDelete = (booking) => {\r\n return moment().isBefore(booking.toDate);\r\n }; \r\n\r\n\r\n modalvm.cancel = function () {\r\n $uibModalInstance.close();\r\n };\r\n modalvm.ok = function () {};\r\n }\r\n];","\r\n// import { loadCalendar } from \"./calendar\";\r\n\r\nimport { Calendar } from \"@fullcalendar/core\";\r\nimport dayGridPlugin from \"@fullcalendar/daygrid\";\r\nimport bootstrapPlugin from \"@fullcalendar/bootstrap\";\r\n\r\nimport nbLocale from \"@fullcalendar/core/locales/nb\";\r\n\r\nimport \"@fullcalendar/core/main.css\";\r\nimport \"@fullcalendar/daygrid/main.css\";\r\nimport \"@fullcalendar/bootstrap/main.css\";\r\n\r\nimport bookingModalctrl from \"./bookingModal.js\";\r\nimport bookingModalhtml from \"./bookingModal.html\";\r\n\r\nexport default [\r\n \"$confirm\",\r\n \"barracks\",\r\n \"moment\",\r\n \"$uibModal\",\r\n \"barracksApi\",\r\n \"$stateParams\",\r\n \"$state\",\r\n function (\r\n $confirm,\r\n barracks,\r\n moment,\r\n $uibModal,\r\n barracksApi,\r\n $stateParams,\r\n $state\r\n ) {\r\n\r\n function openBookingModal(data) {\r\n var modalInstance = $uibModal.open({\r\n template: bookingModalhtml,\r\n controllerAs: \"modalvm\",\r\n // size: \"lg\",\r\n controller: bookingModalctrl,\r\n resolve: {\r\n bookings: [\r\n function () {\r\n return barracksApi.getBarrackProjectBookings(data);\r\n }\r\n ]\r\n }\r\n });\r\n \r\n return modalInstance;\r\n }\r\n\r\n function loadCalendar(el, events) {\r\n var calendarEl = document.getElementById(el);\r\n \r\n var calendar = new Calendar(calendarEl, {\r\n plugins: [dayGridPlugin, bootstrapPlugin],\r\n defaultView: \"dayGridMonth\",\r\n header: {\r\n left: \"prev,next\",\r\n center: \"title\",\r\n right: \"dayGridMonth,dayGridWeek\"\r\n },\r\n locale: nbLocale,\r\n contentHeight: \"auto\",\r\n weekNumbers: true,\r\n themeSystem: \"bootstrap\",\r\n eventClick: function(info) {\r\n if (info.event._def.extendedProps.y > 0) {\r\n var data = {\r\n startDate: info.event.start,\r\n barrackId: vm.barracksProjects.barracksId\r\n };\r\n \r\n openBookingModal(data);\r\n }\r\n \r\n },\r\n events: events\r\n });\r\n \r\n calendar.render();\r\n }\r\n \r\n\r\n var vm = this;\r\n vm.barracksProjects = barracks.data.barracksProjects;\r\n vm.serie = barracks.data.stat;\r\n\r\n vm.serie.data.forEach(x => {\r\n return x.start = moment(x.start).format(\"YYYY-MM-DD\");\r\n });\r\n\r\n loadCalendar(\"BarrackCalendar\", vm.serie.data);\r\n\r\n vm.prosentageDays = {\r\n 0: {\r\n name: \"0\",\r\n number: 0\r\n },\r\n 20: {\r\n name: \"1-20\",\r\n number: 0\r\n },\r\n 40: {\r\n name: \"21-40\",\r\n number: 0\r\n },\r\n 60: {\r\n name: \"41-60\",\r\n number: 0\r\n },\r\n 80: {\r\n name: \"61-80\",\r\n number: 0\r\n },\r\n 99: {\r\n name: \"81-99\",\r\n number: 0\r\n },\r\n 100: {\r\n name: \"100\",\r\n number: 0\r\n }\r\n };\r\n \r\n vm.serie.data.forEach(x => {\r\n var y = x.y;\r\n switch (true) {\r\n case y === 0:\r\n vm.prosentageDays[0].number = vm.prosentageDays[0].number + 1;\r\n break;\r\n case y <= 20:\r\n vm.prosentageDays[20].number = vm.prosentageDays[20].number + 1;\r\n break;\r\n case y <= 40:\r\n vm.prosentageDays[40].number = vm.prosentageDays[40].number + 1;\r\n break;\r\n case y <= 60:\r\n vm.prosentageDays[60].number = vm.prosentageDays[60].number + 1;\r\n break;\r\n case y <= 80:\r\n vm.prosentageDays[80].number = vm.prosentageDays[80].number + 1;\r\n break;\r\n case y <= 99:\r\n vm.prosentageDays[99].number = vm.prosentageDays[99].number + 1;\r\n break;\r\n case y == 100:\r\n vm.prosentageDays[100].number = vm.prosentageDays[100].number + 1;\r\n break;\r\n }\r\n });\r\n\r\n\r\n vm.bookings = {\r\n title: {\r\n text: `${vm.barracksProjects.barracksName} fra \r\n ${moment(vm.barracksProjects.createdDate).format(\"DD.MM.YYYY\")} \r\n ${vm.barracksProjects.movedDate != null ? ` til ${moment(vm.barracksProjects.movedDate).format(\"DD.MM.YYYY\")}` :\"\"}`,\r\n align: \"left\"\r\n },\r\n \r\n yAxis: {\r\n title: {\r\n text: \"Belegg\"\r\n },\r\n labels: {\r\n format: \"{value}%\"\r\n }\r\n },\r\n \r\n xAxis: {\r\n type: \"datetime\"\r\n },\r\n tooltip: {\r\n valueSuffix: \"%\"\r\n },\r\n time: {\r\n useUTC: false\r\n },\r\n \r\n plotOptions: {\r\n series: {\r\n pointStart: Date.UTC(\r\n moment(vm.barracksProjects.createdDate).year(),\r\n moment(vm.barracksProjects.createdDate).month(),\r\n moment(vm.barracksProjects.createdDate).date()),\r\n pointInterval: 24 * 3600 * 1000\r\n }\r\n },\r\n series: [ vm.serie ]\r\n };\r\n \r\n }\r\n];\r\n","export default \"\\r\\n\\r\\n\\r\\n
\\r\\n

Bookinger

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n {{booking.roomName}}\\r\\n
\\r\\n \\r\\n\\r\\n

Av: {{booking.contactPersonName}}

\\r\\n

Prosjekt: {{booking.projectName}}

\\r\\n

Fra: {{booking.fromDate | date: \\\"dd.MM.yyyy\\\"}}

\\r\\n

Til: {{booking.toDate | date: \\\"dd.MM.yyyy\\\"}}

\\r\\n
\\r\\n\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n \\r\\n
\";","import projects from \"album/projects/state\";\nimport project from \"album/project/state\";\nimport index from \"album/project/index/state\";\nimport newproject from \"album/project/new/state\";\nimport customers from \"album/project/customers/state\";\nimport customeradd from \"album/project/customers/add/state\";\nimport houses from \"album/project/houses/state\";\nimport sections from \"album/project/sections/state\";\nimport tasks from \"album/project/tasks/state\";\nimport options from \"album/project/options/state\";\nimport option from \"album/project/options/option/state\";\nimport minutes from \"album/project/minutes/state\";\nimport minute from \"album/project/minutes/minute/state\";\nimport contacts from \"album/project/contacts/state\";\nimport projcontact from \"album/project/contacts/projcontact/state\";\nimport aberrations from \"album/project/aberrations/state\";\nimport organization from \"album/project/organization/state\";\nimport info from \"album/project/info/state\";\nimport documents from \"album/project/documents/state\";\nimport registrations from \"album/project/registrations/state\";\nimport checklists from \"album/project/checklists/state\";\nimport openregistrations from \"album/project/openregistrations/state\";\nimport blueprints from \"album/project/blueprints/state\";\nimport schedule from \"album/project/schedule/state\";\nimport activities from \"album/project/schedule/activities/state\";\nimport crewregistrations from \"album/project/crewregistration/state\";\nimport psi from \"album/project/psi/state\";\nimport crewaccess from \"album/project/crewaccess/state\";\nimport barracks from \"album/project/barracks/state\";\nimport barracksInfo from \"album/project/barracks/info/stateInfoBarracks\";\n\nexport default [\n projects,\n project,\n index,\n newproject,\n customers,\n customeradd,\n houses,\n sections,\n tasks,\n options,\n option,\n minutes,\n minute,\n contacts,\n projcontact,\n aberrations,\n organization,\n info,\n documents,\n registrations,\n checklists,\n openregistrations,\n blueprints,\n schedule,\n activities,\n crewregistrations,\n psi,\n crewaccess,\n barracks,\n barracksInfo\n];\n","import ctrl from \"./infoBarrack\";\r\nimport html from \"./infoBarrack.html\";\r\nexport default [\r\n \"$stateProvider\",\r\n function ($stateProvider) {\r\n $stateProvider.state(\"main.projects.project.barracksInfo\", {\r\n url: \"/barracks/info/{barrackId}\",\r\n data: {\r\n requiresLogin: true\r\n },\r\n aData: {\r\n name: \"Brakkerigg Info\"\r\n },\r\n resolve: {\r\n barracks: [\r\n \"$stateParams\",\r\n \"barracksApi\",\r\n function ($stateParams, barracksApi) {\r\n return barracksApi.getBarrackProject($stateParams.barrackId);\r\n }\r\n ]\r\n },\r\n\r\n views: {\r\n projcontent: {\r\n template: html,\r\n controller: ctrl,\r\n controllerAs: \"vm\"\r\n }\r\n }\r\n });\r\n }\r\n];\r\n","export default \"\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
%Antall dager med dekning
{{value.name}}{{value.number}} dager
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\";","export default [\n \"house\",\n function (house) {\n var vm = this;\n vm.house = house.data;\n }\n];","import saveFile from \"shared/saveFile\";\nexport default [\n \"house\",\n \"$log\",\n \"toastr\",\n \"houseApi\",\n \"translateFilter\",\n \"project\",\n \"$state\",\n \"$confirm\",\n \"commonApi\",\n function (\n house,\n $log,\n toastr,\n houseApi,\n translate,\n project,\n $state,\n $confirm,\n commonApi\n ) {\n var vm = this;\n vm.house = house.data.house;\n vm.models = house.data.models;\n vm.productionGroups = house.data.productionGroups;\n vm.purchaseAndSalesActs = house.data.purchaseAndSalesActs;\n vm.houseOrderedOptions = [\n { ordered: false, text: \"Bygg ikke bestilt\" },\n { ordered: true, text: \"Bygg bestilt\" }\n ];\n vm.isHouseOrdered = vm.house.houseOrdered;\n vm.bcProjects = [];\n\n commonApi.getBCProjects().then(res => {\n vm.bcProjects = res.data;\n });\n\n vm.rptPhaseOptionsAndChanges = function () {\n houseApi.getPhaseOptionsAndChanges(vm.house).then(res => {\n saveFile(\n res,\n `Tilvalg og forandringer ${translate(\"House\")} ${vm.house.houseNum\n } ${project.data.project.name}.xlsx`\n );\n });\n };\n vm.rptPhaseColorOptions = function () {\n houseApi.getPhaseColorOptions(vm.house).then(res => {\n saveFile(\n res,\n `Fargevalg ${translate(\"House\")} ${vm.house.houseNum\n } ${project.data.project.name}.pdf`\n );\n });\n };\n vm.rptPhaseInvoice = function () {\n houseApi.getPhaseInvoice(vm.house).then(res => {\n saveFile(\n res,\n `Fakturagrunnlag ${translate(\"House\")} ${vm.house.houseNum\n } ${project.data.project.name}.xlsx`\n );\n });\n };\n vm.deleteHouse = function () {\n $confirm({\n text: \"Er du sikker på at du vil slette dette bygget ?\"\n }).then(function () {\n houseApi.deleteHouse(vm.house).then(function () {\n $state.go(\"main.projects.project.index\", {\n id: vm.house.projTable\n });\n });\n });\n };\n vm.saveHouse = function () {\n\n if (!vm.isHouseOrdered && vm.house.houseOrdered) {\n $confirm({\n title: \"Lagre\",\n text: \"Produksjonsleder vil bli informert på e-post om bestilling av bygg etter lagring.\\r\\n\\r\\nLagre med status 'Bygg bestilt'?\"\n }).then(function () {\n houseApi.updateHouse(vm.house).then(function () {\n $state.reload();\n });\n });\n }\n else {\n houseApi.updateHouse(vm.house).then(function () {\n $state.reload();\n });\n }\n };\n vm.addReservation = function () {\n let reservation = { id: 0, type: 0, isActive: true };\n var array = [reservation].concat(vm.house.reservations);\n vm.house.reservations = array;\n };\n vm.removeReservation = function (index) {\n vm.house.reservations.splice(index, 1);\n };\n\n vm.completeChecklist = function () {\n if (!vm.house.visibleOnWeb) {\n $confirm({\n text:\n \"Har du fulgt aktivitetene i følgeprosess Salgstart nytt bygg?\"\n }).then(() => {\n }).catch(() => {\n vm.house.visibleOnWeb = false;\n });\n }\n };\n vm.isHouseCooperativeChange = function () {\n if (vm.house.isHousingCooperative) {\n vm.house.housingCooperativeSharePrSection = 50;\n } else {\n vm.house.housingCooperativeSharePrSection = null;\n vm.house.housingCoopName = null;\n vm.house.housingCoopAddress = null;\n vm.house.housingCoopPostCodeId = null;\n vm.house.housingCoopOrgNum = null;\n }\n };\n }\n];\n","import { filter, forEach } from \"lodash\";\nexport default [\n \"$uibModalInstance\",\n \"$log\",\n \"sectionApi\",\n \"house\",\n \"sectionTypes\",\n \"sections\",\n function(\n $uibModalInstance,\n $log,\n sectionApi,\n house,\n sectionTypes,\n sections\n ) {\n var modalvm = this;\n\n modalvm.sectionTypes = filter(sectionTypes.data, {\n projModelId: house.house.projModelId\n });\n modalvm.firstSectionNum = sections.data.length + 1;\n\n modalvm.sectionCountChange = function() {\n modalvm.sections = [];\n var first = modalvm.firstSectionNum;\n var upper =\n Number(modalvm.firstSectionNum) +\n Number(modalvm.numberOfSections);\n var prFloor =\n Number(modalvm.numberOfSections) /\n Number(modalvm.numberOfFloors);\n var floor = 1;\n\n for (var i = first; i < upper; i++) {\n modalvm.sections.push({\n sectionNum: i\n });\n }\n\n forEach(modalvm.sections, function(s, i) {\n s.floor = floor;\n\n if ((i + 1) % prFloor === 0) floor++;\n });\n };\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n modalvm.ok = function() {\n $uibModalInstance.close({\n sections: modalvm.sections,\n houseId: house.house.id\n });\n };\n }\n];\n","import {\n forEach\n} from \"lodash\";\nexport default [\n \"$scope\",\n \"documentApi\",\n \"toastr\",\n function ($scope, documentApi, toastr) {\n $scope.$watch(\"myFile\", function (newFile, oldFile) {\n if (oldFile !== newFile) {\n var file = newFile[0];\n\n var mergeRequest = {\n oids: $scope.$context.data.oids,\n templateId: $scope.selectedTemplate\n };\n\n documentApi.createMergedDocument(file, mergeRequest).then(function (res) {\n $scope.$context.data.mergeRequest = res.data;\n\n var nonMatches = 0;\n forEach($scope.$context.data.mergeRequest.users, function (u) {\n nonMatches += u.notMatched.length;\n });\n\n $scope.$context.navigation.nextStepId = nonMatches === 0 ? \"step-3-mailmerge\" : null;\n });\n }\n });\n\n $scope.$context.behavior.leaving = function (options, callback) {\n if (!options.forward) {\n return callback(true);\n } else {\n if ($scope.myFile) {\n return callback(true);\n } else {\n toastr.error(\"Du må velge en mal!\", \"Feil\");\n return callback(false);\n }\n }\n };\n }\n];","export default [\n \"$scope\",\n \"documentApi\",\n function ($scope, documentApi) {\n $scope.$context.behavior.leaving = function (callback) {\n documentApi.updateMergedDocument($scope.$context.data.mergeRequest).then(function (res) {\n $scope.$context.data.mergeRequest = res.data;\n return callback(true);\n });\n };\n }\n];","export default [\"$scope\", function ($scope) {\n\n\n $scope.current = 1;\n\n}];","import saveFile from \"shared/saveFile\";\nimport addsectionsctrl from \"./addsections\";\nimport addsectionshtml from \"./addsections.html\";\n\nimport step1ctrl from \"./mailmerge/step1ctrl\";\nimport step1html from \"./mailmerge/step1.html\";\n\nimport step2ctrl from \"./mailmerge/step2ctrl\";\nimport step2html from \"./mailmerge/step2.html\";\n\nimport step3ctrl from \"./mailmerge/step3ctrl\";\nimport step3html from \"./mailmerge/step3.html\";\n\nimport { map, find, filter } from \"lodash\";\nexport default [\n \"sections\",\n \"$log\",\n \"$wizard\",\n \"house\",\n \"$uibModal\",\n \"sectionApi\",\n \"$state\",\n \"documentApi\",\n function(\n sections,\n $log,\n $wizard,\n house,\n $uibModal,\n sectionApi,\n $state,\n documentApi\n ) {\n function openAddSectionsModal() {\n var modalInstance = $uibModal.open({\n size: \"lg\",\n backdrop: \"static\",\n template: addsectionshtml,\n controllerAs: \"modalvm\",\n controller: addsectionsctrl,\n\n resolve: {\n sectionTypes: [\n \"systemApi\",\n function(systemApi) {\n return systemApi.getSectionTypes();\n }\n ],\n house: [\n function() {\n return house.data;\n }\n ],\n sections: [\n \"projectApi\",\n function(projectApi) {\n return projectApi.getSections(\n house.data.house.projTable\n );\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var vm = this;\n vm.modulesOnHouse = sections.data.modulesOnHouse;\n\n vm.showModuleWarning = find(vm.modulesOnHouse, function(ppm) {\n return ppm.qty > 0;\n });\n\n vm.sections = sections.data.sections;\n vm.addSections = function() {\n openAddSectionsModal().result.then(function(req) {\n if (req) {\n sectionApi.createSections(req).then(function() {\n $state.reload();\n });\n }\n });\n };\n\n var wizardMailMerge = $wizard\n .$new({\n title: \"Opprett flettebrev\",\n size: \"lg\",\n shadow: true,\n successing: function($data, $step, $isLastStep, callback) {\n return callback(true);\n }\n })\n .addStep({\n id: \"step-1-mailmerge\",\n title: \"Velg eller last opp mal\",\n controller: step1ctrl,\n template: step1html\n })\n .addStep({\n id: \"step-2-mailmerge\",\n title: \"Fullfør fletting\",\n controller: step2ctrl,\n template: step2html\n })\n .addStep({\n id: \"step-3-mailmerge\",\n title: \"Forhåndsvis brev\",\n controller: step3ctrl,\n template: step3html\n });\n\n vm.selectedUsers = function() {\n return map(\n filter(vm.sections, function(c) {\n return c.selected;\n }),\n \"id\"\n );\n };\n\n vm.createMergedDocument = function() {\n var users = vm.selectedUsers();\n\n wizardMailMerge.open(\n {\n ids: users\n },\n function(result) {\n documentApi\n .finalizeMailMerge(result.mergeRequest)\n .then(res => {\n saveFile(\n res,\n `Flettebrev\" ${result.mergeRequest.id}.pdf`,\n \"application/pdf\"\n );\n });\n },\n window.angular.noop\n );\n };\n }\n];\n","export default \"
\\n

Legg til seksjoner

\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n
NummerEtasjeTypePrisBRA
\\n \\n
\\n
\\n
\\n \\n \\n
\";","export default \"\\n\\n\\n\\n\\n\\n\\n\\neller velg fra en liste av templater...\";","export default \"
\\n\\n
{{u.displayName}}
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n
\";","export default \"\\n\\n
\\n \\n
\\n \\n
\\n \\n
\\n\\n\\n
\\n\\n {{$context.data.mergeRequest.users[current-1].displayName}}\\n\\n \\n\\n \\n\\n
\";","import { forEach, cloneDeep } from \"lodash\";\nimport saveFile from \"shared/saveFile\";\nexport default [\n \"houseOptions\",\n \"house\",\n \"project\",\n \"houseApi\",\n \"translateFilter\",\n function (houseOptions, house, project, houseApi, translate) {\n var vm = this;\n vm.houseOptions = houseOptions.data;\n vm.optionsSum = 0;\n vm.bonusSum = 0;\n vm.showOptions = { confirmed: true, notConfirmed: true };\n\n //remove options white only standard\n vm.houseOptions = vm.houseOptions.filter((section) => {\n //filter standerd options\n section.options = section.options.filter(\n (x) => x.typeName !== \"Standard\"\n );\n return section.options.length > 0;\n });\n\n //Check localStorage for show options value\n const showOptions = JSON.parse(localStorage.getItem(\"showOptions\"));\n if (showOptions) {\n vm.showOptions = showOptions;\n }\n\n //when click on confirmed or notConfirmed btn.\n vm.changeOptionsView = function (confirmed, notConfirmed) {\n //save change off showing to localStorage\n localStorage.setItem(\n \"showOptions\",\n JSON.stringify({\n confirmed: confirmed,\n notConfirmed: notConfirmed\n })\n );\n //save not filtered options\n if (!vm.saveHouseOptions) {\n vm.saveHouseOptions = cloneDeep(vm.houseOptions);\n } else {\n //get not filtered options before filtering\n vm.houseOptions = cloneDeep(vm.saveHouseOptions);\n }\n if ((confirmed && !notConfirmed) || (!confirmed && notConfirmed)) {\n //Filter away section whit no confirmed/notConfirmed\n vm.houseOptions = vm.houseOptions.filter((section) => {\n //If confirmed btn i checked then only show confirmed. If only notConfirmed is checked then only shoe not confirmed\n section.options = section.options.filter((x) => {\n return x.isConfirmed === confirmed;\n });\n return section.options.length > 0;\n });\n } else if (!confirmed && !notConfirmed) {\n //if confrimed/NotConfirmed is not checked\n vm.houseOptions.length = 0;\n }\n };\n //First time loading page\n vm.changeOptionsView(\n vm.showOptions.confirmed,\n vm.showOptions.notConfirmed\n );\n\n forEach(vm.houseOptions, function (gr) {\n forEach(gr.options, function (opt) {\n vm.optionsSum += opt.price > 0 ? opt.price : 0;\n vm.bonusSum += opt.bonusHours || 0;\n });\n });\n\n\n vm.toggleCollapse = function () {\n forEach(vm.houseOptions, function (ho) {\n ho.hidden = !vm.allCollapsed;\n });\n vm.allCollapsed = !vm.allCollapsed;\n };\n\n vm.exportOptions = function () {\n houseApi.exportOptions(vm.houseOptions).then((res) => {\n saveFile(\n res,\n `Tilvalg ${translate(\"House\")} ${house.data.house.houseNum\n } ${project.data.project.name}.xlsx`\n );\n });\n };\n }\n];\n","export default [\n \"$log\",\n \"aberrations\",\n \"$state\",\n \"house\",\n \"aberrationApi\",\n\n function($log, aberrations, $state, house, aberrationApi) {\n var vm = this;\n vm.house = house.data.house;\n vm.aberrations = aberrations.data;\n\n vm.openChecklist = a => {\n $state.go(\"main.checklists.checklist.index\", {\n checklistId: a.checklistId,\n contextId: vm.house.id\n });\n };\n\n vm.addAberration = function() {\n var preSelect = {\n projectId: vm.house.projectId,\n houseId: vm.house.id\n };\n\n aberrationApi\n .aberrationModalFull(preSelect)\n .result.then(function(newAberration) {\n if (newAberration) {\n aberrationApi\n .insertUpdateAberration(newAberration, true)\n .then(function() {\n $state.reload();\n });\n }\n });\n };\n }\n];\n","import saveFile from \"shared/saveFile\";\nexport default [\n \"house\",\n \"$state\",\n \"houseChanges\",\n \"houseApi\",\n \"project\",\n function(house, $state, houseChanges, houseApi, project) {\n var vm = this;\n vm.house = house.data.house;\n vm.changes = houseChanges.data;\n\n vm.exportChanges = function() {\n houseApi.exportChanges(vm.changes).then(res => {\n saveFile(\n res,\n `Forandringer bygg ${house.data.house.houseNum} ${project.data.project.name}.xlsx`\n );\n });\n };\n }\n];\n","export default [\"$log\", \"$state\", \"house\", \"checklists\", \"$stateParams\", \"checklistApi\", \"$confirm\",\n function ($log, $state, house, checklists, $stateParams, checklistApi, $confirm) {\n var vm = this;\n\n\n vm.checklists = checklists.data.checklists;\n vm.house = house.data.house;\n vm.availableChecklists = checklists.data.availableChecklists;\n\n vm.deleteCheckList = function (checklist) {\n\n $confirm({\n text: \"Sikker på at du vil slette sjekklisten?\"\n })\n .then(function () {\n\n checklistApi.deleteCheckList(checklist).then(function () {\n $state.reload();\n });\n });\n\n\n };\n\n\n }\n];","export default [\"documents\", \"$log\", \"house\", function (documents, $log, house) {\n var vm = this;\n\n vm.house = house.data.house;\n vm.documents = documents.data;\n\n}];","import {\n\n find\n\n} from \"lodash\";\nexport default [\"$uibModalInstance\", \"$log\", \"projModule\", \"modules\",\n function ($uibModalInstance, $log, projModule, modules) {\n\n\n var modalvm = this;\n\n modalvm.floors = [\"2\", \"3\", \"4\"];\n modalvm.showRight = true;\n modalvm.showLeft = true;\n modalvm.projModule = projModule;\n modalvm.modules = modules.data.modules;\n\n\n /* modalvm.moduleFilter = function (m) {\n\n var left = modalvm.showLeft && m.left;\n var right = modalvm.showRight && m.right;\n\n if(!left && !right){\n return false;\n }\n if(projModule.projTypeId===2){\n \n var floorFilter = _.includes(modalvm.floors, m.floor.toString());\n if(!floorFilter) return false;\n }\n \n return true;\n }; */\n\n modalvm.moduleChange = function () {\n\n modalvm.projModule.module = find(modalvm.modules, {\n id: modalvm.projModule.projModule\n });\n };\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.projModule);\n\n };\n\n\n }\n];","import upsertmodulectrl from \"./upsertmodule\";\nimport upsertmodulehtml from \"./upsertmodule.html\";\nimport { forEach, countBy, find } from \"lodash\";\nexport default [\n \"$log\",\n \"$state\",\n \"projModules\",\n \"$stateParams\",\n \"moduleApi\",\n \"$uibModal\",\n \"house\",\n \"$confirm\",\n \"project\",\n function(\n $log,\n $state,\n projModules,\n $stateParams,\n moduleApi,\n $uibModal,\n house,\n $confirm,\n project\n ) {\n var projTypeId = project.data.project.projTypeId;\n\n function openUpsertModal(projModule) {\n var modalInstance = $uibModal.open({\n template: upsertmodulehtml,\n controllerAs: \"modalvm\",\n resolve: {\n projModule: [\n function() {\n return projModule;\n }\n ],\n modules: [\n function() {\n return moduleApi.getModules(false, projTypeId);\n }\n ]\n },\n controller: upsertmodulectrl\n });\n\n return modalInstance;\n }\n\n function saveAndReload(pm) {\n moduleApi.upsertProjPhaseModule(pm).then(function() {\n $state.reload();\n });\n }\n var vm = this;\n\n vm.house = house.data;\n vm.modules = projModules.data.modules;\n vm.floors = projModules.data.floors;\n vm.maxSections = 0;\n\n forEach(vm.floors, function(f) {\n vm.maxSections =\n f.sections.length > vm.maxSections\n ? f.sections.length\n : vm.maxSections;\n });\n\n vm.moduleSelect = [];\n forEach(vm.modules, function(m) {\n for (var i = 0; i < m.qty * m.module.floor; i++) {\n vm.moduleSelect.push({\n id: m.projModule,\n name: m.module.moduleId\n });\n }\n });\n\n vm.modulesAlignedWithSections = function() {\n var sectionModules = [];\n forEach(vm.floors, function(f) {\n forEach(f.sections, function(s) {\n if (s.projModule) {\n sectionModules.push(s.projModule);\n }\n });\n });\n\n var sectionModulesCount = countBy(sectionModules);\n\n forEach(vm.modules, function(m) {\n var floor = (m.module && m.module.floor) || 1;\n m.sectionsAligned =\n sectionModulesCount[m.projModule] - m.qty * floor;\n });\n\n var moduleCheck = find(vm.modules, function(m) {\n return (\n m.sectionsAligned === undefined || m.sectionsAligned !== 0\n );\n });\n\n return moduleCheck === undefined;\n };\n\n vm.saveModulesOnSections = function() {\n var sectionsToUpdate = [];\n forEach(vm.floors, function(f) {\n forEach(f.sections, function(s) {\n sectionsToUpdate.push(s);\n });\n });\n\n moduleApi.saveModulesOnSections(sectionsToUpdate).then(function() {\n $state.reload();\n });\n };\n\n vm.upsertModule = function(projModule, del) {\n if (projModule && del) {\n $confirm({\n text: \"Vil du slette modulen fra dette bygget?\"\n }).then(function() {\n projModule.status = -1;\n saveAndReload(projModule);\n });\n } else {\n if (projModule) {\n projModule.status = 1;\n projModule.projPhase = house.data.house.id;\n projModule.projTypeId = house.data.house.projectTypeId;\n } else {\n projModule = {\n status: 2,\n projPhase: house.data.house.id,\n projTypeId: house.data.house.projectTypeId\n };\n }\n\n openUpsertModal(projModule).result.then(function(res) {\n if (res && res.module) {\n saveAndReload(res);\n }\n });\n }\n };\n }\n];\n","export default \"
\\n\\t

{{modalvm.projModule.status===1 ? 'Rediger modul' : 'Legg til ny modul'}}

\\n
\\n
\\n\\n\\t
\\n\\t\\t\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t
\\n\\t
\\n\\t\\t\\n\\t\\t\\n\\t
\\n\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\n\\n\\t
\\n\\t
\\n\\t\\t\\n\\t\\t\\n\\t
\\n\\n\\n\\n\\n\\n\\n
\\n
\\n\\t\\n\\t\\n
\";","export default [\"$uibModalInstance\", \"$log\", \"summary\",\n function ($uibModalInstance, $log, summary) {\n\n\n var modalvm = this;\n modalvm.summary = summary.data;\n\n\n modalvm.close = function () {\n $uibModalInstance.close();\n };\n\n\n }\n];","export default [\n \"$uibModalInstance\",\n \"$stateParams\",\n \"$log\",\n \"projectApi\",\n \"scheduleApi\",\n \"houseApi\",\n \"wrikeCanCreateSync\",\n function($uibModalInstance, $stateParams, $log, projectApi, \n scheduleApi, houseApi, wrikeCanCreateSync) {\n\n var modalvm = this;\n modalvm.canImport = false;\n modalvm.projects = [];\n modalvm.projectsNew = [];\n modalvm.projectSchedules = [];\n modalvm.scheduleTemplates = [];\n modalvm.milestones = [];\n modalvm.parentFolderId = null;\n modalvm.wrikeFolderId = null;\n modalvm.processKey = null;\n modalvm.adjustedDate = null;\n\n modalvm.opts = wrikeCanCreateSync ? \n [{id: 0, title: \"Wrike\"}, {id: 1, title: \"Prosjekt\"}] : \n [{id: 1, title: \"Prosjekt\"}];\n modalvm.selectedOpt = null;\n\n modalvm.getProjectSchedules = function() {\n scheduleApi.getWrikeImportProjectSchedules($stateParams.id).then(res => {\n modalvm.projectSchedules = res.data;\n });\n };\n\n modalvm.getHouseScheduleTemplates = function() {\n if (modalvm.projectId) {\n scheduleApi.getWrikeHouseScheduleTemplates(modalvm.projectId).then(res => {\n modalvm.scheduleTemplates = res.data;\n if (modalvm.scheduleTemplates.length == 1) { \n modalvm.wrikeFolderId = modalvm.scheduleTemplates[0].id;\n modalvm.getMilestones();\n } else {\n modalvm.wrikeFolderId = null;\n }\n modalvm.checkCanImport();\n });\n }\n };\n\n modalvm.checkCanImport = function() {\n modalvm.canImport = \n modalvm.selectedOpt == 0 ? modalvm.projectId && modalvm.wrikeFolderId :\n modalvm.selectedOpt == 1 ? modalvm.projectId && modalvm.copyPhase : false;\n };\n\n modalvm.getProjectList = function() {\n projectApi.getProjectList().then(res => {\n modalvm.projects = res.data;\n });\n };\n\n modalvm.getProjectListNew = function() {\n scheduleApi.getWrikeImportProjects($stateParams.ppId).then(res => {\n modalvm.projectsNew = res.data;\n if (modalvm.projectsNew.length == 1) { \n modalvm.projectId = modalvm.projectsNew[0].id;\n modalvm.getProjectSchedules(modalvm.projectId);\n }\n modalvm.checkCanImport();\n });\n };\n\n if (modalvm.opts.length == 1 && modalvm.opts[0].id == 1) { \n modalvm.selectedOpt = 1;\n modalvm.getProjectList();\n } else { \n modalvm.selectedOpt = 0;\n modalvm.getProjectListNew();\n }\n\n modalvm.selectedOptChanged = function() {\n if (modalvm.selectedOpt == 0) { \n modalvm.getProjectListNew();\n } else if (modalvm.selectedOpt == 1) { \n modalvm.getProjectList();\n if (modalvm.projectId) { \n modalvm.getHouses();\n }\n }\n modalvm.checkCanImport();\n };\n\n modalvm.getHouses = function() {\n houseApi.getHouses(modalvm.projectId).then(function(res) {\n modalvm.phases = res.data;\n });\n };\n\n modalvm.getMilestones = function() { \n modalvm.processKey = null;\n modalvm.adjustedDate = null;\n modalvm.checkCanImport();\n scheduleApi.getWrikeScheduleMilestones(\n { \n wrikeProjectId: modalvm.wrikeFolderId,\n projPhaseId: $stateParams.ppId\n }).then(res => {\n modalvm.milestones = res.data;\n });\n };\n\n modalvm.cancel = function() {\n $uibModalInstance.close();\n };\n\n modalvm.ok = function() {\n var projType = modalvm.projectSchedules\n .filter(i => i.wrikeFolderId == modalvm.parentFolderId);\n $uibModalInstance.close({\n type: modalvm.selectedOpt == 0 ? \"wrike\" : \"phase\",\n fromHouse: modalvm.copyPhase,\n projectId: modalvm.projectId,\n parentFolderId: modalvm.parentFolderId,\n wrikeProjectId: modalvm.wrikeFolderId,\n processKey: modalvm.processKey ? modalvm.processKey.key : null,\n adjustedDate: modalvm.adjustedDate,\n projType: projType.length > 0 ? projType[0].projType : null \n });\n };\n }\n];\n","import { map, filter } from \"lodash\";\nexport default [\n \"$uibModalInstance\",\n \"contactApi\",\n \"processIdsInProjSchedule\",\n \"addProcessData\",\n \"$log\",\n \"$state\",\n \"$stateParams\",\n \"searchApi\",\n \"scheduleApi\",\n function (\n $uibModalInstance,\n contactApi,\n processIdsInProjSchedule,\n addProcessData,\n $log,\n $state,\n $stateParams,\n searchApi,\n scheduleApi\n ) {\n var modalvm = this;\n\n modalvm.getContactPersons = function (item) {\n contactApi.getContactPersonsList(item.id).then(res => {\n modalvm.contactPersons = res.data.contactPersons;\n });\n };\n modalvm.checkEndDate = function (startDate) {\n if (!modalvm.schedule.endDate) {\n modalvm.schedule.endDate = startDate;\n }\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n //TODO: Check if process is already in schedule\n //processIdsInProjSchedule\n\n scheduleApi.insertSchedule(modalvm.schedule).then(function () {\n $uibModalInstance.close();\n $state.go(\n \"main.projects.project.house.schedules\",\n {\n ppId: $stateParams.ppId\n },\n {\n reload: true\n }\n );\n });\n };\n\n modalvm.schedule = {\n projPhase: $stateParams.ppId\n };\n modalvm.searchContacts = function (s) {\n searchApi\n .dropDownSearch({\n type: \"contact\",\n search: s\n })\n .then(function (res) {\n modalvm.contacts = res.data;\n });\n };\n modalvm.searchProcesses = function (s) {\n searchApi\n .dropDownSearch({\n type: \"process\",\n search: s\n })\n .then(function (res) {\n modalvm.processes = filter(res.data, function (p) {\n return (\n (p.projModelId === modalvm.modelId ||\n !modalvm.modelId) &&\n (p.inActive === !modalvm.inActive ||\n !modalvm.inActive) &&\n (p.projTypeId === modalvm.projTypeId ||\n !modalvm.projTypeId)\n );\n });\n });\n };\n\n modalvm.inActive = true;\n modalvm.projTypeId = addProcessData.data.projTypeId;\n modalvm.modelId = addProcessData.data.modelId;\n modalvm.projTypes = addProcessData.data.projTypes;\n modalvm.models = map(addProcessData.data.models, function (m) {\n return {\n id: m.id,\n name: m.modelName,\n projTypeId: m.projTypeId\n };\n });\n }\n];\n","import angular from \"angular\";\n\nimport saveFile from \"shared/saveFile\";\nimport summaryctrl from \"./summary\";\nimport summaryhtml from \"./summary.html\";\nimport importSchedulesctrl from \"./importSchedules\";\nimport importScheduleshtml from \"./importSchedules.html\";\nimport addSchedulectrl from \"./addSchedule\";\nimport addSchedulehtml from \"./addSchedule.html\";\n\nimport { forEach, map, find, findIndex } from \"lodash\";\n\nexport default [\n \"$uibModal\",\n \"house\",\n \"projSchedule\",\n \"$log\",\n\n \"$state\",\n \"$stateParams\",\n \"taskApi\",\n \"documentApi\",\n \"haveRoleFilter\",\n \"project\",\n \"moment\",\n \"toastr\",\n \"scheduleApi\",\n \"processApi\",\n \"houseApi\",\n \"$confirm\",\n \"lastUpdate\",\n function (\n $uibModal,\n house,\n projSchedule,\n $log,\n $state,\n $stateParams,\n taskApi,\n documentApi,\n haveRole,\n project,\n moment,\n toastr,\n scheduleApi,\n processApi,\n houseApi,\n $confirm,\n lastUpdate\n ) {\n function summaryModal(sch) {\n var modalInstance = $uibModal.open({\n size: \"lg\",\n template: summaryhtml,\n controllerAs: \"modalvm\",\n controller: summaryctrl,\n resolve: {\n summary: [\n \"scheduleApi\",\n function (scheduleApi) {\n return scheduleApi.getSummary(sch.id);\n }\n ]\n }\n });\n\n return modalInstance.result;\n }\n\n function importSchedulesModal() {\n var modalInstance = $uibModal.open({\n template: importScheduleshtml,\n controllerAs: \"modalvm\",\n controller: importSchedulesctrl,\n resolve: {\n \"wrikeCanCreateSync\": [\n function() {\n return vm.wrikeCanCreateSync;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var vm = this;\n vm.house = house.data.house;\n vm.lastUpdate = lastUpdate.data.updatedDateTime\n ? \"Tidplan sist oppdatert \" +\n moment(lastUpdate.data.updatedDateTime).format(\n \"DD.MM.YYYY HH:mm\"\n ) +\n \" av \" +\n lastUpdate.data.updatedBy\n : null;\n\n vm.allowUpdateAllProcessesToNewVersion = haveRole(\"ProcessAdmin\");\n\n vm.updateAllProcessesToNewVersion = function () {\n\n var promptUpdateModel = vm.house.projModelId && \n projSchedule.data.schedules && \n projSchedule.data.schedules\n .filter(i => i.modelId && i.modelId != vm.house.projModelId).length > 0;\n\n if (promptUpdateModel) { \n\n var phaseModelName = house.data.modelsArray ? house.data.modelsArray.filter(i => i.id == vm.house.projModelId)[0].name : \"\";\n\n $confirm({\n title: \"Oppdater versjon\",\n text: `Modell i noen av prosessene samsvarer ikke med byggets modell (${phaseModelName}}). Endre prosesser til siste versjon som samsvarer med byggets modell?`,\n hideCancel: true,\n hideOk: true,\n showCustomButton: true,\n customButtonText: \"Ja\",\n customButtonObj: true,\n showCustomButton2: true,\n customButtonText2: \"Nei\",\n customButtonObj2: false\n }).then(function (res) {\n vm.prepareUpdateProcessesToLastVersion(res);\n });\n }\n else\n vm.prepareUpdateProcessesToLastVersion(false);\n \n };\n\n vm.prepareUpdateProcessesToLastVersion = function(updateModel) {\n processApi\n .prepareUpdateProcessesToLastVersion({\n phaseId: $stateParams.ppId,\n idArray: vm.idArray,\n updateToPhaseProjModel: updateModel\n })\n .then((response) => {\n processApi\n .updateProcessesModal(response.data)\n .then((updates) => {\n if (updates) {\n processApi\n .updateProcessesToLastVersion(updates)\n .then(function (res) {\n toastr.success(\n `${res.data.updatedCount} tidplaner oppdatert`\n );\n\n $state.reload();\n });\n }\n });\n });\n };\n\n vm.openScheduleSummary = function (sch) {\n summaryModal(sch).then(function () {\n //Do nothing\n });\n };\n\n vm.getDuration = function (sch) {\n var ms = moment(sch.endDate)\n .startOf(\"day\")\n .diff(moment(sch.startDate).startOf(\"day\"));\n return moment.duration(ms).asDays();\n };\n vm.setSchedule = function (schedule) {\n var scheduleCopy = angular.copy(schedule);\n\n scheduleApi\n .setScheduleModal(schedule)\n .result.then(function (scheduleMove) {\n if (scheduleMove) {\n scheduleApi\n .moveSchedule({\n days: scheduleMove.durationChange,\n idArray: vm.idArray,\n schedule: scheduleMove.schedule,\n changeOperation: scheduleMove.changeOperation\n })\n .then(function (moveResponse) {\n var updated = 0;\n forEach(vm.schedules, function (us) {\n var ms = find(moveResponse.data, {\n scheduleId: us.id\n });\n if (ms) {\n updated++;\n us.startDate = ms.startDate;\n us.endDate = ms.endDate;\n us.daysMoved = ms.daysMoved;\n }\n });\n if (updated > 0) {\n toastr.info(\n updated +\n \" tidplaner justert med \" +\n moveResponse.data[0].daysMoved +\n \" dager\"\n );\n }\n });\n } else {\n var index = findIndex(vm.schedules, function (s) {\n return s.id === schedule.id;\n });\n\n vm.schedules[index] = scheduleCopy;\n }\n });\n };\n\n vm.generateTasks = () => {\n taskApi\n .generateTasksModal(vm.schedules)\n .result.then((schedules) => {\n if (schedules) {\n scheduleApi.updateTaskStatus(schedules).then(() => {\n toastr.success(\"Status oppdatert!\");\n $state.reload();\n });\n }\n });\n };\n\n vm.deleteAllSchedules = function () {\n\n if (vm.wrikeSyncEnabled) { \n $confirm({\n text:\n \"Er du sikker på at vil slette tidplanen og koblingen til Wrike ?\"\n }).then(() => {\n scheduleApi\n .wrikeDeleteProject({\n projectId: $stateParams.id,\n projPhaseId: $stateParams.ppId,\n projType: vm.wrikeSyncProjType\n })\n .then(() => {\n $state.reload();\n });\n });\n }\n else\n {\n $confirm({\n text: \"Er du sikker på at vil slette alle prosesser ? prosesser som er fullførte slettes ikke\"\n }).then(function () {\n scheduleApi.deleteAllSchedules(vm.house).then(function (res) {\n if (res.data.deleted) {\n toastr.info(\n \"Slettet \" + res.data.deleted + \" tidplaner\"\n );\n }\n if (res.data.haveOrdersFailed) {\n toastr.warning(\n res.data.haveOrdersFailed +\n \" kunne ikke slettes pga at varer allerede var bestilt\"\n );\n }\n if (res.data.completedFailed) {\n toastr.warning(\n res.data.completedFailed +\n \" kunne ikke slettes pga at prosess allerede er fullført\"\n );\n }\n\n $state.reload();\n });\n });\n }\n };\n\n vm.updateScheduleFromProjOrg = function () {\n scheduleApi\n .updateResponsibleHouseSchedule(vm.house.id)\n .then(function () {\n $state.reload();\n });\n };\n\n vm.downloadControlSchemas = function () {\n scheduleApi\n .downloadControlSchemas({\n phaseId: vm.house.id,\n idArray: vm.idArray\n })\n .then((res) => {\n saveFile(\n res,\n \"Egenkontrollskjemaer.pdf\",\n \"application/pdf\"\n );\n });\n };\n\n vm.updateLastUpdatedScheduleDate = function () {\n $confirm({\n text: \"Oppdatere tidplanen med ny revisjonsdato?\"\n }).then(function () {\n houseApi\n .updateLastUpdatedScheduleDate(vm.house)\n .then(function () {\n $state.reload();\n });\n });\n };\n\n vm.importSchedules = function () {\n importSchedulesModal().result.then(function (res) {\n if (!res) return;\n switch (res.type) {\n case \"phase\":\n scheduleApi\n .importSchedules(\n res.fromHouse,\n vm.house.id,\n res.addDays\n )\n .then(function () {\n $state.reload();\n });\n break;\n case \"wrike\":\n scheduleApi.wrikeImport({\n wrikeProjectId: res.wrikeProjectId,\n parentFolderId: res.parentFolderId,\n projectId: res.projectId,\n projPhaseId: $stateParams.ppId,\n projType: res.projType,\n processKey: res.processKey,\n adjustedDate: res.adjustedDate\n })\n .then(function() {\n $state.reload();\n });\n break;\n }\n });\n };\n\n vm.wrikeOpen = function() {\n scheduleApi.openWrikeFolder(\n {\n projectId: $stateParams.id,\n projPhaseId: $stateParams.ppId,\n projType: vm.wrikeSyncProjType\n }).then(response => {\n window.open(response.data.permalink);\n });\n };\n\n vm.wrikeOpenTask = function(wrikeId) { \n scheduleApi.getWrikeTask(wrikeId).then(response => {\n window.open(response.data.permalink);\n });\n };\n\n vm.wrikeSync = function() {\n scheduleApi.wrikeImportSync({\n projectId: $stateParams.id,\n projPhaseId: $stateParams.ppId,\n projType: vm.wrikeSyncProjType\n })\n .then(function() {\n $state.reload();\n });\n };\n\n vm.addSchedule = function () {\n $uibModal.open({\n template: addSchedulehtml,\n controllerAs: \"modalvm\",\n size: \"lg\",\n resolve: {\n processIdsInProjSchedule: [\n function () {\n return map(\n projSchedule.data.schedules,\n \"processId\"\n );\n }\n ],\n addProcessData: [\n \"processApi\",\n \"$stateParams\",\n function (processApi, $stateParams) {\n return processApi.addProcessData($stateParams.ppId);\n }\n ]\n },\n controller: addSchedulectrl\n });\n };\n\n vm.exportToPdf = function () {\n houseApi\n .downloadScheduleAsPdf({\n phaseId: $stateParams.ppId,\n idArray: vm.idArray\n })\n .then(saveFile);\n };\n\n vm.deleteSchedule = function (sch) {\n $confirm({\n text: \"Er du sikker på at vil slette tidplanen\"\n }).then(function () {\n scheduleApi.deleteSchedule(sch).then(function () {\n $state.go(\n \"main.projects.project.house.schedules\",\n {\n ppId: $stateParams.ppId\n },\n {\n reload: true\n }\n );\n });\n });\n };\n\n vm.replacePdfRefs = function () {\n documentApi.replaceHousePdfRefs(vm.house.id).then(function () {\n $state.reload();\n });\n };\n\n vm.totalCount = projSchedule.data.schedules.length;\n vm.schedules = projSchedule.data.schedules;\n vm.processTypes = projSchedule.data.processTypes;\n vm.processPhases = projSchedule.data.processPhases;\n vm.tradeCodes = projSchedule.data.tradeCodes;\n vm.milestoneTypes = projSchedule.data.milestoneTypes;\n vm.wrikeSyncEnabled = projSchedule.data.wrikeSyncEnabled;\n vm.wrikeSyncProjType = projSchedule.data.wrikeSyncProjType;\n vm.wrikeCanCreateSync = projSchedule.data.wrikeCanCreateSync;\n\n //Create Activities\n\n forEach(vm.schedules, function (sch) {\n if (!sch.activitiesCreated) {\n scheduleApi.createActivites(sch).then((response) => {\n if (response.data.activityCount) {\n sch.activityCount = response.data.activityCount;\n sch.activityDoneCount = response.data.activityDoneCount;\n sch.commentCount = response.data.commentCount;\n }\n\n $log.info(response.data);\n });\n }\n });\n\n // forEach(vm.schedules, function (sch) {\n // sch.loadingComponentsCount = true;\n // scheduleApi.getOrderCount(sch.id).then(response => {\n // setTimeout(() => {\n // sch.loadingComponentsCount = false;\n // sch.haveComponents = response.data.ordered > 0 || response.data.onOrder > 0;\n // sch.componentsOrdered = response.data.ordered;\n // sch.componentsOrderTotal = response.data.onOrder;\n // });\n // });\n // });\n }\n];\n","export default \"
\\n

Oppsummering av metadata/aktivitet på tidplan

\\n
\\n
\\n \\n
\\n

{{ comment.createdDate | date: \\\"dd.MM.yyyy\\\" }}

\\n

{{ comment.createdBy }}

\\n

{{ comment.comment }}

\\n
\\n
\\n\\n \\n
\\n

{{ abr.createdDate | date: \\\"dd.MM.yyyy\\\" }}

\\n

{{ abr.createdBy }}

\\n

{{ abr.title }}

\\n
\\n \\n\\n
\\n \\n Lukk\\n \\n
\\n\";","export default \"
\\n

Importer tidplan

\\n
\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\";","export default \"
\\n

Legg til prosess i tidplan

\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n {{$select.selected.name}}\\n \\n \\n
\\n
\\n \\n Fant ingen prosesser i dette konseptet/modellen\\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n \\n \\n
\";","export default [\"$uibModal\", \"house\",\n function ($uibModal, house) {\n var vm = this;\n vm.house = house.data;\n\n }\n];","import saveFile from \"shared/saveFile\";\nimport { findIndex, map } from \"lodash\";\nexport default [\n \"house\",\n \"schedule\",\n \"$state\",\n \"scheduleApi\",\n \"contactApi\",\n \"processApi\",\n \"$stateParams\",\n function(\n house,\n schedule,\n $state,\n scheduleApi,\n contactApi,\n processApi,\n $stateParams\n ) {\n var vm = this;\n\n vm.house = house.data;\n vm.schedule = schedule.data.schedule;\n\n vm.contacts = schedule.data.contacts;\n\n vm.contactPersons = schedule.data.contactPersons;\n if ($stateParams.idArray) {\n vm.navVisible = true;\n var indexInList = findIndex($stateParams.idArray, function(n) {\n return n === vm.schedule.id;\n });\n vm.prev =\n indexInList <= 0 ? null : $stateParams.idArray[indexInList - 1];\n vm.next =\n indexInList === $stateParams.idArray.length\n ? null\n : $stateParams.idArray[indexInList + 1];\n }\n\n vm.checkEndDate = function(startDate) {\n if (!vm.schedule.endDate) {\n vm.schedule.endDate = startDate;\n }\n };\n vm.navigate = function(next) {\n var navId;\n if (next) {\n navId = vm.next;\n } else {\n navId = vm.prev;\n }\n\n $state.go(\"main.projects.project.house.schedules.schedule.index\", {\n scheduleId: navId,\n idArray: $stateParams.idArray\n });\n };\n vm.changeContact = function() {\n if (vm.schedule.contactId) {\n contactApi\n .getContactPersonsList(vm.schedule.contactId)\n .then(res => {\n vm.contactPersons = map(res.data.contactPersons, cp => {\n return {\n key: cp.id,\n value: cp.name\n };\n });\n });\n } else {\n vm.contactPersons = null;\n }\n\n vm.schedule.leaderId = null;\n vm.schedule.projContactId = null;\n vm.schedule.responsibleId = null;\n };\n\n vm.update = function() {\n scheduleApi.updateSchedule(vm.schedule).then(function() {\n $state.reload();\n });\n };\n\n vm.downloadProcess = function() {\n processApi\n .downloadProcessDocument(vm.schedule.processId)\n .then(res => {\n saveFile(\n res,\n `${vm.schedule.processName}.pdf`,\n \"application/pdf\"\n );\n });\n };\n }\n];\n","import saveFile from \"shared/saveFile\";\nimport { getPdfRefs } from \"shared/albumEditor/helpers\";\nimport { forEach } from \"lodash\";\n\nexport default [\n \"house\",\n \"schedule\",\n \"$log\",\n \"activities\",\n \"$confirm\",\n \"scheduleApi\",\n \"$state\",\n \"$scope\",\n \"toastr\",\n \"haveRoleFilter\",\n \"documentApi\",\n function (\n house,\n schedule,\n $log,\n activities,\n $confirm,\n scheduleApi,\n $state,\n $scope,\n toastr,\n haveRole,\n documentApi\n ) {\n var vm = this;\n vm.house = house.data.house;\n vm.schedule = schedule.data.schedule;\n vm.activityList = activities.data;\n vm.checkLists = schedule.data.checkLists;\n vm.allTextsExpanded = true;\n\n vm.allowReplacePdfRefs =\n (haveRole(\"Admin\") || haveRole(\"PRL\")) &&\n !vm.schedule.completedDate;\n\n vm.replacePdfRefs = () => {\n let listOfPdfRefs = [];\n\n vm.activityList.forEach((act) => {\n //if (!act.complete) {\n var refs = getPdfRefs(act.text);\n if (refs.length > 0) {\n refs = refs.map((obj) => ({\n ...obj,\n activityId: act.id,\n scheduleId: vm.schedule.id\n }));\n listOfPdfRefs = listOfPdfRefs.concat(refs);\n }\n //}\n });\n\n $confirm({\n text: \"Vil du oppdatere alle tegninger ?\"\n }).then(function () {\n documentApi\n .replaceAllPdfRefs(vm.schedule.id, listOfPdfRefs, vm.house.id)\n .then(() => {\n $state.reload();\n //$log.info(response.data);\n });\n });\n };\n\n vm.toogleTextsVisible = function () {\n forEach(vm.activityList, function (activity) {\n activity.open = !vm.allTextsExpanded;\n });\n vm.allTextsExpanded = !vm.allTextsExpanded;\n };\n\n $scope.$watch(\n \"vm.activityList\",\n function watchActivityList(list) {\n if (list) {\n vm.activitiesCnt = list && list.length;\n vm.activitiesDone =\n list && list.filter((x) => x.complete === true).length;\n }\n },\n true\n );\n\n vm.setProcessAsDone = function () {\n if (!vm.allActivitiesComplete) {\n toastr.error(\n \"Alle aktiviteter må være fullført før du kan ferdigmelde prosess!\"\n );\n return;\n }\n if (!schedule.data.chkAllowComplete) {\n toastr.error(\n \"Alle sjekklister listet her må være fullført før du kan ferdigmelde prosess!\"\n );\n return;\n }\n\n $confirm({\n text: \"Vil du fullføre denne prosessen ?\"\n }).then(function () {\n scheduleApi.complete(vm.schedule).then(function () {\n $state.reload();\n });\n });\n };\n\n vm.exportpdf = () => {\n scheduleApi.exportActivitiesPdf(vm.schedule.id).then(saveFile);\n };\n }\n];\n","export default [\n \"$uibModal\",\n \"house\",\n \"schedule\",\n \"$log\",\n \"$state\",\n \"orders\",\n function($uibModal, house, schedule, $log, $state, orders) {\n var vm = this;\n vm.house = house.data.house;\n vm.schedule = schedule.data.schedule;\n vm.orders = orders.data.orders;\n vm.currentUser = orders.data.currentUser;\n vm.thUsers = orders.data.thUsers;\n vm.contactList = orders.data.contactInformationList;\n vm.componentsWarning = orders.data.componentsWarning;\n }\n];\n","export default [\n \"organizations\",\n function(organizations) {\n var vm = this;\n\n vm.organizations = organizations.data;\n }\n];\n","export default [\n \"$log\",\n \"fdv\",\n \"$state\",\n \"$stateParams\",\n \"houseApi\",\n \"$window\",\n function($log, fdv, $state, $stateParams, houseApi, $window) {\n var vm = this;\n vm.documents = fdv.data.documents;\n vm.breadCrumb = fdv.data.breadCrumb;\n\n vm.breadCrumbClick = function(bc) {\n $state.go(\"main.projects.project.house.fdv\", {\n folderId: bc.id\n });\n };\n vm.openOrNavigate = function(doc) {\n //Folder\n if (doc.ibmItemType === 0) {\n $state.go(\"main.projects.project.house.fdv\", {\n folderId: doc.uuid\n });\n }\n //Document\n if (doc.ibmItemType === 1) {\n $window.open(doc.open);\n }\n\n //return\n };\n }\n];\n","import house from \"album/house/state\";\nimport index from \"album/house/index/state\";\nimport sections from \"album/house/sections/state\";\nimport options from \"album/house/options/state\";\nimport aberrations from \"album/house/aberrations/state\";\n\nimport changes from \"album/house/changes/state\";\nimport checklists from \"album/house/checklists/state\";\nimport documents from \"album/house/documents/state\";\nimport modules from \"album/house/modules/state\";\nimport schedules from \"album/house/schedules/state\";\nimport schedule from \"album/house/schedules/schedule/state\";\nimport scheduleindex from \"album/house/schedules/schedule/index/state\";\nimport activities from \"album/house/schedules/schedule/activities/state\";\nimport components from \"album/house/schedules/schedule/components/state\";\nimport organization from \"album/house/organization/state\";\nimport fdv from \"album/house/fdv/state\";\n\nexport default [\n house,\n index,\n sections,\n options,\n aberrations,\n changes,\n checklists,\n documents,\n modules,\n schedules,\n schedule,\n scheduleindex,\n activities,\n components,\n organization,\n fdv\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./house.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.house\", {\n url: \"/house/{ppId}\",\n abstract: true,\n aData: {\n breadcrumbProxy: \"main.projects.project.house.index\"\n },\n views: {\n\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n house: [\"houseApi\", \"$stateParams\", function (houseApi, $stateParams) {\n\n return houseApi.getHouse($stateParams.ppId);\n\n }]\n }\n\n });\n}];","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n
\\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.house.index\", {\n url: \"/houseindex\",\n\n\n aData: {\n name: \"{{'House' | translate }}\" + \" \" + \"{{house.data.house.houseNum}}\"\n },\n views: {\n \"housecontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n\n\n });\n}];","export default \"
\\n
\\n

Bygg {{vm.house.houseNum}}

\\n
\\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n

Bygg

\\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n \\n
\\n
\\n \\n \\n {{ $select.selected.number }}\\n \\n \\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n

- {{vm.house.visibleOnWebActivatedByName}}\\n {{vm.house.visibleOnWebActivatedDate | date : 'dd.MM.yyyy HH:mm'}}\\n

\\n
\\n
\\n\\n

Forbehold\\n

\\n \\n
\\n
Ingen forbehold registrert
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n \\n
\\n

\\n Brukstillatelser\\n

\\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n

\\n Borettslag\\n

\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n %\\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n

Info & salg

\\n \\n
\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./sections.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.sections\", {\n\n url: \"/phasesections\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Seksjoner\"\n },\n views: {\n \"housecontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n\n resolve: {\n sections: [\"houseApi\", \"$stateParams\", function (houseApi, $stateParams) {\n return houseApi.getSectionsInHouse($stateParams.ppId);\n }]\n\n\n }\n\n\n });\n}];","export default \"\\r\\n\\r\\n
\\r\\n

Moduler på seksjonene samstemmer ikke med modulene på huset

\\r\\n\\r\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./options.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.house.options\", {\n url: \"/houseoptions\",\n data: {\n requiresLogin: true\n },\n\n aData: {\n name: \"Tilvalg\"\n },\n resolve: {\n houseOptions: [\"houseApi\", \"house\", function (houseApi, house) {\n return houseApi.getOptions(house.data.house.id);\n }]\n },\n views: {\n \"housecontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t

Varsel om ubekreftede tilvalg blir sendt til kunde per epost 30 dager, 14 dager og 3 dager før frist

\\n
\\n\\n
\\n\\t\\n\\t\\n
\\n\\n
\\n\\t

Du må trykke på \\\"Bekreftet\\\" eller \\\"Lagt i\\n\\t\\thandlekurv\\\" for at tilvalgene skal\\n\\t\\tvises

\\n\\t

Ingen tilvalg på dette huset enda...

\\n
\\n\\n
0\\\">\\n\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\n\\t
SeksjonstypeNavnTypeKategoriPris kundePris entr.BonustimerBeskrivelseOpprettetBekreftet
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t{{group.groupLabel}}\\n\\t\\t\\t\\t {{group.created | date :'dd.MM.yyyy'}}
{{opt.sectionType}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{opt.name}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{opt.name}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t{{opt.typeName}}{{opt.categoryName}}{{opt.price | number:0}}{{opt.cost + opt.amountEnt | number:0}}{{opt.bonusHours}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t{{opt.isConfirmed ? 'Ja': 'Nei'}}
Sum seksjon:\\n\\t\\t\\t\\t\\t{{ group.sum | number:0 }}\\n\\t\\t\\t\\t{{(group.options | sumOfValue : 'bonusHours') | number:1}}
Sum bygg:\\n\\t\\t\\t\\t\\t{{ vm.optionsSum | number:0 }}{{vm.bonusSum| number:1}}\\n\\t\\t\\t\\t
\\n
\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./aberrations.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.house.aberrations\", {\n url: \"/houseaberrations\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Avvik \"\n },\n\n views: {\n \"housecontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n aberrations: [\"houseApi\", \"house\", function (houseApi, house) {\n\n return houseApi.getAberrations(house.data.house.id);\n\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n
IdOpprettetStatusSeksjonTittelAktivitetProsess
{{a.aberrationId}}{{a.created | date : 'dd.MM.yyyy'}}{{a.statusString}}{{a.sectionNum}}\\n ({{a.customerName}})\\n {{a.title}}\\n \\n\\n {{a.activityName}}{{a.processName}}
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./changes.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.house.changes\", {\n\n url: \"/changes\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Forandringer\"\n },\n resolve: {\n houseChanges: [\"houseApi\", \"house\", function (houseApi, house) {\n return houseApi.getChanges(house.data.house.id);\n }]\n },\n views: {\n \"housecontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n\n\n });\n}];","export default \"
\\n\\t\\n
\\n\\n
\\n\\t

Ingen forandringer på dette huset enda...

\\n
\\n\\n
0\\\">\\n\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\n\\t\\t\\n\\t
KontraktLinjeForandringBeskrivelsePrisBehandletNotat
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\tSeksjon {{group.apartmentKey}}\\n\\t\\t\\t\\t
{{c.contractNumber}}{{c.contractLineNumber}}\\n\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{c.name}}\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t{{c.price | number:0}}{{c.handled ? 'Ja' : 'Nei'}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./checklists.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.house.checklists\", {\n url: \"/housechecklists\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Sjekklister\"\n },\n resolve: {\n checklists: [\"checklistApi\", \"$stateParams\", function (checklistApi, $stateParams) {\n\n\n return checklistApi.getHouseChecklists($stateParams.ppId);\n\n }]\n },\n views: {\n \"housecontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"\";","import ctrl from \"./ctrl\";\nimport html from \"./documents.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.house.documents\", {\n url: \"/documents\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Dokumenter\"\n },\n views: {\n \"housecontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n resolve: {\n documents: [\"houseApi\", \"house\", function (houseApi, house) {\n return houseApi.getHouseDocuments(house.data.house.id);\n\n\n }]\n }\n\n\n });\n}];","export default \"\\n\\n \\n\";","import ctrl from \"./ctrl\";\nimport html from \"./modules.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.modules\", {\n\n url: \"/modules\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Moduler\"\n },\n views: {\n \"housecontent\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n projModules: [\"houseApi\", \"$stateParams\", function (houseApi, $stateParams) {\n return houseApi.getModulesInHouse($stateParams.ppId);\n }]\n }\n\n\n });\n}];","export default \"
\\n \\n \\n
\\n\\n\\n
\\n

Moduler på {{'House' | translate:true }}

\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdNavnAntall
{{m.module.moduleId}}{{m.module.name}}{{m.qty}}{{m.module.leftOrRight}}\\n \\n \\n
\\n
\\n\\n
\\n

Moduler pr seksjon

\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
EtasjeLeiligheter
{{f.floor}}\\n \\n \\n
\\n
\\n\\n
\\n

Moduler på seksjonene samstemmer ikke med modulene på huset

\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./schedules.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.house.schedules\", {\n url: \"/schedules\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Tidplan\"\n },\n views: {\n \"housecontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n projSchedule: [\"houseApi\", \"$stateParams\", function (houseApi, $stateParams) {\n return houseApi.getHouseSchedule($stateParams.ppId);\n }],\n lastUpdate: [\"scheduleApi\", \"$stateParams\", function (scheduleApi, $stateParams) {\n return scheduleApi.getLastUpdatePhase($stateParams.ppId);\n }]\n }\n });\n}];","export default \"
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n
\\n \\n
\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n {{ vm.lastUpdate }}\\n
FaseNavnModellFagområdeKlartFristFullførtTegn. oppdatertKommentarer/AvvikFagansvarlig utførendeVarerAktiviteter
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{ sch.phase }}\\n \\n {{ sch.processName }}\\n\\n {{ sch.modelName }}{{ sch.tradeCode }}\\n {{ sch.startDate | date: \\\"dd.MM.yyyy\\\"\\n }}+\\n {{ sch.daysMoved }}\\n \\n {{ sch.endDate | date: \\\"dd.MM.yyyy\\\" }}\\n + {{ sch.daysMoved }}\\n {{ sch.completedDate | date: \\\"dd.MM.yyyy\\\" }}\\n {{ sch.drawingsLastUpdated | date: \\\"dd.MM.yyyy HH:mm\\\" }}\\n \\n \\n {{ sch.commentCount }}\\n /\\n {{ sch.aberrationCount }}\\n {{ sch.responsiblePersonFullName }}\\n \\n = sch.componentsOrderTotal ? 'Alle varer bestilt' : 'Har ubestilte varer') : 'Ingen varer å bestille' }}\\\"\\n ng-class=\\\"sch.haveComponents ? (sch.componentsOrderedCount >= sch.calcComponentsCount ? 'badge-success' : 'badge-warning') : 'badge-secondary'\\\"\\n class=\\\"badge\\\">\\n\\n {{ sch.componentsOrderedCount || 0 }}\\n /\\n {{ sch.calcComponentsCount || 0 }}\\n \\n sch.activityDoneCount ? 'badge-warning' : 'badge-success' \\\"\\n class=\\\"badge clickpointer\\\">{{ sch.activityDoneCount }}\\n /\\n {{ sch.activityCount }}\\n \\n \\n \\n \\n \\n\\n \\n \\n\\n \\n \\n \\n\\n \\n \\n\\n \\n \\n\\n \\n \\n \\n \\n\\n \\n \\n \\n\\n\\n\\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./schedule.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.house.schedules.schedule\", {\n params: {\n filter: null\n },\n url: \"/schedule/{scheduleId}\",\n data: {\n requiresLogin: true\n },\n abstract: true,\n aData: {\n breadcrumbProxy: \"main.projects.project.house.schedules.schedule.index\"\n },\n resolve: {\n schedule: [\n \"scheduleApi\",\n \"$stateParams\",\n function (scheduleApi, $stateParams) {\n return scheduleApi.getSchedule($stateParams.scheduleId);\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n\\t\\n\\t\\n\\t\\n\\t\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\n \"main.projects.project.house.schedules.schedule.index\",\n {\n params: {\n filter: null,\n idArray: null\n },\n url: \"/schedule\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{schedule.data.schedule.processName}}\"\n },\n views: {\n schedulecontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n }\n );\n }\n];\n","export default \"
\\n
\\n

Tidplan

\\n
\\n \\n Gå\\n til prosess \\n \\n\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n

Info

\\n
\\n
\\n \\n
\\n \\n\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n\\n
\\n

Ansvarlig

\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{$select.selected.value}}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{$select.selected.value}}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{$select.selected.value}}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{$select.selected.value}}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n Oppgave fullført {{vm.schedule.completedDate|date:'dd.MM.yyyy HH:mm'}} av {{vm.schedule.completedBy}}\\n

\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./activities.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.house.schedules.schedule.activities\", {\n params: {\n filter: null\n },\n url: \"/activities\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Aktiviteter\"\n },\n views: {\n \"schedulecontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n activities: [\"activityApi\", \"$stateParams\", function (activityApi, $stateParams) {\n return activityApi.getScheduleActivities($stateParams.scheduleId);\n }]\n \n }\n });\n}];","export default \"
\\n
\\n
\\n

{{vm.activitiesDone}}/{{vm.activitiesCnt}} aktiviteter er fullført\\n

\\n Ferdigmeldt {{vm.schedule.completedDate|date}} av {{vm.schedule.completedBy}}\\n

\\n

\\n
\\n\\n
\\n \\n\\n \\n \\n \\n\\n
\\n
\\n
\\n
0\\\">\\n
\\n
\\n
Følgende sjekklister er åpne på dette fagområde:
\\n \\n
\\n
\\n
\\n\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./components.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.projects.project.house.schedules.schedule.components\", {\n params: {\n filter: null\n },\n url: \"/components\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{'Components' | translate}}\"\n },\n resolve: {\n orders: [\"scheduleApi\", \"$stateParams\", function (scheduleApi, $stateParams) {\n return scheduleApi.getOrders($stateParams.scheduleId);\n }]\n },\n views: {\n \"schedulecontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n\n\n });\n}];","export default \"0\\\" allow-edit=\\\"true\\\" schedule=\\\"vm.schedule\\\" orders=\\\"vm.orders\\\"\\n house=\\\"vm.house\\\" th-users=\\\"vm.thUsers\\\" contact-list=\\\"vm.contactList\\\" current-user=\\\"vm.currentUser\\\" count=\\\"vm.count\\\">\\n\\n\\n\\n
\\n
\\n\\n

\\n Det finnes varer tilhørende denne prosess, men det mangler enten mengder (mengdeberegning) eller riktig\\n konfigurering av moduler på huset.\\n

\\n
\\n\\n\\n
\\n\\n
\\n\\n

\\n Det finnes ingen varer å bestille på denne prosessen\\n

\\n
\\n\\n\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./organization.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.projects.project.house.organization\", {\n url: \"/org\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Fagområder\"\n },\n\n views: {\n \"housecontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n organizations: [\"houseApi\", \"$stateParams\", function (houseApi, $stateParams) {\n return houseApi.getOrganization($stateParams.ppId);\n }]\n }\n });\n}];","export default \"
\\n
\\n \\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{'TradeCode' | translate}}FirmaFaglig lederFagansvarlig utførende
\\n \\n \\n \\n \\n \\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./fdv.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.projects.project.house.fdv\", {\n url: \"/fdv/:folderId\",\n params: {\n folderId: null\n },\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"FDV\"\n },\n views: {\n housecontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n fdv: [\n \"houseApi\",\n \"$stateParams\",\n function(houseApi, $stateParams) {\n return houseApi.getFdv(\n $stateParams.ppId,\n $stateParams.folderId\n );\n }\n ]\n }\n });\n }\n];\n","export default \"
\\n
    \\n
  1. \\n {{bc.title}}\\n
  2. \\n
  3. \\n {{bc.title}}
  4. \\n
\\n\\n\\n
\\n
\\n Ingen FDV for denne modellen funnet\\n\\n
\\n
\\n
0\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n
NavnDatoForfatterStørrelse/Innhold
\\n \\n \\n {{doc.name}}\\n \\n \\n \\n {{doc.author}}{{doc.totalMediaSize | bytes}}{{doc.documentsInFolder}}
\\n
\\n
\";","import navigation from \"shared/navigation.js\";\n\nexport default [\n function () {\n var vm = this;\n vm.nav = navigation;\n vm.persistKey = \"registrationslist\";\n\n vm.$onInit = () => {\n vm.nav(\"registrations\");\n };\n }\n];\n","import navigation from \"shared/navigation.js\";\n\nexport default [\n \"$log\",\n \"$uibModal\",\n \"$state\",\n \"$stateParams\",\n \"regLine\",\n function ($log, $uibModal, $state, $stateParams, regLine) {\n var vm = this;\n vm.nav = navigation;\n\n vm.regLine = regLine.data.regLine;\n vm.contactInfo = regLine.data.contactInfo;\n vm.associatedRegLines = regLine.data.associatedRegLines;\n vm.cnt = regLine.data.cnt;\n vm.commentLinkName =\n regLine.comments && regLine.comments.length > 0\n ? \"Kommentarer\"\n : \"Kommentarer\";\n\n vm.$onInit = () => {\n if (vm.regLine.id && vm.regLine.id > 0) {\n vm.nav(\"registrations/\" + vm.regLine.id + \"/log\");\n }\n };\n }\n];\n","import saveFile from \"shared/saveFile\";\nimport { forEach, map, isEmpty, find } from \"lodash\";\nimport navigation from \"shared/navigation.js\";\n\nexport default [\n \"$state\",\n \"$scope\",\n\n \"toastr\",\n \"registrationApi\",\n \"haveRoleFilter\",\n \"contactApi\",\n \"commonApi\",\n \"attachmentApi\",\n \"$confirm\",\n \"commentApi\",\n \"$stateParams\",\n \"$cacheFactory\",\n \"houseApi\",\n \"$log\",\n \"regLine\",\n\n function (\n $state,\n $scope,\n toastr,\n registrationApi,\n haveRole,\n contactApi,\n commonApi,\n attachmentApi,\n $confirm,\n commentApi,\n $stateParams,\n $cacheFactory,\n houseApi,\n $log,\n regLine\n ) {\n var vm = this;\n vm.nav = navigation;\n\n vm.regLine = regLine.data.regLine;\n\n vm.regLineCategories = regLine.data.regLineCategories;\n\n vm.projects = regLine.data.projects;\n vm.regTypes = regLine.data.regTypes;\n vm.regStatuses = regLine.data.regStatuses;\n vm.regSources = regLine.data.regSources;\n vm.users = regLine.data.users;\n vm.houses = regLine.data.houses;\n vm.sections = regLine.data.sections;\n vm.houseDropDownDisabled = isEmpty(vm.houses);\n // vm.productionGroups = regLine.data.productionGroups;\n\n vm.commentContext = {\n commentType: 0,\n id: $stateParams.reglineId,\n lineStatus: vm.regLine.lineStatus,\n allowAdd: vm.regLine.status !== 2\n };\n\n vm.lineStatusOriginal = vm.regLine.lineStatus;\n\n //var originalContactPerson = angular.copy(vm.regLine.contactPersonId);\n\n /* $scope.$watch(\"vm.regLine.contactPersonId\", function (nv) {\n if (nv !== originalContactPerson && nv !== null && vm.regLine.id !== 0) {\n vm.sendReminder();\n }\n }); */\n\n vm.$onInit = () => {\n if (vm.regLine.id && vm.regLine.id > 0) {\n vm.nav(\"registrations/\" + vm.regLine.id);\n }\n };\n\n vm.changeProject = () => {\n houseApi\n .getHouses(vm.regLine.projRegistrationProjTable)\n .then((res) => {\n vm.houses = map(res.data, (h) => {\n return {\n id: h.id,\n name: \"Bygg \" + h.houseNum,\n houseNumOrder: h.houseNumOrder\n };\n });\n\n var currentProject = find(vm.projects, {\n key: vm.regLine.projRegistrationProjTable\n });\n if (currentProject) {\n vm.regLine.projectName = currentProject.value;\n }\n });\n };\n vm.changeHouse = () => {\n houseApi\n .getSectionsInHouse(vm.regLine.projRegistrationPhase)\n .then((res) => {\n vm.sections = res.data.sections;\n });\n };\n vm.changeSection = () => {\n var currentSection = find(vm.sections, {\n id: vm.regLine.projRegistrationSection\n });\n if (currentSection) {\n vm.regLine.address = currentSection.fullAddress;\n } else {\n vm.regLine.address = undefined;\n }\n };\n\n vm.sendReminder = function () {\n contactApi\n .searchContactPersons(\n null,\n null,\n vm.regLine.contactPersonId,\n vm.regLine.contactId\n )\n .then((response) => {\n var contactPerson = find(\n response.data,\n (cp) =>\n cp.contactPersonId === vm.regLine.contactPersonId\n );\n\n if (contactPerson) {\n if (!contactPerson.email) {\n toastr.warning(\n `Ingen epost registrert på ${contactPerson.fullName}!`\n );\n return;\n }\n\n $confirm({\n size: \"lg\",\n customButtonText: \"Send med kopi til meg\",\n showCustomButton: true,\n customButtonObj: {\n sendCopy: true\n },\n text: `Vil du sende en påminnelse på epost til ${contactPerson.fullName} (${contactPerson.email})?`\n }).then(function (res) {\n vm.regLine.sendCopyOnReminder = res && res.sendCopy;\n\n registrationApi\n .sendReminder(vm.regLine)\n .then(function (res) {\n if (res.data.success) {\n toastr.info(\"Epost sendt\");\n } else {\n toastr.error(\n \"Noe gikk galt,sjekk epostadresse til kontaktperson\"\n );\n }\n $state.reload();\n });\n });\n } else {\n toastr.warning(\n \"Ingen ansvarlig å sende påminnelse til\"\n );\n }\n });\n };\n\n vm.disableStatus = function (rs) {\n //var disableDone = rs.key === 2 && vm.regLine.contactPersonId !== profile.contactPersonId;\n var disableClose = rs.attr1 === \"disabled\";\n var disableDeny = rs.key === 5 && !haveRole(\"KK\");\n\n return disableClose || disableDeny; //|| disableDone;\n };\n\n vm.changeRegStatus = function () {\n registrationApi\n .validateRegistrationLine(vm.regLine)\n .then(function (res) {\n var vr = res.data;\n\n if (vr.valid) {\n commentApi\n .commentModal({\n commentType: 0\n })\n .result.then(function (comment) {\n if (comment) {\n commonApi.transformAttachments(\n comment.attachments\n );\n\n vm.regLine.comments =\n vm.regLine.comments || [];\n vm.regLine.comments.push({\n status: 2,\n text: comment.newComment,\n visibleToCustomer:\n comment.visibleToCustomer,\n tags: comment.tags || [],\n attachments: comment.attachments\n });\n vm.saveRegLine();\n }\n if (!comment) {\n vm.regLine.lineStatus =\n vm.lineStatusOriginal;\n }\n });\n } else {\n vm.regLine.lineStatus = vm.lineStatusOriginal;\n\n var msg = \"\";\n forEach(vr.errors, function (err) {\n msg += err + \"
\";\n });\n\n toastr.warning(\n msg,\n \"Kan ikke endre status før alle påkrevde felt er fylt ut\",\n {\n timeOut: 5000,\n allowHtml: true,\n\n onShown: function (t) {\n t.el\n .parent()\n .removeClass(\"toast-top-right\")\n .addClass(\"toast-bottom-left\");\n t.el.find(\".toast-warning\").css({\n width: \"600px\"\n });\n }\n }\n );\n }\n });\n };\n vm.deleteLine = function () {\n $confirm({\n text: \"Vil du slette dette punktet ?\"\n }).then(function () {\n toastr.warning(\"Sletting er ikke tilatt!\");\n });\n };\n\n vm.saveRegLine = function () {\n registrationApi.updateReg(vm.regLine).then(function (res) {\n if (res.data.sentToExternal) {\n toastr.info(\n \"Epost sendt til kontaktperson, kopi av epost ligger i din utboks\"\n );\n }\n\n var lineId =\n (res.data &&\n res.data.lineIndex &&\n res.data.lineIndex.lineId) ||\n res.data.lineId;\n toastr.success(\"Reklamasjon punkt # \" + lineId + \" lagret\");\n\n $state.go(\n \"main.reg.index\",\n {\n reglineId: res.data.lineId\n },\n {\n reload: true\n }\n );\n });\n };\n\n vm.downloadAttachment = function (attId) {\n attachmentApi.downloadAttachment(attId).then(saveFile);\n };\n vm.download = function () {\n $confirm({\n title: \"Last ned\",\n customButtonText: \"Med bilder\",\n customButtonText2: \"Med vedlegg\",\n ok: \"Uten vedlegg\",\n showCustomButton: true,\n showCustomButton2: true,\n customButtonObj: {\n downloadImages: true\n },\n customButtonObj2: {\n downloadAttachments: true\n },\n text: \"Velg nedlastningstype\"\n }).then(function (res) {\n registrationApi\n .downloadRegLineWorkOrder(vm.regLine.id, res)\n .then((res) => {\n saveFile(res);\n });\n });\n };\n }\n];\n","export default [\"$log\", \"$uibModal\", \"$state\", \"$stateParams\", \"regLine\", \"regLineLog\",\n function ($log, $uibModal, $state, $stateParams, regLine, regLineLog) {\n\n var vm = this;\n\n vm.logs = regLineLog.data;\n\n\n }\n];","import navigation from \"shared/navigation.js\";\n\nexport default [\n \"$log\",\n \"$uibModal\",\n \"$state\",\n \"$stateParams\",\n \"regLine\",\n function ($log, $uibModal, $state, $stateParams, regLine) {\n var vm = this;\n vm.nav = navigation;\n\n vm.regLine = regLine.data.regLine;\n vm.commentContext = {\n commentType: 0,\n id: $stateParams.reglineId,\n lineStatus: vm.regLine.lineStatus,\n allowAdd: vm.regLine.status !== 2\n };\n\n vm.$onInit = () => {\n if (vm.regLine.id && vm.regLine.id > 0) {\n vm.nav(\"registrations/\" + vm.regLine.id + \"/comments\");\n }\n };\n }\n];\n","import {\n isEmpty,\n map,\n find\n} from \"lodash\";\nexport default [\"$log\", \"$uibModal\", \"$state\", \"$stateParams\", \"houseApi\",\n \"regLine\", \"contactApi\", \"toastr\", \"$scope\", \"registrationApi\", \"commonApi\",\n function ($log, $uibModal, $state, $stateParams, houseApi,\n regLine, contactApi, toastr, $scope, registrationApi, commonApi) {\n var vm = this;\n vm.regLine = regLine.data.regLine;\n vm.projects = regLine.data.projects;\n vm.regTypes = regLine.data.regTypes;\n vm.regStatuses = regLine.data.regStatuses;\n vm.regSources = regLine.data.regSources;\n vm.users = regLine.data.users;\n\n vm.houses = regLine.data.houses;\n vm.sections = regLine.data.sections;\n\n vm.houseDropDownDisabled = isEmpty(vm.houses);\n vm.regLineCategories = regLine.data.regLineCategories;\n // vm.productionGroups = regLine.data.productionGroups;\n\n vm.step1Done = false;\n vm.step2Done = false;\n\n $scope.$watch(\n \"vm.regLine\",\n function watchRegLine(newValue) {\n if (newValue) {\n\n vm.step1Done = newValue.projRegistrationProjTable;\n vm.step2Done = newValue.name && newValue.txt && newValue.regLineCategoryId &&\n newValue.timeLimit;\n }\n }, true\n );\n\n\n vm.changeProject = () => {\n houseApi.getHouses(vm.regLine.projRegistrationProjTable).then(res => {\n vm.houses = map(res.data.houses, h => {\n return {\n id: h.id,\n name: \"Bygg \" + h.houseNum,\n houseNumOrder: h.houseNumOrder\n // productionGroupId: h.productionGroupId\n };\n });\n \n\n var currentProject = find(vm.projects, {\n id: vm.regLine.projRegistrationProjTable\n });\n if (currentProject) {\n vm.regLine.projectName = currentProject.name;\n vm.regLine.regHeaderResponsible = currentProject.productionLeader;\n vm.regLine.regHeaderQaContactPersonId = currentProject.qa;\n } else {\n vm.regLine.regHeaderResponsible = undefined;\n vm.regLine.regHeaderQaContactPersonId = undefined;\n }\n\n vm.houseDropDownDisabled = isEmpty(vm.houses);\n });\n\n };\n vm.changeHouse = () => {\n houseApi.getSectionsInHouse(vm.regLine.projRegistrationPhase).then(res => {\n vm.sections = res.data.sections;\n });\n // const selectedHouse = vm.houses.find(x => x.id === vm.regLine.projRegistrationPhase);\n // vm.regLine.productionGroupId = selectedHouse.productionGroupId;\n };\n vm.changeSection = () => {\n var currentSection = find(vm.sections, {\n id: vm.regLine.projRegistrationSection\n });\n\n if (currentSection) {\n vm.regLine.address = currentSection.fullAddress;\n vm.regLine.regHeaderType = 0;\n } else {\n vm.regLine.address = undefined;\n vm.regLine.regHeaderType = 1;\n }\n };\n\n vm.setResponsible = item => {\n\n if (item && item.contactId) {\n vm.regLine.contactId = item.contactId;\n }\n };\n vm.save = () => {\n\n if (vm.comment) {\n vm.regLine.comments = [{\n text: vm.comment\n }];\n }\n commonApi.transformAttachments(vm.regLine.attachments);\n registrationApi.saveNewReg(vm.regLine).then(dto => {\n $state.go(\"main.reg.index\", {\n reglineId: dto.data.id\n });\n });\n };\n\n }\n];","export default [\"$log\", \"$uibModal\", \"$state\", \"$stateParams\", \"houseApi\",\n \"regLine\", \"contactApi\", \"toastr\", \"$scope\", \"registrationApi\", \"commonApi\",\n function ($log, $uibModal, $state, $stateParams, houseApi,\n regLine, contactApi, toastr, $scope, registrationApi, commonApi) {\n var vm = this;\n vm.regLine = regLine.data.regLine;\n vm.contacts = regLine.data.contacts;\n vm.contactPersons = regLine.data.contactPersons;\n vm.regStatuses = regLine.data.regStatuses;\n vm.regLineCategories = regLine.data.regLineCategories;\n\n\n $scope.$watch(\n \"vm.regLine\",\n function watchRegLine(newValue) {\n if (newValue) {\n\n\n vm.step2Done = newValue.name && newValue.txt && newValue.regLineCategoryId &&\n newValue.timeLimit;\n }\n }, true\n );\n vm.setResponsible = item => {\n if (item && item.contactId) {\n vm.regLine.contactId = item.contactId;\n }\n };\n\n vm.save = () => {\n\n\n if (vm.comment) {\n vm.regLine.comments = [{\n text: vm.comment\n }];\n }\n\n commonApi.transformAttachments(vm.regLine.attachments);\n\n\n registrationApi.addRegLine(vm.regLine).then(dto => {\n\n $state.go(\"main.reg.index\", {\n reglineId: dto.data.id\n });\n });\n };\n\n }\n];","import registrations from \"album/registrations/state\";\n//import registration from \"album/registration/state\";\n//import index from \"album/registration/index/state\";\n//import lines from \"album/registration/lines/state\";\n//import line from \"album/registration/lines/line/state\";\n//import lineindex from \"album/registration/lines/line/index/state\";\n//import comments from \"album/registration/lines/line/comments/state\";\n//import timeline from \"album/registration/lines/line/timeline/state\";\nimport regMain from \"album/registrations/reg/state\";\nimport regLine from \"album/registrations/reg/index/state\";\nimport regLineLog from \"album/registrations/reg/reglinelog/state\";\nimport regLineComments from \"album/registrations/reg/comments/state\";\nimport newReg from \"album/registrations/newreg/state\";\nimport newRegLine from \"album/registrations/newregline/state\";\n\n\nexport default [\n registrations,\n /* registration,\n index,\n lines,\n \n line,\n lineindex,\n comments,\n timeline, */\n regMain,\n regLine,\n regLineComments,\n regLineLog,\n newReg,\n newRegLine\n];","import ctrl from \"./ctrl\";\nimport html from \"./registrations.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.registrations\", {\n url: \"registrations\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Reklamasjoner\"\n },\n\n\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n\n}];","export default \"
\\n \\n \\n
\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./reg.html\";\n\n\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.reg\", {\n\n abstract: true,\n url: \"registrations/{reglineId}\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n breadcrumbProxy: \"main.registrations.index\"\n },\n resolve: {\n regLine: [\"registrationApi\", \"$stateParams\", (registrationApi, $stateParams) => {\n return registrationApi.getRegLine($stateParams.reglineId);\n }],\n paths: [\"regLine\", rl => {\n\n\n let customPath = [{\n route: \"main\",\n displayName: \"Hjem\"\n }, {\n route: \"main.registrations\",\n displayName: \"Reklamasjoner\"\n }];\n\n if (rl.data.regLine.projRegistrationProjTable) {\n customPath.push({\n route: \"main.projects.project.registrations\",\n displayName: rl.data.regLine.projRegistrationProjectName,\n param: {\n id: rl.data.regLine.projRegistrationProjTable\n }\n });\n }\n if (rl.data.regLine.projRegistrationSection) {\n customPath.push({\n route: \"main.projects.project.house.sections.section.registrations\",\n displayName: \"Seksjon \" + rl.data.regLine.projRegistrationProjSectionSectionNum,\n param: {\n id: rl.data.regLine.projRegistrationProjTable,\n ppId: rl.data.regLine.projRegistrationPhase,\n sectionId: rl.data.regLine.projRegistrationSection\n }\n });\n }\n\n\n customPath.push({\n route: \"main.reg.index\",\n displayName: rl.data.regLine.name\n });\n\n return customPath;\n }]\n },\n views: {\n\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n\n }\n\n\n });\n\n}];","export default \"\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\n\n\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.reg.index\", {\n url: \"\",\n\n data: {\n requiresLogin: true\n },\n\n aData: {\n customBreadCrumb: \"{{paths}}\"\n },\n\n\n views: {\n \"reglinecontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n\n}];","export default \"
\\n
\\n
\\n
\\n

{{ vm.regLine.name }}

\\n Vis\\n header\\n \\n
\\n\\n \\n
\\n Vis header\\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n

Prosjekt

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n \\n\\n

Ansvar

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n

Status

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n\\n\\n
\\n\\n
\\n \\n Reklamasjon opprettet etter at reklamasjonsfrist var utgått\\n
\\n
\\n
\\n\\n
\\n
\\n

Reklamasjon

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n \\n
\\n \\n
\\n\\n \\n \\n\\n
\\n
\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n Lagre \\n

\\n Sist oppdatert {{ vm.regLine.updatedString }}\\n

\\n
\\n
\\n
\\n
\\n
\\n
\\n

\\n Vedlegg\\n

\\n \\n
\\n
\\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./comments.html\";\n\n\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.reg.comments\", {\n url: \"/comments\",\n\n data: {\n requiresLogin: true\n },\n\n aData: {\n customBreadCrumb: \"{{commentsPath}}\"\n },\n resolve: {\n commentsPath: [\"paths\", (paths) => {\n\n\n return paths.concat({\n route: \"main.reg.comments\",\n displayName: \"Kommentarer\"\n });\n\n }]\n },\n\n\n views: {\n \"reglinecontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n\n}];","export default \"\";","import ctrl from \"./ctrl\";\nimport html from \"./reglinelog.html\";\n\n\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.reg.reglinelog\", {\n url: \"/log\",\n\n data: {\n requiresLogin: true\n },\n\n aData: {\n customBreadCrumb: \"{{logPath}}\"\n },\n resolve: {\n logPath: [\"paths\", (paths) => {\n\n\n return paths.concat({\n route: \"main.reg.reglinelog\",\n displayName: \"Logg\"\n });\n\n }],\n regLineLog: [\"registrationApi\", \"$stateParams\", function (registrationApi, $stateParams) {\n return registrationApi.getRegLineLog($stateParams.reglineId);\n }]\n },\n\n\n views: {\n \"reglinecontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n\n}];","export default \"
\\n
\\n
{{log.changedDate | date :'dd.MM.yyyy HH:mm'}} av\\n {{log.changedBy}}\\n Opprettet\\n
\\n
Opprettet
\\n

\\n

Satt \\\"{{change.key}}\\\" til {{change.value}}

\\n

\\n
\\n
\\n
{{log.changedDate | date :'dd.MM.yyyy HH:mm'}} av\\n {{log.changedBy}}\\n Endring\\n
\\n\\n
{{log.changes.length}} endring(er)
\\n

\\n

Endret \\\"{{change.key}}\\\" til {{change.value}}

\\n

\\n
\\n
\\n
{{log.changedDate | date :'dd.MM.yyyy HH:mm'}} av\\n {{log.changedBy}}\\n Kommentar\\n
\\n\\n

\\n

Kommenterte: {{log.text}}

\\n

\\n
\\n
\\n
{{log.changedDate | date :'dd.MM.yyyy HH:mm'}} av\\n {{log.changedBy}}\\n Varsel\\n
\\n

\\n

Varsel: {{log.text}} sendt til {{log.to}}

\\n

\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./newreg.html\";\n\n\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.registrations.newreg\", {\n url: \"/newreg\",\n params: {\n projectId: null,\n houseId: null,\n sectionId: null\n },\n\n data: {\n requiresLogin: true\n },\n\n aData: {\n name: \"Ny reklamasjon\"\n },\n resolve: {\n regLine: [\"registrationApi\", \"$stateParams\", (registrationApi, $stateParams) => {\n return registrationApi.getNewRegLine({\n projRegistrationProjTable: $stateParams.projectId,\n projRegistrationPhase: $stateParams.houseId,\n projRegistrationSection: $stateParams.sectionId\n });\n }]\n },\n\n\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n\n}];","export default \"
\\n
\\n
\\n

Ny reklamasjon

\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n
\\n\\n
\\n \\n {{\\n $select.selected.name\\n }}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n
\\n \\n Reklamasjon opprettet etter at reklamasjonsfrist var utgått\\n
\\n\\n
\\n

\\n Du må fylle ut prosjekt for å komme\\n videre\\n

\\n
\\n\\n
\\n
\\n

Reklamasjon innhold

\\n

\\n Du må fylle ut tittel, beskrivelse,\\n kategori og tidsfrist for å lagre reklamasjon\\n

\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n \\n
\\n\\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n \\n \\n\\n
\\n
\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n \\n\\n\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n \\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./newregline.html\";\n\n\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.registrations.newregline\", {\n url: \"/{regHeaderId}/newregline\",\n data: {\n requiresLogin: true\n },\n\n aData: {\n customBreadCrumb: \"{{newRegLinePath}}\"\n },\n resolve: {\n regLine: [\"registrationApi\", \"$stateParams\", (registrationApi, $stateParams) => {\n return registrationApi.getNewRegLine({\n regHeaderId: $stateParams.regHeaderId\n });\n }],\n newRegLinePath: [\"regLine\", rl => {\n\n\n let customPath = [{\n route: \"main\",\n displayName: \"Hjem\"\n }, {\n route: \"main.registrations\",\n displayName: \"Reklamasjoner\"\n }];\n\n customPath.push({\n route: \"main.registrations.newregline\",\n displayName: rl.data.regLine.lineIndexLineId\n });\n\n\n return customPath;\n }]\n },\n\n\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n\n}];","export default \"
\\n
\\n
\\n

\\n Legg til reklamasjon\\n

\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n\\n\\n
\\n
\\n \\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n\\n \\n \\n\\n\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n

\\n Du må fylle ut tittel,beskrivelse,\\n kategori og tidsfrist for å lagre reklamasjon\\n

\\n
\\n
\\n\\n
\\n \\n
\\n
\\n
\";","export default [\"$log\", \"checklists\", \"$state\", \"$confirm\", \"checklistApi\",\n function ($log, checklists, $state, $confirm, checklistApi) {\n\n var vm = this;\n\n vm.checklists = checklists.data;\n\n vm.deleteCheckList = function (checklist) {\n\n $confirm({\n text: \"Sikker på at du vil slette sjekklisten?\"\n })\n .then(function () {\n\n checklistApi.deleteCheckList(checklist).then(function () {\n $state.reload();\n });\n });\n\n\n };\n }\n];","import { forEach, isEmpty, isNumber, reject, filter, maxBy } from \"lodash\";\nimport uuidv4 from \"uuid/v4\";\nexport default [\n \"$log\",\n \"$state\",\n \"$stateParams\",\n \"checklistData\",\n \"checklistApi\",\n \"$confirm\",\n function (\n $log,\n $state,\n $stateParams,\n checklistData,\n checklistApi,\n $confirm\n ) {\n var vm = this;\n vm.checklist = checklistData.data.chkList;\n vm.checklistDiscrepancyTypes = checklistData.data.checklistDiscrepancyTypes;\n vm.checklistItemTypes = checklistData.data.checklistItemTypes;\n vm.contextTypes = checklistData.data.contextTypes;\n vm.tradeCodes = checklistData.data.tradeCodes;\n vm.projTypes = checklistData.data.projTypes;\n\n vm.saveChecklist = function () {\n vm.checklist.items = filter(vm.checklist.items, function (i) {\n return !isEmpty(i.txt);\n });\n\n forEach(vm.checklist.items, function (i) {\n i.html = \"

\" + i.txt + \"

\";\n });\n\n checklistApi.saveChecklist(vm.checklist).then(function (res) {\n $state.go(\n \"main.checklists.edit\",\n {\n checklistId: res.data.id\n },\n {\n reload: true\n }\n );\n });\n };\n\n vm.itemMoved = function (i) {\n vm.checklist.items.splice(i, 1);\n var updateReq = [];\n forEach(vm.checklist.items, function (a, i) {\n var sb = i + 1;\n\n a.sortBy = sb;\n updateReq.push({\n id: a.id,\n sortBy: sb,\n status: a.status\n });\n });\n };\n\n vm.deleteItem = function (item) {\n $confirm({\n text: \"Vil du slette punktet ?\"\n }).then(function () {\n if (item.id) {\n checklistApi.deleteChecklistItem(item).then(function () {\n $state.reload();\n });\n } else {\n vm.checklist.items = reject(vm.checklist.items, n => {\n return n.random === item.random;\n });\n }\n });\n };\n\n vm.addItem = function () {\n vm.checklist.items = vm.checklist.items || [];\n\n forEach(vm.checklist.items, function (i) {\n i.visible = false;\n });\n\n var lastItemBySortBy = maxBy(vm.checklist.items, \"sortBy\") || {\n sortBy: 0\n };\n var newIndex = isNumber(lastItemBySortBy.sortBy)\n ? lastItemBySortBy.sortBy + 1\n : 0;\n\n var newItem = {\n id: 0,\n sortBy: newIndex,\n random: uuidv4(),\n type: 0,\n visible: true,\n placeHolder: \"Punkt \" + Number(vm.checklist.items.length + 1)\n };\n\n vm.checklist.items.push(newItem);\n };\n }\n];\n","export default [\n \"$log\",\n \"$state\",\n \"$stateParams\",\n \"checklist\",\n function ($log, $state, $stateParams, checklist) {\n var vm = this;\n vm.checklist = checklist.data.checklist;\n if (\n checklist.data.actionAberrationId &&\n vm.checklist.discrepancyType == 2\n ) {\n vm.checklist.items.forEach((i) => {\n i.actionAberrationId = checklist.data.actionAberrationId;\n\n if (checklist.data.itemActions) {\n let info = checklist.data.itemActions\n .filter((a) => a.key === i.id)\n .map((x) => x.value);\n i.actionsInfo = info.join();\n } else {\n i.actionsInfo = null;\n }\n });\n }\n\n if ($stateParams.contextId) {\n vm.haveContext = true;\n }\n }\n];\n","import signaturectrl from \"shared/protocolsignature\";\nimport signaturehtml from \"shared/protocolsignature.html\";\n\nimport { remove, findIndex, reject, forEach } from \"lodash\";\nimport saveFile from \"shared/saveFile\";\n\nexport default [\n \"checklist\",\n \"$state\",\n \"$stateParams\",\n \"store\",\n \"checklistApi\",\n \"$confirm\",\n \"haveRoleFilter\",\n \"$uibModal\",\n function (\n checklist,\n $state,\n $stateParams,\n store,\n checklistApi,\n $confirm,\n haveRole,\n $uibModal\n ) {\n function openSignature(sig, readonly) {\n var modalInstance = $uibModal.open({\n template: signaturehtml,\n backdrop: \"static\",\n controllerAs: \"modalvm\",\n size: \"lg\",\n resolve: {\n readonly: [\n function () {\n return readonly;\n }\n ],\n personsPresent: [\n function () {\n return [\n {\n name: \"Kunde\"\n },\n {\n name: \"Trysilhus\"\n }\n ];\n }\n ],\n sig: [\n function () {\n return sig || {};\n }\n ]\n },\n controller: signaturectrl\n });\n\n return modalInstance;\n }\n\n var vm = this;\n var profile = store.get(\"profile\");\n var checklistAdmin = haveRole([\"PRL\", \"PL\", \"Sales\", \"AddChecklist\"], \"any\");\n vm.checklist = checklist.data.checklist;\n vm.contextState = checklist.data.contextState;\n vm.contactPersons = checklist.data.contactPersons;\n vm.bluePrints = checklist.data.bluePrints || [];\n vm.disableSave = vm.checklist.signature;\n vm.bluePrintTotalCount = checklist.data.totalBluePrintCount;\n vm.aberrationCategories = checklist.data.aberrationCategories;\n\n var isAssignedToMe =\n vm.checklist.task &&\n vm.checklist.task.assignedTo == profile.contactPersonId;\n\n vm.enableSaveAndComplete =\n vm.checklist.completedDate === undefined &&\n (checklistAdmin || isAssignedToMe);\n\n vm.disableInput = vm.checklist.completedDate !== undefined;\n\n vm.checklistAdmin = checklistAdmin;\n\n vm.haveContext = $stateParams.contextId;\n vm.task = vm.haveContext && true;\n\n vm.reloadBluePrints = function () {\n checklistApi\n .removeBluePrintCache(vm.checklist.projectId)\n .then(function () {\n $state.reload();\n });\n };\n vm.downloadPdf = function () {\n checklistApi.downloadPdf(vm.checklist.id).then(res => {\n saveFile(res);\n });\n };\n\n vm.signature = function (sig) {\n var readonly = sig && sig.id && sig.id !== 0;\n\n openSignature(sig, readonly).result.then(function (signature) {\n if (signature) {\n vm.checklist.signatures = vm.checklist.signatures || [];\n\n if (signature.delete) {\n vm.checklist.signatures = reject(\n vm.checklist.signatures,\n function (p) {\n return p.uuid === signature.uuid;\n }\n );\n } else {\n var index = findIndex(vm.checklist.signatures, {\n uuid: signature.uuid\n });\n\n if (index === -1) {\n vm.checklist.signatures.push(signature);\n } else {\n vm.checklist.signatures.splice(index, 1, signature);\n }\n }\n }\n });\n };\n\n vm.deleteItem = function (item) {\n remove(vm.checklist.items, item);\n forEach(vm.checklist.items, (item, index) => {\n item.sortBy = index + 1;\n });\n };\n vm.save = function () {\n\n if (vm.checklist.isTemplate && vm.haveContext) {\n vm.checklist.context = parseInt($stateParams.context);\n vm.checklist.contextId = $stateParams.contextId;\n\n switch (vm.checklist.context) {\n case 1:\n vm.checklist.projectId = vm.checklist.contextId;\n break;\n case 2:\n vm.checklist.houseId = vm.checklist.contextId;\n break;\n case 3:\n vm.checklist.sectionId = vm.checklist.contextId;\n break;\n }\n }\n\n if (vm.checklist.task) {\n vm.checklist.task.name = \"dummy\";\n }\n\n checklistApi\n .saveChecklistInContext(vm.checklist)\n .then(function (res) {\n $state.go(\n \"main.checklists.checklist.index\",\n {\n checklistId: res.data.id,\n parentCheckList: null,\n contextId: checklistApi.getContextId(res.data)\n },\n {\n reload: true\n }\n );\n });\n };\n\n vm.completeChecklist = function () {\n $confirm({\n text:\n \"Sikker på at du vil fullføre sjekklisten? Du kan ikke endre sjekklisten når den først er fullført\"\n }).then(function () {\n vm.checklist.completedDate = new Date();\n vm.save();\n });\n };\n\n vm.addRegLine = function () {\n vm.checklist.regLines = vm.checklist.regLines || [];\n vm.checklist.regLines.push({ id: 0 });\n };\n\n vm.visibleToCustomer = function () {\n $confirm({\n text: \"Synliggjøre denne sjekklisten i Mitt Trysilhus for seksjonens kunder?\"\n })\n .then(function () {\n\n checklistApi.postVisibleToCustomer(vm.checklist.id, true)\n .then(function () {\n $state.reload();\n });\n });\n };\n }\n];\n","export default [\n \"$log\",\n \"checklist\",\n \"checklists\",\n function ($log, checklist, checklists) {\n var vm = this;\n vm.checklists = checklists.data;\n vm.checklist = checklist.data.checklist;\n }\n];","import checklists from \"album/checklists/state\";\nimport edit from \"album/checklists/edit/state\";\nimport checklist from \"album/checklists/checklist/state\";\nimport index from \"album/checklists/checklist/index/state\";\nimport finished from \"album/checklists/checklist/finished/state\";\n\n\nexport default [\n checklists,\n edit,\n checklist,\n index,\n finished\n];","import ctrl from \"./ctrl\";\nimport html from \"./checklists.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.checklists\", {\n url: \"checklists\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Sjekklister\"\n },\n resolve: {\n checklists: [\n \"checklistApi\",\n function (checklistApi) {\n return checklistApi.getChecklists();\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n \\n \\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n
IdSjekklisteTypeKonseptFagområdeOpprettetOppdatert
{{chk.id}}{{chk.name}}\\n {{chk.parentString}}{{chk.projTypeName}}{{chk.tradeCodeName}}{{chk.createdString}}{{chk.updatedString}}\\n \\n \\n
\\n
\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./edit.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.checklists.edit\", {\n url: \"/editchecklist/{checklistId}\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{checklistData.data.chkList.name || 'Ny sjekkliste'}}\"\n },\n\n resolve: {\n security: [\n \"userApi\",\n function (userApi) {\n return userApi.authorized([\"Admin\", \"PL\", \"PRL\", \"Sales\"]);\n }\n ],\n checklistData: [\n \"checklistApi\",\n \"$stateParams\",\n function (checklistApi, $stateParams) {\n return checklistApi.editChecklist($stateParams.checklistId);\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n }\n });\n}];","export default \"
\\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n\\n
\\n \\n\\n \\n\\n\\n
\\n\\n
\\n \\n\\n\\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n\\n \\n \\n \\n\\n
\\n \\n \\n
\\n\\n \\n \\n \\n\\n\\n\\n \\n\\n\\n\\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./checklist.html\";\nexport default [\n \"$stateProvider\",\n function ($stateProvider) {\n $stateProvider.state(\"main.checklists.checklist\", {\n url: \"/checklist/{checklistId}?contextId&context&parentCheckList\",\n abstract: true,\n data: {\n requiresLogin: true\n },\n aData: {\n breadcrumbProxy: \"main.checklists.checklist.index\"\n },\n resolve: {\n checklist: [\n \"checklistApi\",\n \"$stateParams\",\n function (checklistApi, $stateParams) {\n return checklistApi.getChecklist({\n checklistId: $stateParams.checklistId,\n contextId: $stateParams.contextId,\n parentCheckList: $stateParams.parentCheckList\n });\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n \\n
\\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.checklists.checklist.index\", {\n url: \"/index\",\n data: {\n requiresLogin: true\n },\n\n aData: {\n name: \"{{checklist.data.checklist.name}}\",\n customBreadCrumb: \"{{checklist.data.path}}\",\n checkListContext: \"{{checklist.data.contextState}}\"\n },\n\n views: {\n \"checklistcontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n

{{vm.checklist.name}}

\\n
\\n \\n \\n\\n \\n\\n \\n
\\n
\\n
\\n Dette er en\\n mal og kan ikke fylles ut, brukes bare for å vise frem hvordan sjekklisten\\n vil se ut\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n
\\n \\n {{$select.selected.value}}\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n\\n\\n\\n
\\n
\\n \\n \\n
\\n
\\n\\n\\n\\n\\n\\n\\n
\\n
\\n

Signaturer

\\n
\\n \\n
\\n
\\n \\n
\\n\\n
\\n
\\n\\n\\n\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n

Siste oppdatert {{vm.checklist.updatedString}}

\\n
\\n
\\n

\\n Sjekkliste fullført {{vm.checklist.completedString}}\\n

\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./finished.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.checklists.checklist.finished\", {\n url: \"/finished\",\n data: {\n requiresLogin: true\n },\n\n aData: {\n name: \"Utfylte sjekklister\"\n },\n resolve: {\n checklists: [\"checklistApi\", \"$stateParams\", function (checklistApi, $stateParams) {\n return checklistApi.getChecklistsFilled($stateParams.checklistId);\n }]\n },\n views: {\n \"checklistcontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n \\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n
IdHvorOpprettetOppdatert
{{chk.id}}{{chk.contextString}}{{chk.createdString}}{{chk.updatedString}}
\\n
\\n \\n
\";","import saveFile from \"shared/saveFile\";\nexport default [\n \"$log\",\n \"customerApi\",\n function($log, customerApi) {\n var currentTableState;\n var vm = this;\n\n vm.getCustomers = function(tableState) {\n currentTableState = tableState;\n customerApi.getCustomersPaged(currentTableState).then(function(res) {\n vm.customers = res.data.items;\n currentTableState.pagination.numberOfPages = res.data.totalPages;\n currentTableState.pagination.totalItemCount = res.data.totalItemCount;\n vm.totalPages = res.data.totalPages;\n });\n };\n\n vm.exportTable = function() {\n customerApi.exportTable(currentTableState).then(res => {\n saveFile(res, \"Kunder.xlsx\");\n });\n };\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./customers.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.customers\", {\n url: \"customers\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Kunder\"\n },\n views: {\n \"@\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdProsjektNavnMobilEpostStatusKildeSannsynlighetOpprettet
\\n \\n \\n \\n
{{c.accountNum}}\\n {{ c.project }}\\n {{c.fullName}}\\n {{c.mobile}}{{c.email}}{{c.customerStatus}}{{c.sourceString}}{{c.probability}} \\n %{{c.created | date:'dd.MM.yyyy'}}
\\n
\\n\\n \\n
\";","import elasticQuery from \"./search.json\";\n\nexport default [\n \"$state\",\n \"$stateParams\",\n \"searchApi\",\n\n function($state, $stateParams, searchApi) {\n elasticQuery.query.bool.must[0].query_string.query = $stateParams.phone;\n\n searchApi\n .headerSearch({\n elasticQuery: JSON.stringify(elasticQuery)\n })\n .then(response => {\n if (response.data.hits.total === 1) {\n $state.go(\"main.customers.customer.index\", {\n id: response.data.hits.hits[0]._source.customerId\n });\n } else {\n $state.go(\"main.search\", { st: $stateParams.phone });\n }\n });\n }\n];\n","export default [\n \"customerApi\",\n \"$state\",\n function(customerApi, $state) {\n var vm = this;\n\n vm.addCustomer = function() {\n customerApi.createCustomer(vm.customer).then(function(res) {\n $state.go(\"main.customers.customer.index\", {\n id: res.data.customerId\n });\n });\n };\n }\n];\n","import {\n find\n} from \"lodash\";\nexport default [\n \"$log\",\n \"customer\",\n \"$state\",\n \"duplicates\",\n function ($log, customer, $state, duplicates) {\n var vm = this;\n vm.customer = customer;\n\n var anyCustomer = find(vm.customer.projCustomers, {\n projCustStatus: 1\n });\n if (anyCustomer) {\n vm.customer.customerStatus = 1;\n }\n\n vm.haveDuplicates = duplicates.length > 0;\n\n }\n];","export default [\"documents\", \"blobDocuments\", \"$log\", \"customer\", function (documents, blobDocuments, $log, customer) {\n var vm = this;\n\n vm.customer = customer;\n vm.documents = documents.data;\n vm.blobDocuments = blobDocuments.data;\n\n}];","export default [\"$log\", \"customer\", function ($log, customer) {\n\n var vm = this;\n\n\n vm.customer = customer;\n\n\n vm.persistKey = \"customer_registrations_\" + customer.id;\n\n vm.regContext = {\n disableAdd: true,\n customerId: customer.id\n };\n\n\n}];","export default [\n \"customer\",\n \"userApi\",\n \"$timeout\",\n \"moment\",\n function (customer, userApi, $timeout, moment) {\n var vm = this;\n vm.personId = customer.person.id;\n\n vm.fromDate = moment().add(-1, \"years\");\n vm.toDate = moment();\n vm.mobile = customer.person.mobile;\n vm.email = customer.person.email;\n vm.currentPage = 1;\n vm.pageSize = 10;\n\n vm.fetch = function () {\n var request = {\n page: vm.currentPage,\n from: vm.fromDate,\n to: vm.toDate,\n pageSize: vm.pageSize,\n mobile: customer.person.mobile,\n phone: customer.person.phone,\n email: customer.person.email,\n custTable: customer.id\n };\n\n userApi.getLog(request).then(function (result) {\n vm.logs = result.data.messages;\n vm.count = result.data.count;\n vm.fromDate = result.data.fromDate;\n vm.toDate = result.data.toDate;\n });\n };\n\n $timeout(function () {\n vm.fetch();\n }, 0);\n }\n];\n","import {\n map,\n uniqBy\n} from \"lodash\";\nexport default [\n \"customer\",\n \"$log\",\n \"noteApi\",\n \"contactApi\",\n \"$state\",\n \"notes\",\n \"toastr\",\n \"$confirm\",\n \"albumConfig\",\n function (customer, $log, noteApi, contactApi, $state, notes, toastr, $confirm, albumConfig) {\n var vm = this;\n vm.notes = notes.data;\n vm.apiAddress = albumConfig.apiAddress;\n vm.deleteNote = function (note) {\n $confirm({\n text: \"Vil du slette notatet?\"\n }).then(function () {\n noteApi.deleteNote(note).then(function () {\n $state.reload();\n });\n });\n };\n\n var projCustomers = map(uniqBy(customer.projCustomers, \"projTable\"), function (pc) {\n return {\n name: pc.projectName,\n id: pc.id\n };\n });\n\n vm.editNote = function (note) {\n noteApi\n .noteModal({\n note: note,\n projCustomers: []\n })\n .result.then(function (note) {\n if (note.note) {\n\n noteApi.editNote(note.note).then(function () {\n $state.reload();\n });\n }\n });\n };\n\n vm.addNote = function () {\n noteApi\n .noteModal({\n note: {},\n projCustomers: projCustomers\n })\n .result.then(function (note) {\n if (note.note) {\n\n noteApi.addNote(note.note).then(function () {\n $state.reload();\n });\n }\n });\n };\n\n vm.openProfileImg = function (firstName, lastName, imageUrl) {\n contactApi\n .profileModal({\n firstName: firstName,\n lastName: lastName,\n imageUrl: imageUrl\n })\n .result.then(function () {\n });\n };\n vm.tstamp = new Date().getTime();\n }\n];","import {\n forEach,\n countBy,\n uniqBy,\n filter\n} from \"lodash\";\nexport default [\n \"customer\",\n \"duplicates\",\n \"$log\",\n \"customerApi\",\n \"$state\",\n function (customer, duplicates, $log, customerApi, $state) {\n var vm = this;\n\n vm.anySelected = function () {\n var toMerge = countBy(vm.duplicates, \"merge\");\n return toMerge[\"true\"] > 0;\n };\n vm.customer = customer;\n\n vm.duplicates = uniqBy(duplicates, \"customerId\");\n vm.mergeCustomers = function () {\n forEach(\n filter(vm.duplicates, {\n merge: true\n }),\n function (d) {\n customerApi.mergeCustomer(d.customerId, vm.customer.id).then(function () {\n $state.go(\n \"main.customers.customer.index\", {\n id: vm.customer.id\n }, {\n reload: true\n }\n );\n });\n }\n );\n };\n }\n];","export default [\"customer\", \"$log\", \"customerApi\", \"tasks\", \"$state\",\n function (customer, $log, customerApi, tasks, $state) {\n\n\n var vm = this;\n\n vm.customer = customer;\n vm.tasks = tasks.data;\n vm.addTask = function () {\n\n var taskProjectId;\n var taskSectionId;\n if (vm.customer.projCustomers.length === 1) {\n taskProjectId = vm.customer.projCustomers[0].projTable;\n taskSectionId = vm.customer.projCustomers[0].projSectionId;\n }\n\n $state.go(\"main.tasks.edit\", {\n taskId: \"-1\",\n createTask: {\n projectId: taskProjectId,\n customerId: vm.customer.id,\n sectionId: taskSectionId\n\n }\n });\n };\n }\n];","import { map, filter } from \"lodash\";\nexport default [\n \"customer\",\n \"$log\",\n \"noteApi\",\n \"$state\",\n \"toastr\",\n \"$confirm\",\n \"haveRoleFilter\",\n \"userApi\",\n \"externalUser\",\n \"existingUserCheck\",\n function (\n customer,\n $log,\n noteApi,\n $state,\n toastr,\n $confirm,\n haveRole,\n userApi,\n externalUser,\n existingUserCheck\n ) {\n var vm = this;\n\n vm.customer = customer;\n vm.externalUser = externalUser.data;\n var externalUserExists = vm.externalUser.user_id !== undefined;\n\n //vm.existingUser = !externalUserExists && existingUserCheck.data;\n\n var userHaveLoggedIn = vm.externalUser.logins_count > 0;\n\n var sectionsOwned = map(\n filter(vm.customer.projCustomers, function (pc) {\n return pc.projCustStatus === 1;\n }),\n function (pc) {\n return pc.projSection;\n }\n );\n\n vm.showAddExternalUser =\n !externalUserExists &&\n sectionsOwned.length > 0 &&\n haveRole([\"Support\", \"Sales\", \"KK\"], \"any\");\n vm.showChangePasswordEmail =\n externalUserExists &&\n userHaveLoggedIn &&\n sectionsOwned.length > 0 &&\n haveRole([\"Support\", \"Sales\", \"KK\"], \"any\");\n vm.showSendNewWelcomeEmail =\n externalUserExists &&\n !userHaveLoggedIn &&\n sectionsOwned.length > 0 &&\n haveRole([\"Support\", \"Sales\", \"KK\"], \"any\");\n\n vm.userCannotBeCreated = !externalUserExists && sectionsOwned.length === 0;\n\n vm.isStringEqual = function (a, b) {\n return typeof a === \"string\" && typeof b === \"string\"\n ? a.localeCompare(b, undefined, { sensitivity: \"accent\" }) === 0\n : a === b;\n };\n\n if (vm.customer.person.email != null && vm.externalUser.email != null) {\n vm.userNameWarning = !vm.isStringEqual(vm.customer.person.email, vm.externalUser.email) ? \"Brukernavnet på mitt.trysilhus.no er ikke det samme som e-post adresse i Album\" : null;\n }\n\n vm.changePasswordEmail = function () {\n $confirm({\n text:\n \"Vil du sende e-post om å bytte passord for mitt.trysilhus.no?\" +\n \"\\n Dette vil medføre at e-post blir sendt til kunde\"\n }).then(function () {\n userApi.changePasswordEmail(\"MittTrysilhus\", vm.customer.person).then(\n function () {\n toastr.info(\"E-post sendt\");\n $state.reload();\n },\n function () {\n toastr.error(\"Noe gikk galt når e-post ble sendt. Feil logget\");\n }\n );\n });\n };\n\n vm.newWelcomeEmail = function () {\n $confirm({\n text:\n \"Vil du sende velkomstepost på nytt ?\" +\n \"\\n Dette vil medføre at e-post blir sendt til kunde\"\n }).then(function () {\n userApi.changePasswordEmail(\"MittTrysilhus\", vm.customer.person).then(\n function () {\n toastr.info(\"E-post sendt\");\n $state.reload();\n },\n function () {\n toastr.error(\"Noe gikk galt når e-post ble sendt. Feil logget\");\n }\n );\n });\n };\n\n vm.createExternalUser = function () {\n $confirm({\n text:\n \"Vil du opprette en bruker til mitt.trysilhus.no?\" +\n \"\\n Dette vil medføre at e-post blir sendt til kunde\"\n }).then(function () {\n userApi.createExternalUser(\"MittTrysilhus\", vm.customer.person).then(\n function () {\n toastr.info(\"Bruker opprettet.\");\n $state.reload();\n },\n function () {\n toastr.error(\"Noe gikk galt når bruker skulle bli opprettet!. Feil logget\");\n }\n );\n });\n };\n\n vm.changeExternalUserName = function () {\n $confirm({\n text:\n `Vil du endre brukernavn?\\n\\nFra: ${vm.externalUser.email}\\nTil: ${vm.customer.person.email}`\n }).then(function () {\n vm.externalUser.new_email = vm.customer.person.email;\n userApi.changeExternalUser(\"MittTrysilhus\", vm.externalUser).then(\n function () {\n toastr.info(\"Brukernavn endret\");\n $state.reload();\n },\n function () {\n toastr.error(\"Noe gikk galt når brukernavn skulle endres. Feil logget\");\n }\n );\n });\n };\n\n vm.deleteExternalUser = function () {\n userApi.deleteExternalUser(\"MittTrysilhus\", vm.customer.person).then(function (res) {\n toastr.info(\"Bruker slettet\");\n $state.reload();\n });\n };\n\n /* var projCustomers = map(customer.projCustomers, function (pc) {\n return {\n name: pc.projectName,\n id: pc.id\n };\n }); */\n }\n];\n","import customers from \"album/customers/state\";\nimport findcustomer from \"album/customers/find/state\";\nimport add from \"album/customers/add/state\";\nimport customer from \"album/customer/state\";\nimport index from \"album/customer/index/state\";\nimport documents from \"album/customer/documents/state\";\nimport registrations from \"album/customer/registrations/state\";\nimport log from \"album/customer/log/state\";\nimport notes from \"album/customer/notes/state\";\nimport duplicates from \"album/customer/duplicates/state\";\nimport tasks from \"album/customer/tasks/state\";\nimport mt from \"album/customer/mt/state\";\n\nexport default [\n customers,\n findcustomer,\n add,\n customer,\n index,\n documents,\n registrations,\n log,\n notes,\n duplicates,\n tasks,\n mt\n];\n","import ctrl from \"./ctrl.js\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.customers.find\", {\n url: \"/find?phone\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Finn kunde\"\n },\n\n views: {\n \"@\": {\n controller: ctrl\n }\n }\n });\n }\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./add.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.addcustomer\", {\n url: \"addcustomer\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Registrering av ny interessent\"\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n\n\n });\n}];","export default \"
\\n
\\n \\n \\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./customer.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.customers.customer\", {\n url: \"/customer/{id}\",\n abstract: true,\n data: {\n requiresLogin: true,\n note: true\n },\n aData: {\n breadcrumbProxy: \"main.customers.customer.index\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n },\n\n resolve: {\n data: [\n \"customerApi\",\n \"$stateParams\",\n function (customerApi, $stateParams) {\n return customerApi.getCustomer($stateParams.id).then(customerResponse => {\n return customerResponse.data;\n });\n }\n ],\n\n customer: [\n \"data\",\n function (data) {\n return data.customer;\n }\n ],\n\n duplicates: [\n \"data\",\n function (data) {\n return data.duplicates;\n }\n ]\n }\n });\n}];","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n\\n
\";","export default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.customers.customer.index\", {\n url: \"/index\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{customer.person.fullName}}\"\n },\n\n views: {\n \"customercontent\": {\n component: \"albumCustomerPage\"\n }\n }\n });\n}];","import ctrl from \"./ctrl\";\nimport html from \"./documents.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.customers.customer.documents\", {\n url: \"/documents\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Dokumenter\"\n },\n\n views: {\n \"customercontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n\n resolve: {\n documents: [\"customerApi\", \"customer\", function (customerApi, customer) {\n return customerApi.getCustomerDocuments(customer.id);\n }],\n blobDocuments: [\"customerApi\", \"customer\", function (customerApi, customer) {\n return customerApi.getCustomerBlobDocuments(customer.id);\n }]\n }\n });\n}];","export default \"\";","import ctrl from \"./ctrl\";\nimport html from \"./registrations.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.customers.customer.registrations\", {\n url: \"/registrations\",\n data: {\n requiresLogin: true,\n titleText: \"Reklamasjoner {{customer.person.fullName }}\"\n },\n aData: {\n name: \"Reklamasjoner\"\n },\n views: {\n \"customercontent\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n\n\n });\n}];","export default \"
Ingen reklamasjoner registrert
\\n
\\n \\n \\n
\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./log.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.customers.customer.log\", {\n url: \"/log\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Logg\"\n },\n\n views: {\n customercontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n
\\n

\\n Ingen loggoppføringer på disse datoene for mobilnummer {{ vm.mobile }} eller epost {{vm.email}}\\n

\\n
\\n
\\n\\n
\\n
\\n {{ log.timestamp | date: \\\"yyyy dd.MM HH:mm\\\" }} {{ log.subject }}\\n {{log.status}}\\n SMS\\n Epost\\n Status\\n Kundesenter\\n
\\n
\\n \\n

\\n Fra: {{log.from}}\\n \\n \\n

\\n \\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./notes.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.customers.customer.notes\", {\n url: \"/notes\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Notater \"\n },\n\n views: {\n \"customercontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n security: [\n \"userApi\",\n function (userApi) {\n return userApi.authorized([\"Sales\", \"SalesAdmin\"]);\n }\n ],\n notes: [\"noteApi\", \"customer\", function (noteApi, customer) {\n\n return noteApi.getNotes(customer.id, 1);\n\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n

Notater

\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n

{{pcn.name}}

\\n
\\n
\\n
\\n \\n

{{note.createdString}}

\\n
\\n
\\n

{{note.noteText}}

\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./duplicates.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.customers.customer.duplicates\", {\n url: \"/duplicates\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Duplikater \"\n },\n\n views: {\n \"customercontent\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n }\n\n\n });\n}];","export default \"
\\n \\n
\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
FraTilType
{{d.fullName}} ({{d.customerId}}){{vm.customer.person.fullName}}\\n ({{vm.customer.id}})\\n Mobil\\n Epost\\n \\n
\\n \\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./tasks.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.customers.customer.tasks\", {\n url: \"/tasks\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Oppgaver \"\n },\n\n views: {\n \"customercontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n },\n resolve: {\n tasks: [\"taskApi\", \"customer\", function (taskApi, customer) {\n\n return taskApi.getCustomerTasks(customer.id);\n\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n Ingen oppgaver funnet\\n
\\n
\\n
\\n \\n
\\n 0\\\">\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnFristAnsvarligFullført
{{t.name}} {{t.deadLine | date : 'dd.MM.yyyy HH:mm'}}{{t.assignedToContactPersonPersonFullName}}{{t.completedDate | date :'dd.MM.yyyy HH:mm'}}
\";","import ctrl from \"./ctrl\";\nimport html from \"./mt.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.customers.customer.mt\", {\n url: \"/mitt-trysilhus\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Mitt Trysilhus\"\n },\n\n views: {\n customercontent: {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n security: [\n \"userApi\",\n function (userApi) {\n return userApi.authorized([\"Support\", \"Sales\", \"KK\"]);\n }\n ],\n existingUserCheck: [\n \"userApi\",\n \"customer\",\n (userApi, customer) => {\n return userApi.checkExternalUser(\"MittTrysilhus\", customer.person.id);\n }\n ],\n externalUser: [\n \"userApi\",\n \"customer\",\n function (userApi, customer) {\n return userApi.getExternalUser(\"MittTrysilhus\", customer.person.email || \"undefined\");\n }\n ]\n }\n });\n}];","export default \"
\\n
\\n Det finnes allerede en bruker på mitt.trysilhus.no med epost:\\n {{ vm.customer.person.email }}\\n
\\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n
\\n\\n
\\n Bruker eier ingen seksjoner, kan ikke opprette bruker\\n
\\n\\n
\\n
\\n Bruker er blokkert!\\n
\\n
\\n
\\n
    \\n
  • \\n Brukernavn:\\n {{ vm.externalUser.email }}\\n \\n
  • \\n
  • \\n {{ vm.userNameWarning }}: {{ vm.customer.person.email }}\\n
    \\n \\n
    \\n
  • \\n
  • \\n Bruker opprettet:\\n {{\\n vm.externalUser.created_at | date: \\\"dd.MM.yyyy HH:mm\\\"\\n }}\\n
  • \\n
  • \\n Passord resatt:\\n {{\\n vm.externalUser.last_password_reset | date: \\\"dd.MM.yyyy HH:mm\\\"\\n }}\\n \\n Aldri \\n
  • \\n\\n
  • \\n Logget inn:\\n {{ vm.externalUser.logins_count }} ganger\\n
  • \\n
  • \\n Forrige login:\\n {{\\n vm.externalUser.last_login\\n | date: \\\"dd.MM.yyyy\\n HH:mm\\\"\\n }}\\n Aldri \\n
  • \\n
\\n
\\n
\\n
\\n
\";","import { forEach } from \"lodash\";\nexport default [\n \"$log\",\n \"$uibModal\",\n \"options\",\n \"$state\",\n function ($log, $uibModal, options, $state) {\n var vm = this;\n\n vm.options = options.data;\n vm.optionModels = [];\n forEach(vm.options, function (option) {\n option.modelIds = option.models.map(function (o) { return o.id; }).join(\",\");\n option.modelNames = option.models.map(function (o) { return o.model + \" - \" + o.name; }).join(\"\\r\\n\");\n option.modelsLength = option.models.length;\n forEach(option.models, function (model) {\n if (vm.optionModels.findIndex(item =>\n item.model == model.model && item.name == model.name) == -1) {\n vm.optionModels.push(model);\n }\n });\n });\n\n vm.addOption = function () {\n $state.go(\"main.options.option.index\", {\n optionId: -1\n });\n };\n }\n];","export default [\n \"$log\",\n \"$uibModal\",\n \"optionPackages\",\n \"$state\",\n function($log, $uibModal, optionPackages, $state) {\n var vm = this;\n\n vm.addPackage = function() {\n $state.go(\"main.options.packages.package\", {\n packageId: -1\n });\n };\n\n vm.optionPackages = optionPackages.data;\n }\n];\n","export default [\n \"$log\",\n \"optionApi\",\n \"$uibModal\",\n \"optionPackage\",\n \"$state\",\n \"$confirm\",\n \"$stateParams\",\n \"toastr\",\n function(\n $log,\n optionApi,\n $uibModal,\n optionPackage,\n $state,\n $confirm,\n $stateParams,\n toastr\n ) {\n var vm = this;\n\n vm.optionPackage = optionPackage.data.package;\n vm.projTypes = optionPackage.data.projTypes;\n vm.optionSearch = [];\n vm.searchForOption = function(val) {\n if (val === \"\") return;\n\n optionApi.searchForOption(val).then(function(res) {\n vm.optionSearch = res.data;\n });\n };\n\n vm.addOptionToPackage = function(item) {\n optionApi\n .addOptionToPackage({ id: item.id }, vm.optionPackage.id)\n .then(() => {\n toastr.info(\"Tilvalg lagt til i pakken\");\n $state.reload();\n });\n };\n vm.removeOption = function(opt) {\n $confirm({\n text: `Vil du fjerne ${opt.name} fra pakken ?`\n }).then(function() {\n optionApi\n .removeOptionFromPackage(opt, vm.optionPackage.id)\n .then(() => {\n toastr.info(\"Tilvalg fjernet fra pakke\");\n $state.reload();\n });\n });\n };\n\n vm.deletePackage = function() {\n $confirm({\n text: \"vil du slette pakken? \"\n }).then(function() {\n optionApi\n .deleteOptionPackage(vm.optionPackage)\n .then(function() {\n $state.go(\n \"main.options.packages\",\n {},\n {\n reload: true\n }\n );\n });\n });\n };\n vm.savePackage = function() {\n if (vm.optionPackage.status === 2) {\n optionApi\n .createOptionPackage(vm.optionPackage)\n .then(function(response) {\n $state.go(\n \"main.options.packages.package\",\n {\n packageId: response.data\n },\n { reload: true }\n );\n });\n } else {\n optionApi\n .updateOptionPackage(vm.optionPackage)\n .then(function(response) {\n $state.go(\n \"main.options.packages.package\",\n {\n packageId: response.data\n },\n { reload: true }\n );\n });\n }\n };\n }\n];\n","export default [\n \"$log\",\n \"$uibModal\",\n \"option\",\n function ($log, $uibModal, option) {\n var vm = this;\n\n vm.option = option.data.option;\n }\n];","import { countBy } from \"lodash\";\nexport default [\n \"$log\",\n \"$uibModal\",\n \"option\",\n \"$state\",\n \"optionApi\",\n \"toastr\",\n \"searchApi\",\n \"$scope\",\n \"$q\",\n \"components\",\n function (\n $log,\n $uibModal,\n option,\n $state,\n optionApi,\n toastr,\n searchApi,\n $scope,\n $q,\n components\n ) {\n var vm = this;\n\n vm.option = option.data.option;\n vm.optionCategories = option.data.optionCategories;\n\n vm.projTypes = option.data.projTypes;\n vm.optionTypes = option.data.optionTypes;\n vm.processes = option.data.option.processOptions;\n vm.option.priceCalc = optionApi.setPriceCalc(\n vm.option,\n vm.option.projOptionCalculations\n );\n vm.sectionTypesCount = countBy(option.data.sectionTypes, \"selected\")[\n \"true\"\n ];\n\n vm.deleteProcess = function (pro) {\n optionApi.removeProcess(pro).then(function () {\n $state.reload();\n });\n };\n vm.onSelectProcess = function (item) {\n var pro = {\n optionId: vm.option.id,\n processId: item.id\n };\n\n optionApi.addProcess(pro).then(function () {\n $state.reload();\n });\n };\n vm.searchProcesses = function (s) {\n if (!s) return;\n\n searchApi\n .dropDownSearch({\n type: \"process\",\n search: s\n })\n .then(function (res) {\n vm.list = res.data;\n });\n };\n $scope.checkImage = function (file, base64_object) {\n var deferred = $q.defer();\n\n if (base64_object.filesize > 5000000) {\n base64_object = null;\n toastr.warning(\"Vedlegget er fort stort, max 5 mb\");\n }\n\n deferred.resolve(base64_object);\n vm.option.imageBlob = null;\n return deferred.promise;\n };\n\n $scope.checkInfoImage = function (file, base64_object) {\n var deferred = $q.defer();\n\n if (base64_object.filesize > 5000000) {\n base64_object = null;\n toastr.warning(\"Vedlegget er fort stort, max 5 mb\");\n }\n\n deferred.resolve(base64_object);\n vm.option.imageInfoBlob = null;\n return deferred.promise;\n };\n\n vm.saveOption = function () {\n if (vm.option.status === 2) {\n optionApi.createOption(vm.option, 1).then(function (res) {\n toastr.success(\"Lagret nytt tilvalg\");\n $state.go(\"main.options.option.index\", {\n optionId: res.data.id\n });\n });\n } else {\n optionApi.saveOption(vm.option).then(function () {\n //if user set type to tilvalg/tillegg. Warning remember to change price\n if (vm.option.optionTypeId !== 1 && vm.option.price === 0) {\n toastr.warning(\"Prisen er 0 kr. Husk å endre prisen!\");\n }\n // if type is standard and price is not 0. Den set the price to 0\n if (vm.option.optionTypeId === 1 && vm.option.price !== 0) {\n vm.option.price = 0;\n vm.option.priceCalc.price = 0;\n optionApi\n .saveOptionPoolCalc(vm.option)\n .then(function () {\n toastr.success(\n \"Pris endret til 0 kr for standard\"\n );\n $state.reload();\n });\n } else {\n $state.reload();\n }\n }).catch(function (error) {\n if (error.data && error.data.indexOf(\"loft\") > -1) {\n vm.option.isAtticOption = false;\n }\n });\n }\n };\n\n vm.duplicate = function () {\n if (vm.option.status === 0) {\n var duplicateOptionData = {\n imageBlob: vm.option.imageBlob,\n imageInfoBlob: vm.option.imageInfoBlob,\n description: vm.option.description,\n inActive: vm.option.inActive,\n name: vm.option.name,\n optionCategoryId: vm.option.optionCategoryId,\n optionTypeId: vm.option.optionTypeId,\n projTypeId: vm.option.projTypeId,\n status: 2\n };\n optionApi\n .createOption(duplicateOptionData, 1)\n .then(function (res) {\n toastr.success(\"Tilvalg er duplisert\");\n $state.go(\"main.options.option.index\", {\n optionId: res.data.id\n });\n });\n }\n };\n\n vm.duplicateAll = function () {\n if (vm.option.status === 0) {\n //Set info to dublicate and set status = 2 to save\n var duplicateOptionData = {\n imageBlob: vm.option.imageBlob,\n imageInfoBlob: vm.option.imageInfoBlob,\n description: vm.option.description,\n inActive: vm.option.inActive,\n name: vm.option.name,\n optionCategoryId: vm.option.optionCategoryId,\n optionTypeId: vm.option.optionTypeId,\n projTypeId: vm.option.projTypeId,\n status: 2\n };\n //Getting det components data\n vm.components = components.data;\n //Creating a option\n optionApi\n .createOption(duplicateOptionData, 1)\n .then(function (res) {\n //get only the data to save and set status = 2 to save\n var projOptionCalculations = vm.option.projOptionCalculations.map(\n (x) => {\n return {\n cost: x.cost,\n description: x.description,\n projAccounts: x.projAccounts,\n qty: x.qty,\n status: 2\n };\n }\n );\n\n res.data.projOptionCalculations = projOptionCalculations;\n //Sets the price\n res.data.price = vm.option.price;\n res.data.amountEnt = vm.option.amountEnt;\n res.data.amountPercentageEnt =\n vm.option.amountPercentageEnt;\n res.data.amountPercentageSales =\n vm.option.amountPercentageSales;\n res.data.amountSales = vm.option.amountSales;\n res.data.amountTax = vm.option.amountTax;\n //save the price\n optionApi\n .saveOptionPoolCalc(res.data)\n .then(function () {\n //The components ned to have id = 0 and status = 2 to save.\n var componentRespons = vm.components.map(\n (x) => {\n x.id = 0;\n x.status = 2;\n return x;\n }\n );\n //Save the components\n optionApi\n .saveComponents(\n res.data.id,\n componentRespons\n )\n .then(function () {\n var finished = 0;\n //else no process the go to the new option\n if (\n vm.option.processOptions.length > 0\n ) {\n //Need to save process one at a time.\n //Count saved and print out messages and go to side when all is saved\n vm.option.processOptions.forEach(\n (x) => {\n var pro = {\n optionId: res.data.id,\n processId: x.processId\n };\n optionApi\n .addProcess(pro)\n .then(function () {\n finished =\n finished + 1;\n if (\n finished ===\n vm.option\n .processOptions\n .length\n ) {\n toastr.success(\n \"Tilvalg er duplisert\"\n );\n $state.go(\n \"main.options.option.index\",\n {\n optionId:\n res\n .data\n .id\n }\n );\n }\n });\n }\n );\n } else {\n toastr.success(\n \"Tilvalg er duplisert\"\n );\n $state.go(\n \"main.options.option.index\",\n {\n optionId: res.data.id\n }\n );\n }\n });\n });\n });\n }\n };\n\n vm.optionCount = function () {\n let count = 0;\n if (vm.option.description) {\n count = vm.option.description.length;\n }\n return 180 - count;\n };\n vm.optionTextCount = function () {\n let count = 0;\n if (vm.option.description) {\n count = vm.option.description.length;\n }\n return count;\n };\n\n\n if (vm.option.id == undefined) {\n var element = document.getElementById(\"txtTitle\");\n element.focus();\n }\n }\n];\n","export default [\n \"$log\",\n \"$uibModal\",\n \"option\",\n \"$state\",\n \"optionApi\",\n \"toastr\",\n function ($log, $uibModal, option, $state, optionApi, toastr) {\n var vm = this;\n\n vm.option = option.data.option;\n vm.option.priceCalc = optionApi.setPriceCalc(\n vm.option,\n vm.option.projOptionCalculations\n );\n vm.accounts = option.data.accounts;\n //if type is standard the price shall be 0 kr.\n if (vm.option.optionTypeId === 1) {\n toastr.warning(\n \"Type er standard. Husk å endre type hvis prisen skal endres\"\n );\n }\n\n vm.priceCalcUpdate = function (pc) {\n vm.option.amountEnt = pc.amountEnt;\n vm.option.amountPercentageEnt = pc.amountPercentageEnt;\n vm.option.amountPercentageSales = pc.amountPercentageSales;\n vm.option.amountSales = pc.amountSales;\n vm.option.amountTax = pc.amountTax;\n vm.option.price = pc.price;\n };\n vm.saveOptionCalc = function () {\n optionApi.saveOptionPoolCalc(vm.option).then(function () {\n $state.reload();\n });\n };\n }\n];\n","export default [\n \"$uibModalInstance\",\n \"$log\",\n \"components\",\n \"modules\",\n function ($uibModalInstance, $log, components, modules) {\n var modalvm = this;\n\n modalvm.components = components.data;\n modalvm.modules = modules.modules;\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.component);\n };\n }\n];","import {\n forEach\n} from \"lodash\";\nexport default [\n \"$uibModalInstance\",\n \"$log\",\n \"optionApi\",\n function ($uibModalInstance, $log, optionApi) {\n var modalvm = this;\n var icomps;\n\n modalvm.searchForOption = function (val) {\n if (val === \"\") return;\n\n optionApi.searchForOption(val).then(function (res) {\n modalvm.optionSearch = res.data;\n });\n };\n\n modalvm.getComponents = function (item) {\n optionApi.getOptionComponents({\n optionId: item.id\n }).then(function (res) {\n //Remove id to create new\n forEach(res.data, function (c) {\n c.id = 0;\n });\n icomps = res.data;\n });\n };\n\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(icomps);\n };\n }\n];","import addcomponent from \"./addcomponent\";\nimport addcomponenthtml from \"./addcomponent.html\";\nimport importcomponents from \"./importcomponents\";\nimport importcomponentshtml from \"./importcomponents.html\";\n\nimport {\n forEach\n} from \"lodash\";\nexport default [\n \"$log\",\n \"moduleApi\",\n \"$uibModal\",\n \"option\",\n \"$state\",\n \"optionApi\",\n \"toastr\",\n \"components\",\n \"componentsKeyValue\",\n \"$confirm\",\n function (\n $log,\n moduleApi,\n $uibModal,\n option,\n $state,\n optionApi,\n toastr,\n components,\n componentsKeyValue,\n $confirm\n ) {\n function openAddComponentModal() {\n var modalInstance = $uibModal.open({\n template: addcomponenthtml,\n controllerAs: \"modalvm\",\n resolve: {\n components: [\n function () {\n return componentsKeyValue;\n }\n ],\n modules: [\n function () {\n return vm.modules;\n }\n ]\n },\n controller: addcomponent\n });\n\n return modalInstance;\n }\n\n function openImportComponentsModal() {\n var modalInstance = $uibModal.open({\n template: importcomponentshtml,\n controllerAs: \"modalvm\",\n controller: importcomponents\n });\n\n return modalInstance;\n }\n var vm = this;\n\n vm.option = option.data.option;\n\n vm.components = components.data;\n vm.modules = [];\n\n moduleApi.getModules(false, vm.option.projTypeId).then(result => {\n vm.modules = result.data;\n });\n\n vm.saveComponents = function () {\n optionApi.saveComponents(vm.option.id, vm.components).then(function () {\n $state.reload();\n });\n };\n vm.delete = function (mc) {\n mc.status = mc.status === 2 ? -2 : -1;\n };\n\n vm.update = function (mc) {\n mc.qtyStatus = mc.qty === 0 ? 0 : mc.qty < 0 ? 1 : 2;\n\n if (mc.status !== 2) {\n mc.status = 1;\n }\n };\n\n vm.add = function () {\n openAddComponentModal().result.then(function (component) {\n if (component) {\n\n console.info(\"component\", component);\n\n optionApi\n .getOptionComponents({\n optionId: vm.option.id,\n componentId: component.component.id,\n qty: component.qty,\n moduleId: component.moduleId\n })\n .then(function (components) {\n vm.components = components.data;\n });\n\n /* vm.components = vm.components || [];\n vm.components.push(res); */\n }\n });\n };\n\n vm.importComponents = function () {\n openImportComponentsModal().result.then(function (icomps) {\n if (icomps) {\n forEach(icomps, function (c) {\n c.status = 2;\n });\n\n vm.components = icomps;\n }\n });\n };\n\n vm.deleteAll = function () {\n $confirm({\n text: \"Vil du slette alle mengdeberegningene ?\"\n }).then(function () {\n optionApi.deleteAllCalculations(vm.option).then(function () {\n $state.reload();\n });\n });\n };\n }\n];","export default \"
\\n\\t

Legg til komponent

\\n
\\n
\\n\\n\\n\\n\\t
\\n\\t\\t\\n\\n\\n\\t\\t\\n\\t\\t\\t{{$select.selected.name}}\\n\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\n\\t
\\n\\t
\\n\\t\\t\\n\\t\\t\\n\\t
\\n\\t
\\n\\t\\t\\n\\t\\t\\n\\t
\\n\\n
\\n
\\n\\t\\n\\t\\n
\";","export default \"
\\n\\t

Importer {{'Components' | translate:true}}

\\n
\\n
\\n\\n\\n\\t\\n\\n
\\n \\n \\n {{$select.selected.name}}\\n \\n
\\n\\n
\\n
\\n
\\n\\n \\n\\n\\n
\\n
\\n\\t\\n\\t\\n
\";","import { forEach } from \"lodash\";\nexport default [\n \"$log\",\n \"$uibModal\",\n \"option\",\n \"$state\",\n \"optionApi\",\n function ($log, $uibModal, option, $state, optionApi) {\n var vm = this;\n\n vm.option = option.data.option;\n vm.sectionTypes = option.data.sectionTypes;\n\n const projectType = option.data.projTypes.find((x) => {\n return x.id === vm.option.projTypeId;\n });\n\n if (projectType) {\n vm.sectionTypes = vm.sectionTypes.filter((x) => {\n return x.projTypeName === projectType.name;\n });\n }\n\n vm.selectAll = function () {\n forEach(vm.displayCollection, function (st) {\n st.selected = true;\n });\n };\n\n vm.saveSectionTypes = function () {\n optionApi\n .saveOptionSectionTypes(vm.option, vm.sectionTypes)\n .then(function () {\n $state.reload();\n });\n };\n }\n];\n","import {\n} from \"lodash\";\nexport default [\n \"$log\",\n \"$uibModal\",\n \"option\",\n \"$state\",\n \"optionApi\",\n \"albumConfig\",\n function ($log, $uibModal, option, albumConfig) {\n var vm = this;\n vm.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n vm.sections = option.data.sections;\n\n vm.nav = function (id, type, path) {\n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=\" + type + \"&id=\" + id + \"&path=\" + path;\n };\n }\n];","export default [\n \"$log\",\n \"$stateParams\",\n \"projects\",\n \"sectionApi\",\n \"optionApi\",\n \"albumConfig\",\n \"$scope\",\n function(\n $log,\n $stateParams,\n projects,\n sectionApi,\n optionApi,\n albumConfig,\n $scope\n ) {\n var vm = this;\n vm.imageUrl = `${albumConfig.apiAddress}/blob/image/`;\n vm.projects = projects.data;\n vm.changeProject = item => {\n sectionApi.getSectionList(item.id).then(response => {\n vm.sections = response.data.map(s => ({\n ...s,\n display: `Seksjon ${s.apartmentKey} (${s.customer})`\n }));\n });\n };\n\n $scope.$watch(\"vm.sectionId\", function watchSectionChange(sectionId) {\n if (sectionId) {\n optionApi.preview(sectionId).then(response => {\n vm.optionsPreview = response.data;\n });\n }\n });\n\n if ($stateParams.projectId) {\n vm.projectId = Number($stateParams.projectId);\n vm.changeProject({ id: vm.projectId });\n }\n\n if ($stateParams.sectionId) {\n vm.sectionId = Number($stateParams.sectionId);\n }\n }\n];\n","import { forEach } from \"lodash\";\n\nexport default [\n \"$uibModalInstance\",\n \"projModels\",\n \"document\",\n function ($uibModalInstance, projModels, document) {\n var modalvm = this;\n\n modalvm.projModels = projModels;\n modalvm.document = document;\n modalvm.active = false;\n\n forEach (modalvm.projModels, function (model) {\n model.active = \n modalvm.document.blobProjModels && \n modalvm.document.blobProjModels.filter(i => i.projModelId == model.id).length > 0;\n });\n \n modalvm.toogleActive = function() {\n forEach(modalvm.projModels, model => {\n model.active = !modalvm.active;\n });\n };\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.projModels);\n };\n }\n ];","import uploadctrl from \"album/shared/albumDocuments/upload\";\nimport uploadhtml from \"album/shared/albumDocuments/upload.html\";\nimport projmodelsctrl from \"./projmodels\";\nimport projmodelshtml from \"./projmodels.html\";\nimport saveFile from \"shared/saveFile\";\nimport { forEach } from \"lodash\";\n\nexport default [\n \"$rootScope\",\n \"$uibModal\",\n \"$state\",\n \"$stateParams\",\n \"optionApi\",\n \"attachmentApi\",\n \"toastr\",\n \"$confirm\",\n \"documents\",\n \"FileUploader\",\n function (\n $rootScope,\n $uibModal,\n $state,\n $stateParams,\n optionApi,\n attachmentApi,\n toastr,\n $confirm,\n documents,\n FileUploader\n ) {\n\n function openUploadModal(model) {\n var modalInstance = $uibModal.open({\n template: uploadhtml,\n controllerAs: \"modalvm\",\n controller: uploadctrl,\n resolve: {\n uploader: [\n function () {\n return vm.uploader;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n function openProjModelsModal(doc) {\n var modalInstance = $uibModal.open({\n template: projmodelshtml,\n controllerAs: \"modalvm\",\n controller: projmodelsctrl,\n resolve: {\n projModels: [\n function () {\n return vm.projModels;\n }\n ],\n document: [\n function () {\n return doc;\n }\n ]\n }\n });\n\n return modalInstance;\n }\n\n var vm = this;\n\n vm.documents = documents.data.documents;\n vm.projModels = documents.data.projModels;\n vm.showUpload = true;\n vm.modalIsOpen = false;\n\n forEach(vm.documents, function (doc) { \n doc.projModelsText = \"\";\n doc.blobProjModels = doc.blobProjModels || [];\n if (doc.blobProjModels.length > 0) { \n doc.projModelsText = doc.blobProjModels.map(i => i.projModel.modelName).join(\", \");\n }\n });\n\n vm.uploader = new FileUploader({\n removeAfterUpload: true,\n url: apiAddress + \"/option/documents/upload\",\n headers: {\n Authorization: \"Bearer \" + localStorage.getItem(\"msal.idtoken\")\n }\n });\n\n vm.uploader.onCompleteItem = function (item, response) {\n if (item.isSuccess) {\n toastr.info(\"Lastet opp \" + item.file.name);\n } else if (item.isError) {\n toastr.error(\"Ukjent feil oppstod under opplasting!\");\n }\n };\n\n vm.uploader.onAfterAddingAll = function (addedItems) {\n if (addedItems.length > 0 && !vm.modalIsOpen) {\n vm.uploadFile();\n }\n };\n\n vm.uploader.onBeforeUploadItem = function (item) {\n item.formData.push({\n optionId: `${$stateParams.optionId}` || \"\"\n });\n };\n\n vm.uploader.onCompleteAll = function () {\n $rootScope.loading = false;\n $state.reload();\n };\n\n vm.uploadFile = function () {\n vm.modalIsOpen = true;\n openUploadModal(vm).result.then(function (upload) {\n if (upload === null) {\n vm.uploader.queue.clearQueue();\n } else {\n $rootScope.loading = true;\n upload.uploader.uploadAll();\n vm.modalIsOpen = false;\n }\n });\n };\n\n vm.deleteDocument = function (doc) {\n $confirm({\n text: \"Er du sikker på at du vil slette \" + doc.fileName + \"?\"\n }).then(function () {\n optionApi.deleteOptionDocument(doc.guid).then(function () {\n toastr.info(\"Slettet \" + doc.fileName);\n $state.reload();\n });\n });\n };\n\n vm.downloadDocument = function (doc) {\n attachmentApi.downloadAttachment(doc).then(saveFile);\n };\n\n vm.updateProjModels = function (doc) { \n openProjModelsModal(doc).result.then(function (res) {\n var projModels = res.filter(i => i.active == true).map(i => i.id);\n optionApi.putOptionDocumentProjModels(doc.guid, projModels).then(function () {\n toastr.info(\"Oppdatert modeller for \" + doc.fileName);\n $state.reload();\n });\n });\n };\n }\n];","export default \"\\n\\n
\\n

Modeller

\\n
{{modalvm.document.fileName}}
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n Modellnavn
\\n \\n \\n {{ m.modelName }}\\n
\\n\\n
\\n
\\n \\n \\n
\";","import options from \"album/options/state\";\nimport all from \"album/options/all/state\";\nimport optionpackages from \"album/options/optionpackages/state\";\nimport packageState from \"album/options/optionpackages/package/state\";\nimport option from \"album/options/option/state\";\nimport index from \"album/options/option/index/state\";\nimport pricecalc from \"album/options/option/pricecalc/state\";\nimport amountcalc from \"album/options/option/amountcalc/state\";\nimport sectiontypes from \"album/options/option/sectiontypes/state\";\nimport sections from \"album/options/option/sections/state\";\nimport view from \"album/options/view/state\";\nimport documents from \"album/options/option/documents/state\";\n\nexport default [\n options,\n all,\n optionpackages,\n packageState,\n option,\n index,\n pricecalc,\n amountcalc,\n sectiontypes,\n sections,\n view,\n documents\n];","import html from \"./options.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.options\", {\n url: \"options\",\n data: {\n requiresLogin: true\n },\n abstract: true,\n aData: {\n breadcrumbProxy: \"main.options.all\"\n },\n resolve: {\n security: [\n \"userApi\",\n function(userApi) {\n return userApi.authorized([\"OptionAdmin\"]);\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n\\t\\n\\n\\t\\n\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./all.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.options.all\", {\n url: \"/all\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Tilvalg\"\n },\n resolve: {\n options: [\"optionApi\", function (optionApi) {\n return optionApi.getOptions();\n }]\n },\n views: {\n \"optionscontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n\n }\n\n\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
NavnModellerTypeHovedkategoriKategoriProsjekttypePrisBildeUtgåttOpprettetAvSeksjoner
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t{{opt.name}}\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t 0\\\" text=\\\"opt.modelNames\\\" edit=\\\"false\\\"\\n\\t\\t\\t\\t\\t\\t\\tname=\\\"'Modeller'\\\">\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{opt.models.length == 0 ? '' : opt.models.length + ' modeller'}}\\n\\t\\t\\t\\t\\t{{opt.typeName}}{{opt.parentCategoryName}}{{opt.categoryName}}{{opt.projTypeName}}{{opt.price | number:0}}{{opt.hasImage ? 'Ja' : 'Nei'}}{{opt.inActive ? 'Ja' : 'Nei'}}{{opt.createdDate | date :'dd.MM.yyyy'}}{{opt.createdByUserContactPersonPersonFullName}}\\n\\t\\t\\t\\t\\t{{opt.numSections}}
\\n\\t
\\n\\t\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./packages.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.options.packages\", {\n url: \"/packages\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Pakker\"\n },\n resolve: {\n optionPackages: [\"optionApi\", function (optionApi) {\n return optionApi.getOptionPackages();\n }]\n },\n views: {\n \"optionscontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n\n }\n\n\n }\n\n\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
InaktivNavnPris
{{m.disabled? 'Ja':'Nei'}}{{m.name}}\\n\\t\\t\\t\\t\\t{{m.price | number:0}}
\\n\\t
\\n\\t\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./package.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.options.packages.package\", {\n url: \"/package/{packageId}\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{optionPackage.data.package.name || 'Ny pakke'}}\"\n },\n resolve: {\n optionPackage: [\"optionApi\", \"$stateParams\", function (optionApi, $stateParams) {\n return optionApi.getOptionPackage($stateParams.packageId);\n }]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n\n }\n\n\n });\n}];","export default \"
\\n

Pakke

\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n\\n\\n\\n
\\n
Lagre pakken for å legge til tilvalg
\\n
\\n\\n\\n
\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
TilvalgPris
{{opt.name}} {{opt.price | number :0}}
Pris pr pakke\\n\\n

\\n {{vm.optionPackage.price | number : 0}}

\\n
\\n
\\n\\n
\\n
\\n \\n
\\n
\\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./option.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.options.option\", {\n url: \"/option/{optionId}\",\n abstract: true,\n data: {\n requiresLogin: true\n },\n\n aData: {\n breadcrumbProxy: \"main.options.option.index\"\n },\n resolve: {\n option: [\"optionApi\", \"$stateParams\", function (optionApi, $stateParams) {\n return optionApi.getOption($stateParams.optionId);\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n\n }\n\n\n });\n}];","export default \"
\\n\\t\\n\\t\\n\\n\\t\\n\\n\\t\\n\\t\\n\\n\\t\\n\\t\\n\\n\\t\\n\\t\\n\\n\\t\\n\\t\\n\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\n \"$stateProvider\",\n function ($stateProvider) {\n $stateProvider.state(\"main.options.option.index\", {\n url: \"/optionindex\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{option.data.option.name || 'Nytt tilvalg'}}\"\n },\n\n views: {\n optioncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n components: [\n \"optionApi\",\n \"$stateParams\",\n function (optionApi, $stateParams) {\n return optionApi.getOptionComponents({\n optionId: $stateParams.optionId\n });\n }\n ]\n }\n });\n }\n];\n","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

{{vm.option.name}}

\\n\\t\\t\\tIkke\\n\\t\\t\\t\\ttilgjengelig på noen leilighetstyper\\n\\t\\t\\tTilgjengelig\\n\\t\\t\\t\\tpå {{vm.sectionTypesCount }} leilighetstyper\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t{{vm.optionTextCount()}} tegn\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t
\\n\\n\\t\\t
\\n\\t\\t\\t

Bestilles i prosess

\\n\\t\\t\\t\\n\\n\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t{{$select.selected.name}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\tTilvalg mangler bilde\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\tTilvalg mangler info bilde\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./pricecalc.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.options.option.pricecalc\", {\n url: \"/pricecalc\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Priskalkulasjon\"\n },\n\n views: {\n \"optioncontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n\n }\n\n\n });\n}];","export default \"
\\n \\n
\\n\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./amountcalc.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.options.option.amountcalc\", {\n url: \"/amountcalc\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Mengdeberegning\"\n },\n resolve: {\n components: [\"optionApi\", \"$stateParams\", function (optionApi, $stateParams) {\n return optionApi.getOptionComponents({\n optionId: $stateParams.optionId\n });\n }],\n componentsKeyValue: [\"componentApi\", function (componentApi) {\n return componentApi.getComponentsKeyValue();\n }]\n },\n views: {\n \"optioncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n\n }\n\n\n });\n}];","export default \"
\\n\\t\\n\\t\\n
\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\n\\t\\t
ModulRetningKomponentAntallStatus
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
{{popc.module}}{{popc.leftOrRight}}{{popc.component}}{{popc.qtyStatusString}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./sectiontypes.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.options.option.sectiontypes\", {\n url: \"/optionsectiontypes\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{option.data.option.name || 'Nytt tilvalg'}}\"\n },\n\n views: {\n \"optioncontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n\n }\n\n\n });\n}];","export default \"
\\n\\t\\n
\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\n\\t\\t
ValgtModellNavnBeskrivelseType
{{st.modelName}}{{st.name}}{{st.description}}{{st.projTypeName}}
\\n\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./sections.html\";\n\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.options.option.sections\", {\n url: \"/optionsections\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{option.data.option.name || 'Nytt tilvalg'}}\"\n },\n\n views: {\n \"optioncontent\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\n\\t\\t
ProsjektHusSeksjonOpprettet
\\n\\t\\t\\t\\t\\t\\tGå\\n\\t\\t\\t\\t\\t\\t\\ttil tilvalg\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{s.projectName}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{s.projectName}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tBygg\\n\\t\\t\\t\\t\\t\\t\\t{{s.houseName}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\tBygg {{s.houseName}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{s.sectionKey}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t{{s.sectionKey}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t{{s.createdDate | date}}
\\n\\t
\\n
\";","import html from \"./view.html\";\nimport ctrl from \"./ctrl\";\n\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.optionsview\", {\n url: \"options/view?projectId§ionId\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Tilvalgsvisning\"\n },\n resolve: {\n projects: [\n \"projectApi\",\n projectApi => {\n return projectApi.getProjectList();\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controllerAs: \"vm\",\n controller: ctrl\n }\n }\n });\n }\n];\n","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\n\\t\\t\\t\\n\\t\\t\\t\\t{{$select.selected.name}}\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\n\\n\\n\\n\\t\\t\\t\\n\\t\\t\\t\\t{{$select.selected.display}}\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\n\\t\\n\\t
\\n\\t\\t

Forhåndsvis tilvalg synlig på mitt.trysilhus.no ved å velge seksjon

\\n\\t
\\n\\t
\\n\\n\\t\\t

Ingen tilvalg konfigurert for denne seksjonstypen

\\n\\t
\\n\\t
\\n\\n\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t

{{category.category}}

\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

{{category.category}}

\\n\\t\\t\\t\\t

{{opt.name}}

\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t

{{opt.description}}

\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

{{opt.type}}

\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t

Kr {{(opt.price) | number : 0}}

\\n\\t\\t\\t
\\n\\t\\t
\\n\\n\\n\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./documentscomponent.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.options.option.documents\", {\n url: \"/documents\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"FDV\"\n },\n resolve: {\n documents: [\"optionApi\", \"$stateParams\", function (optionApi, $stateParams) {\n return optionApi.getOptionDocuments($stateParams.optionId);\n }]\n // componentsKeyValue: [\"componentApi\", function (componentApi) {\n // return componentApi.getComponentsKeyValue();\n // }]\n },\n views: {\n optioncontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n}];","export default \"
\\n \\n
\\n\\n
\\n
\\n Ingen FDV dokumentasjon lastet opp\\n \\n Dra filer hit for å laste opp\\n \\n
\\n
\\n\\n
0\\\" st-table=\\\"vm.documents\\\">\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnDokumenttypeModellerDatoForfatterStørrelse/Innhold
\\n \\n \\n \\n {{doc.fileName}}\\n \\n {{doc.documentTypeName}}\\n {{\\n doc.blobProjModels.length > 1 ?\\n doc.blobProjModels.length + \\\" modeller\\\" : doc.blobProjModels[0].projModel.modelName }}\\n \\n {{doc.createdBy}}{{doc.contentLength | bytes}}\\n \\n \\n
\\n
\\n
\";","export default [\n \"$log\",\n \"$uibModal\",\n \"contacts\",\n function ($log, $uibModal, contacts) {\n var vm = this;\n\n vm.contacts = contacts.data;\n }\n];","export default [\n \"$log\",\n \"contactApi\",\n \"$uibModal\",\n \"contact\",\n function ($log, contactApi, $uibModal, contact) {\n var vm = this;\n\n vm.contact = contact.data;\n }\n];","export default [\n \"$log\",\n \"contactApi\",\n \"$uibModal\",\n \"contact\",\n \"$state\",\n \"toastr\",\n \"searchApi\",\n \"$confirm\",\n \"tradeCodes\",\n function (\n $log,\n contactApi,\n $uibModal,\n contact,\n $state,\n toastr,\n searchApi,\n $confirm,\n tradeCodes\n ) {\n var vm = this;\n vm.tradeCodes = tradeCodes.data;\n vm.contact = contact.data;\n vm.vendors = [];\n\n contactApi.getContactVendors(vm.contact.id).then(res => {\n vm.vendors = res.data;\n });\n\n vm.mainContactPersonSearch = [\n {\n id: vm.contact.mainContactPersonId,\n person: {\n fullName: vm.contact.mainContactPersonName\n }\n }\n ];\n\n vm.setNewBcVendorId = function () {\n $confirm({\n text:\n \"Er du sikker på at du vil sette leverandør i Business Central?\\nDette vil oppdatere informasjon og låse firmakontakten.\"\n }).then(() => {\n vm.contact.bcVendorId = vm.contact.newBcVendorId;\n vm.update();\n });\n };\n\n vm.delete = () => {\n $confirm({\n text:\n \"Er du sikker på at du vil slette firma, du vil også slette notater knyttet til firmaet\"\n }).then(() => {\n contactApi.deleteContact(vm.contact).then(() => {\n $state.go(\"main.contacts\", null, {\n reload: true\n });\n });\n });\n };\n\n vm.update = function () {\n contactApi.updateContact(vm.contact).then(function (res) {\n $state.go(\n \"main.contacts.contact.index\",\n {\n contactId: res.data.newId\n },\n {\n reload: true\n }\n );\n });\n };\n }\n];\n","export default [\n \"$log\",\n \"noteApi\",\n \"contactApi\",\n \"$state\",\n \"contact\",\n \"notes\",\n \"$confirm\",\n \"albumConfig\",\n function ($log, noteApi, contactApi, $state, contact, notes, $confirm, albumConfig) {\n var vm = this;\n\n vm.contact = contact.data;\n vm.notes = notes.data;\n vm.apiAddress = albumConfig.apiAddress;\n\n vm.deleteNote = function (note) {\n $confirm({\n text: \"Vil du slette notatet?\"\n }).then(function () {\n noteApi.deleteNote(note).then(function () {\n $state.reload();\n });\n });\n };\n vm.editNote = function (note) {\n noteApi\n .noteModal({\n note: note,\n projCustomers: []\n })\n .result.then(function (note) {\n if (note.note) {\n\n noteApi.editNote(note.note).then(function () {\n $state.reload();\n });\n }\n });\n };\n vm.addNote = function () {\n noteApi\n .noteModal({\n projects: []\n })\n .result.then(function (note) {\n if (note.note) {\n note.note.contactId = vm.contact.id;\n\n noteApi.addNote(note.note).then(function () {\n $state.reload();\n });\n }\n });\n };\n\n vm.openProfileImg = function (firstName, lastName, imageUrl) {\n contactApi\n .profileModal({\n firstName: firstName,\n lastName: lastName,\n imageUrl: imageUrl\n })\n .result.then(function () {\n });\n };\n vm.tstamp = new Date().getTime();\n }\n];","import saveFile from \"shared/saveFile\";\nexport default [\n \"documentApi\",\n \"contact\",\n \"documents\",\n function(documentApi, contact, documents) {\n var vm = this;\n\n vm.documents = documents.data;\n vm.persistKey = \"oldDocuments_\" + contact.data.id;\n\n vm.downloadDoc = function(doc) {\n documentApi.downloadDocuRef(doc.id).then(saveFile);\n };\n }\n];\n","export default [\n \"$log\",\n \"commonApi\",\n \"contactApi\",\n \"$state\",\n \"contact\",\n \"albumConfig\",\n function($log, commonApi, contactApi, $state, contact, albumConfig) {\n var vm = this;\n vm.contact = contact.data;\n vm.useMultipleAppRouting = albumConfig.useMultipleAppRouting == \"true\";\n \n vm.nav = function(id) {\n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=0\" + \"&id=\" + id + \"&path=/contacts\";\n };\n\n contactApi.getContactProjects(vm.contact.id).then(repsonse => {\n vm.projects = repsonse.data.projects;\n });\n\n\n }\n];\n","export default [\n \"$log\",\n \"commonApi\",\n \"customerApi\",\n \"$state\",\n \"contact\",\n function($log, commonApi, customerApi, $state, contact) {\n var vm = this;\n vm.contact = contact.data;\n\n vm.persistKey = \"contact_registrations_\" + vm.contact.id;\n\n vm.regContext = {\n contactId: vm.contact.id\n };\n }\n];\n","import addcontactpersonhtml from \"app/contactpersons/addcontactperson.html\";\nimport addcontactpersonctrl from \"app/contactpersons/addcontactperson.js\";\n// import addDeactivatedContactPersonhtml from \"app/contacts/contact/contactpersons/addDeactivatedContactPerson.html\";\n// import addDeactivatedContactPersonctrl from \"app/contacts/contact/contactpersons/addDeactivatedContactPerson.js\";\nimport contactApi from \"../../../../api/contactApi\";\n\nexport default [\n \"$confirm\",\n \"$log\",\n \"$uibModal\",\n \"contactApi\",\n \"contactPersons\",\n // \"deactivatedContactPersons\",\n \"contact\",\n \"$state\",\n\n function (\n $confirm,\n $log,\n $uibModal,\n contactApi,\n contactPersons,\n // deactivatedContactPersons,\n contact,\n $state\n ) {\n\n var vm = this;\n vm.contact = contact.data;\n vm.contactPersons = contactPersons.data;\n// vm.deactivatedContactPersons = deactivatedContactPersons.data;\n\n// vm.openDeactivatedContactPerson = contactperson => {\n// $confirm({\n// title: \"Vil du deaktivere?\",\n// text: `Vil du deaktivere \"${contactperson.person.fullName}\" fra ${vm.contact.name}`,\n// ok: \"Deaktiver\"\n// }).then(() => {\n// contactApi.companyDeactivateContactPerson(vm.contact.id, contactperson.id).then(() => {\n// $state.reload();\n// });\n// });\n// };\n\n vm.isBTAdmin = function (contactperson) {\n contactApi.changeIsBTAdmin(vm.contact.id, contactperson.id).then(x => {\n vm.contactPersons = x.data;\n });\n };\n\n vm.addNewContactPerson = function () {\n $uibModal\n .open({\n keyboard: true,\n animation: true,\n template: addcontactpersonhtml,\n controllerAs: \"modalvm\",\n resolve: {\n createParams: [\n function () {\n return {\n newRelation: {\n contactId: vm.contact.id\n },\n reload: true\n };\n }\n ]\n },\n size: \"lg\",\n controller: addcontactpersonctrl\n })\n .result.then(function (res) {\n if (res.reload) {\n $state.reload();\n }\n });\n };\n\n // vm.addDeactivatedContactPerson = function () {\n // $uibModal\n // .open({\n // keyboard: true,\n // animation: true,\n // template: addDeactivatedContactPersonhtml,\n // controllerAs: \"modalvm\",\n // resolve: {\n // deactivatedContactPersons: [\n // function () {\n // return vm.deactivatedContactPersons;\n // }\n // ],\n // contactId: [\n // function () {\n // return vm.contact.id;\n // }\n // ]\n \n // },\n // size: \"lg\",\n // controller: addDeactivatedContactPersonctrl\n // })\n // .result.then(function (res) {\n // if (res.reload) {\n // $state.reload();\n // }\n // });\n // };\n }\n];","import contacts from \"album/contacts/state\";\nimport contact from \"album/contacts/contact/state\";\nimport index from \"album/contacts/contact/index/state\";\nimport notes from \"album/contacts/contact/notes/state\";\nimport documents from \"album/contacts/contact/documents/state\";\nimport projects from \"album/contacts/contact/projects/state\";\nimport registrations from \"album/contacts/contact/registrations/state\";\nimport contactpersons from \"album/contacts/contact/contactpersons/state\";\n\n\nexport default [\n contacts,\n contact,\n index,\n notes,\n projects,\n registrations,\n documents,\n contactpersons\n];","import ctrl from \"./ctrl\";\nimport html from \"./contacts.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.contacts\", {\n url: \"contacts\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Firmakontakter\"\n },\n resolve: {\n contacts: [\"contactApi\", function (contactApi) {\n return contactApi.getContacts();\n }]\n },\n\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n\n }\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnTelefonMobilEpostOpprettet
{{p.name}}\\n {{p.phone}}{{p.mobile}}{{p.email}}{{p.createdDate | date :'dd.MM.yyyy'}}\\n \\n
\\n
\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./contact.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.contacts.contact\", {\n url: \"/{contactId}\",\n data: {\n requiresLogin: true\n },\n abstract: true,\n aData: {\n breadcrumbProxy: \"main.contacts.contact.index\"\n },\n resolve: {\n contact: [\"contactApi\", \"$stateParams\", function (contactApi, $stateParams) {\n return contactApi.getContact($stateParams.contactId);\n }],\n tradeCodes: [\"systemApi\", function (systemApi) {\n return systemApi.getTradeCodes();\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n
\\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.contacts.contact.index\", {\n url: \"/contactindex\",\n data: {\n requiresLogin: true\n },\n\n aData: {\n name: \"{{contact.data.name}}\"\n },\n\n views: {\n \"contactcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n }\n });\n}];","export default \"
\\n
\\n

Firma

\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n

\\n {{vm.contact.name}}

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n {{$select.selected.name}}\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n

Kontaktinfo

\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n\\n
\\n
\\n \\n
\\n
\\n\\n \\n \\n\\n
\\n
\\n\\n\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./notes.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.contacts.contact.notes\", {\n url: \"/notes\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Notater \"\n },\n\n views: {\n \"contactcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n notes: [\"noteApi\", \"contact\", function (noteApi, contact) {\n\n return noteApi.getNotes(contact.data.id, 2);\n\n }]\n }\n\n\n });\n}];","export default \"
\\n
\\n

Notater

\\n
\\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n

{{note.createdString}}

\\n
\\n
\\n

{{note.noteText}}

\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./projects.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.contacts.contact.projects\", {\n url: \"/projects\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Prosjekter \"\n },\n\n views: {\n contactcontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"

Prosjekter

\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./registrations.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.contacts.contact.registrations\", {\n url: \"/registrations\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Reklamasjoner \"\n },\n\n views: {\n contactcontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./documents.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.contacts.contact.documents\", {\n url: \"/documents\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Dokumenter \"\n },\n\n views: {\n contactcontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n documents: [\n \"documentApi\",\n \"$stateParams\",\n (documentApi, $stateParams) => {\n return documentApi.getContactDocuments(\n $stateParams.contactId\n );\n }\n ]\n }\n });\n }\n];\n","export default \"
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n
NavnFil
{{doc.name}} {{doc.fileName}}
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./contactpersons.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.contacts.contact.contactpersons\", {\n url: \"/contactpersons\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Kontaktpersoner\"\n },\n resolve: {\n contactPersons: [\"contactApi\", \"$stateParams\", function (contactApi, $stateParams) {\n return contactApi.companyContactPersons($stateParams.contactId);\n }]\n },\n views: {\n \"contactcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n
NavnMobilEpostBT Admin
{{cp.person.fullName}}\\n {{cp.person.mobile}}{{cp.person.email}}\\n \\n \\n \\n \\n
\\n
\\n
\";","export default [\"$log\", \"aberrations\", \"$state\", \"$stateParams\", \"category\", \"systemApi\",\n function ($log, aberrations, $state, $stateParams, category, systemApi) {\n\n var vm = this;\n vm.aberrations = aberrations.data.aberrations;\n vm.aberrationTypes = aberrations.data.aberrationTypes;\n vm.aberrationStatuses = aberrations.data.aberrationStatuses;\n vm.category = category.category;\n vm.aberrationSeverities = aberrations.data.aberrationSeverities;\n\n vm.hiddenColumns = [{\n \"colName\": \"reportedBy\",\n \"header\": \"Meldt inn av\"\n }, {\n \"colName\": \"aberrationCause\",\n \"header\": \"Årsak\"\n }, {\n \"colName\": \"sectionAddress\",\n \"header\": \"Adresse (seksjon)\"\n }];\n\n\n systemApi.getCompanies().then(function (res) {\n vm.filter = {\n companies: res.data\n };\n\n });\n\n\n }\n];","export default [\n \"$log\",\n \"$state\",\n \"$stateParams\",\n \"aberrationactions\",\n function($log, $state, $stateParams, aberrationactions) {\n var vm = this;\n vm.aberrationactions = aberrationactions.data.aberrationactions;\n vm.actionTypes = aberrationactions.data.actionTypes;\n vm.aberrationSeverities = aberrationactions.data.aberrationSeverities;\n\n vm.hiddenColumns = [\n {\n colName: \"aberrationCategory\",\n header: \"KategoriId\"\n }\n ];\n }\n];\n","export default [\n \"$log\",\n \"aberration\",\n \"category\",\n function ($log, aberration, category) {\n var vm = this;\n vm.aberration = aberration.data.aberration;\n vm.tabTitle = category.title;\n\n vm.actionsTabTitle = \"Tiltak\";\n if (vm.aberration.actions > 0) {\n vm.actionsTabTitle += \" (\" + vm.aberration.actions + \")\";\n }\n\n vm.commentsTabTitle = \"Kommentarer\";\n if (vm.aberration.comments > 0) {\n vm.commentsTabTitle += \" (\" + vm.aberration.comments + \")\";\n }\n }\n];","import saveFile from \"shared/saveFile\";\nexport default [\n \"$log\",\n \"$state\",\n \"aberrationApi\",\n \"aberration\",\n \"$cacheFactory\",\n \"$confirm\",\n \"toastr\",\n \"haveRoleFilter\",\n function ($log, $state, aberrationApi, aberration, $cacheFactory, $confirm, toastr, haveRole) {\n var vm = this;\n\n vm.aberrationData = aberration.data;\n vm.showDelete = vm.aberrationData.aberration.status !== 2 && haveRole(\"AberrationAdmin\");\n\n vm.sendEmailToResponsible = function () {\n if (!vm.aberrationData.aberration.responsible) {\n toastr.warning(\"Ingen ansvarlig satt\");\n return;\n }\n\n aberrationApi.aberrationEmail(vm.aberrationData.aberration).result.then(function (email) {\n if (email) {\n vm.aberrationData.aberration.sendEmailToResponsible = true;\n vm.aberrationData.aberration.emailText = email.text;\n vm.aberrationData.aberration.emailSubject = email.subject;\n vm.save();\n }\n });\n };\n vm.download = function () {\n $confirm({\n title: \"Last ned\",\n customButtonText: \"Med bilder\",\n ok: \"Uten bilder\",\n showCustomButton: true,\n customButtonObj: {\n downloadImages: true\n },\n text: \"Velg nedlastningstype\"\n }).then(function (res) {\n aberrationApi.downloadAberration(\n vm.aberrationData.aberration.id, (res != null && res.downloadImages))\n .then(res => {\n saveFile(res);\n });\n });\n };\n\n vm.save = function () {\n aberrationApi.insertUpdateAberration(vm.aberrationData.aberration, true).then(function (res) {\n $state.go(\n \"main.aberrations.aberration.index\",\n {\n category: res.data.category,\n aberrationId: res.data.id\n },\n {\n reload: true\n }\n );\n });\n };\n\n vm.delete = function () {\n $confirm({\n text:\n \"Er du sikker på at du vil slette \" +\n vm.aberrationData.aberration.categoryStringInText +\n \"?\"\n }).then(function () {\n aberrationApi.deleteAberration(vm.aberrationData.aberration).then(function () {\n $state.go(\n \"main.aberrations\",\n {\n category: vm.aberrationData.aberration.category\n },\n {\n reload: true\n }\n );\n });\n });\n };\n }\n];\n","export default [\n \"$uibModal\",\n \"$log\",\n \"$state\",\n \"aberrationApi\",\n \"actions\",\n \"$stateParams\",\n \"aberration\",\n \"haveRoleFilter\",\n \"$confirm\",\n function (\n $uibModal,\n $log,\n $state,\n aberrationApi,\n actions,\n $stateParams,\n aberration,\n haveRole,\n $confirm\n ) {\n var vm = this;\n vm.aberrationId = $stateParams.aberrationId;\n vm.aberration = aberration.data.aberration;\n\n vm.showAddButton = vm.aberration.aberrationStatus !== 3;\n vm.showDelete = haveRole(\"AberrationAdmin\");\n\n vm.actions = actions.data.actions;\n\n vm.delete = function (action) {\n $confirm({\n text: \"Er du sikker på at du vil slette ?\"\n }).then(function () {\n aberrationApi.deleteAction(action).then(function () {\n $state.reload();\n });\n });\n };\n }\n];","export default [\"$log\", \"$uibModal\", \"$state\", \"commonApi\", \"$stateParams\", \"aberration\",\n function ($log, $uibModal, $state, commonApi, $stateParams, aberration) {\n\n var vm = this;\n\n\n vm.commentContext = {\n commentType: 1,\n id: $stateParams.aberrationId,\n allowAdd: true,\n commentStatus: aberration.data.aberration.aberrationStatus\n };\n\n }\n];","export default [\"$log\", \"reglineCategories\", \"$uibModalInstance\",\n function ($log, regLineCategories, $uibModalInstance) {\n var modalvm = this;\n modalvm.regLineCategoryId = null;\n modalvm.regLineCategories = regLineCategories;\n modalvm.cancel = function () {\n $uibModalInstance.close();\n };\n modalvm.ok = function () {\n $uibModalInstance.close(modalvm.regLineCategoryId);\n };\n }\n];","import convertctrl from \"./convert\";\nimport converthtml from \"./convert.html\";\nimport { get } from \"lodash\";\n\nexport default [\n \"$uibModal\",\n \"$log\",\n \"$state\",\n \"searchApi\",\n \"aberrationApi\",\n \"contactApi\",\n \"action\",\n \"houseApi\",\n \"toastr\",\n \"store\",\n \"$confirm\",\n \"haveRoleFilter\",\n \"moment\",\n function (\n $uibModal,\n $log,\n $state,\n searchApi,\n aberrationApi,\n contactApi,\n action,\n shouseApi,\n toastr,\n store,\n $confirm,\n haveRole,\n moment\n ) {\n function goToList() {\n $state.go(\n \"main.aberrations.aberration.actions\",\n {\n aberrationId: vm.action.aberrationId\n },\n {\n reload: true\n }\n );\n }\n\n function reloadAction(res) {\n $state.go(\n \"main.aberrations.aberration.actions.action\",\n {\n aberrationId: vm.action.aberrationId,\n actionId: res.data\n },\n {\n reload: true\n }\n );\n }\n\n var vm = this;\n vm.action = action.data.action;\n vm.actionTypes = action.data.actionTypes;\n vm.contactPersons = action.data.contactPersons;\n vm.regLineCategories = action.data.regLineCategories;\n vm.actionSeverities = action.data.actionSeverities;\n vm.canEditSeverity = action.data.canEditSeverity;\n var profile = store.get(\"profile\");\n\n // var isPrl = haveRole(\"PRL\");\n // vm.disableCompleteButton =\n // profile.contactPersonId !== vm.action.responsibleId || !isPrl;\n\n //Removed have role prl. Can add by || !isPrl\n vm.disableCompleteButton = function () {\n return profile.contactPersonId !== vm.action.responsibleId;\n };\n vm.actionStatus = vm.action.actionStatus;\n\n vm.showCompleteButton =\n vm.action.actionStatus !== 3 && vm.action.status !== 2;\n\n vm.actionTimeLimitExceedsAberrationTimeLimit =\n vm.action.timeLimit && vm.action.aberrationTimeLimit\n ? moment(vm.action.aberrationTimeLimit).isBefore(\n moment(vm.action.timeLimit)\n )\n : null;\n\n vm.completeAction = function () {\n vm.action.actionStatus = 3;\n aberrationApi.saveAction(vm.action).then(function () {\n goToList();\n }).catch(() => {\n vm.action.actionStatus = 1;\n });\n };\n\n vm.sendReminder = function () {\n contactApi\n .getContactPerson(vm.action.responsibleId)\n .then(response => {\n var email = get(\n response,\n \"data.contactperson.person.email\",\n null\n );\n\n if (email) {\n $confirm({\n text: `Vil du sende en epost til ${email} å minne om dette tiltaket?`\n }).then(function () {\n aberrationApi\n .sendReminder({\n actionId: vm.action.id,\n responsible: vm.action.responsibleId,\n email: email\n })\n .then(() => {\n toastr.success(\"Påminnelse sendt\");\n vm.saveAction();\n });\n });\n } else {\n toastr.warning(\"Finner ikke epost til ansvarlig\");\n }\n });\n };\n\n vm.saveAction = function () {\n aberrationApi.saveAction(vm.action).then(function (res) {\n if (vm.action.status === 2) {\n goToList();\n } else {\n reloadAction(res);\n }\n });\n };\n\n vm.convertToRegLine = function () {\n $uibModal\n .open({\n template: converthtml,\n controllerAs: \"modalvm\",\n resolve: {\n reglineCategories: [\n function () {\n return vm.regLineCategories;\n }\n ]\n },\n controller: convertctrl\n })\n .result.then(function (res) {\n if (res != null) {\n aberrationApi.saveAction(vm.action).then(function (r) {\n aberrationApi\n .convertToRegLine(vm.action.aberrationId, vm.action.id, res)\n .then(function (cRes) {\n var stateParams = {\n reglineId: cRes.data.reglineId\n };\n $state.go(\"main.reg.index\", stateParams);\n });\n });\n }\n });\n\n };\n }\n];\n","export default \"
\\n

Konverter til reklamasjon

\\n
\\n\\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n\\n\\n
\\n\\n \\n\\n \\n\\n
\";","import aberrations from \"album/aberrations/state\";\nimport aberrationactions from \"album/aberrationactions/state\";\nimport aberration from \"album/aberrations/aberration/state\";\nimport index from \"album/aberrations/aberration/index/state\";\nimport actions from \"album/aberrations/aberration/actions/state\";\nimport comments from \"album/aberrations/aberration/comments/state\";\nimport action from \"album/aberrations/aberration/actions/action/state\";\n\n\nexport default [\n aberrations,\n aberrationactions,\n aberration,\n index,\n actions,\n comments,\n action\n];","import ctrl from \"./ctrl\";\nimport html from \"./aberrations.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.aberrations\", {\n url: \"aberrations/{category}\",\n data: {\n requiresLogin: true\n },\n resolve: {\n aberrations: [\"aberrationApi\", \"$stateParams\", function (aberrationApi, $stateParams) {\n\n return aberrationApi.getAberrations($stateParams.category);\n\n }],\n category: [\"$stateParams\", function ($stateParams) {\n\n switch ($stateParams.category) {\n case \"0\":\n return {\n category: 0,\n title: \"Avviksregister\"\n };\n case \"1\":\n return {\n category: 1,\n title: \"Avvik\"\n };\n case \"2\":\n\n return {\n category: 2,\n title: \"RUH\"\n };\n case \"3\":\n\n return {\n category: 3,\n title: \"Forbedringsforslag\"\n };\n }\n\n\n }]\n },\n\n aData: {\n name: \"{{ category.title }}\"\n },\n\n\n views: {\n \"@\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n\n }\n });\n}];","export default \"
\\n
\\n \\n
\\n \\n \\n \\n \\n
\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n
Id OverskriftOpprettetKategori\\n Alvorlighetsgrad\\n ProsjektByggSeksjonEierTypeStatusFristRapportert avLukketLukket avAnsvarlig\\n Ansvarlig selskapTiltak\\n Sjekkliste\\n Prosess\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{a.id}}\\n \\n {{a.created | date:'dd.MM.yyyy'}}{{a.categoryString}}{{a.aberrationSeverity}}{{a.phase}}{{a.sectionNum}}\\n {{a.companyShort}}{{a.statusString}}{{a.timeLimit | date:'dd.MM.yyyy'}}{{a.reportedBy}}{{a.closedDate | date: 'dd.MM.yyyy'}}{{a.closedBy}}\\n \\n Ingen\\n\\n {{a.actions.openCnt}} Åpne\\n tiltak\\n Behandlet\\n \\n \\n\\n \\n \\n\\n\\n\\n\\n \\n \\n\\n\\n\\n
\\n
\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./aberrationactions.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.aberrationactions\", {\n url: \"aberrationactions\",\n data: {\n requiresLogin: true\n },\n resolve: {\n\n aberrationactions: [\"aberrationApi\", function (aberrationApi) {\n return aberrationApi.allAberrationActions();\n }]\n },\n\n aData: {\n name: \"Tiltaksregister\"\n },\n\n\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n\n }\n });\n}];","export default \"
\\n
\\n \\n
\\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n
Tiltaks-idStatusAlvorlighetsgradOpprettetTiltakAvviksId\\n Avvik\\n Prosjekt\\n Type\\n AnsvarligFristRapportert avLukketLukket av
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n {{\\n a.actionId }}\\n {{ a.actionStatus }}{{ a.aberrationSeverity }}{{ a.created | date: \\\"dd.MM.yyyy\\\" }}\\n {{\\n a.title }}\\n {{ a.aId }}\\n {{\\n a.aberration }}\\n \\n {{ a.project }}\\n {{ a.actionType }}{{ a.responsible }}{{ a.timeLimit | date: \\\"dd.MM.yyyy\\\" }}{{ a.reportedBy }}{{ a.closedDate | date: \\\"dd.MM.yyyy\\\" }}{{ a.closedBy }}
\\n
\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./aberration.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.aberrations.aberration\", {\n url: \"/{aberrationId}\",\n data: {\n requiresLogin: true\n },\n abstract: true,\n resolve: {\n aberration: [\"aberrationApi\", \"$stateParams\", function (aberrationApi, $stateParams) {\n\n return aberrationApi.getAberration($stateParams);\n }]\n },\n aData: {\n breadcrumbProxy: \"main.aberrations.aberration.index\"\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\t\\n\\t\\n\\t\\n\\t\\n\\t\\n\\n\\t\\n
\\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.aberrations.aberration.index\", {\n data: {\n requiresLogin: true\n },\n url: \"/aberration\",\n\n aData: {\n name: \"{{aberration.data.aberration.title || 'Ny'}}\"\n },\n\n views: {\n \"aberrationcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n\n\n });\n}];","export default \"
\\n
\\n

\\n Avviksmodul\\n

\\n
\\n \\n \\n \\n \\n
\\n
\\n\\n
\\n

\\n Sjekkliste:\\n \\n {{ vm.aberrationData.aberration.checklistItem.checklist.name }}\\n \\n

\\n

\\n Sjekklistepunkt: {{ vm.aberrationData.aberration.checklistItem.txt }}\\n

\\n\\n
\\n
\\n
\\n
\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./actions.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.aberrations.aberration.actions\", {\n data: {\n requiresLogin: true\n },\n url: \"/actions\",\n aData: {\n name: \"Tiltak\"\n },\n resolve: {\n actions: [\"aberrationApi\", \"$stateParams\", function (aberrationApi, $stateParams) {\n return aberrationApi.getActions($stateParams.aberrationId);\n }]\n },\n views: {\n \"aberrationcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n }\n\n\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n\\n
StatusTittelAlvorlighetsgradTypeAnsvarligFrist
{{a.aberrationActionStatus}}{{ a.title}}\\n {{a.aberrationSeverity}}{{a.actionTypeString}}{{a.responsibleContactPerson.person.fullName}}{{a.timeLimit | date:'dd.MM.yyyy'}}\\n \\n \\n
\\n
\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./comments.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.aberrations.aberration.comments\", {\n url: \"/comments\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Kommentarer\"\n },\n views: {\n \"aberrationcontent\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n }\n\n\n });\n}];","export default \"\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./action.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.aberrations.aberration.actions.action\", {\n data: {\n requiresLogin: true\n },\n url: \"/{actionId}\",\n\n aData: {\n name: \"{{action.data.action.title || 'Nytt tiltak'}}\"\n },\n resolve: {\n action: [\"aberrationApi\", \"$stateParams\", function (aberrationApi, $stateParams) {\n return aberrationApi.getAction($stateParams.aberrationId, $stateParams.actionId);\n }]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n }\n });\n}];","export default \"
\\n
\\n
\\n
\\n

Tiltak #{{vm.action.id}}

\\n
\\n
\\n \\n\\n \\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n

{{ vm.action.title }}

\\n \\n {{ vm.action.statusText }}\\n {{ vm.action.completedDate | date: \\\"dd.MM.yyyy\\\" }}\\n av\\n {{ vm.action.completedBy }}\\n \\n \\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\\n
\\n \\n \\n {{ $select.selected.display }}\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n Vedlegg\\n
\\n \\n
\\n
\\n
\\n
\\n

Tilknyttet avvik

\\n Frist på avvik er\\n {{ vm.action.aberrationTimeLimit | date: \\\"dd.MM.yyyy\\\" }}\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n
\\n
\\n
\";","import saveFile from \"shared/saveFile\";\nimport stateRef from \"../taskLink\";\nimport navigation from \"shared/navigation.js\";\nexport default [\n \"$log\",\n \"taskApi\",\n \"$state\",\n function ($log, taskApi, $state) {\n var currentTableState;\n\n var vm = this;\n vm.getTasks = function (tableState) {\n currentTableState = tableState;\n\n taskApi.getTasksPaged(currentTableState).then(function (res) {\n vm.taskTypes = res.data.taskTypes;\n vm.tasks = res.data.page.items;\n currentTableState.pagination.numberOfPages = res.data.page.totalPages;\n currentTableState.pagination.totalItemCount = res.data.page.totalItemCount;\n vm.totalPages = res.data.page.totalPages;\n });\n };\n vm.exportTable = function () {\n taskApi.exportTable(currentTableState).then(res => {\n saveFile(res, \"Oppgaver.xlsx\");\n });\n };\n\n vm.navigateToTask = task => {\n let ref;\n switch (task.taskType) {\n case 2: \n case 5:\n task.scheduleId = task.id;\n task.registrationLineId = task.id;\n ref = stateRef(task);\n\n if (ref.state) {\n $state.go(ref.state, ref.stateParams);\n } else {\n navigation(ref.route);\n }\n break;\n case 6:\n case 9:\n ref = stateRef(task);\n $state.go(ref.state, ref.stateParams);\n\n break;\n default:\n taskApi.getTask(task.id).then(response => {\n ref = stateRef(response.data.task);\n $state.go(ref.state, ref.stateParams);\n });\n break;\n }\n };\n }\n];\n","export default [\n \"$uibModalInstance\",\n \"task\",\n function ($uibModalInstance, task) {\n var modalvm = this;\n modalvm.close = function () {\n $uibModalInstance.close(modalvm.task);\n };\n modalvm.cancel = function () {\n\n modalvm.task.followUpComment = undefined;\n $uibModalInstance.close();\n };\n\n modalvm.task = task;\n\n\n }\n];","import { isEmpty, get } from \"lodash\";\nimport stateRef from \"../taskLink\";\nimport completeTaskCtrl from \"./completetask\";\nimport completeTaskHtml from \"./completetask.html\";\nexport default [\n \"$log\",\n \"store\",\n \"task\",\n \"taskApi\",\n \"subscriptionApi\",\n \"$state\",\n \"moment\",\n \"$confirm\",\n \"$uibModal\",\n \"toastr\",\n function(\n $log,\n store,\n task,\n taskApi,\n subscriptionApi,\n $state,\n moment,\n $confirm,\n $uibModal,\n toastr\n ) {\n function completeTaskModal(task) {\n var modalInstance = $uibModal.open({\n template: completeTaskHtml,\n controllerAs: \"modalvm\",\n controller: completeTaskCtrl,\n resolve: {\n task: task\n }\n });\n\n return modalInstance;\n }\n\n var vm = this;\n var profile = store.get(\"profile\");\n vm.task = task.data.task;\n vm.stateRef = stateRef(vm.task);\n vm.subscription = vm.task.subscriptions.find(\n x => x.contactPersonId === profile.contactPersonId\n );\n\n vm.prospectContactInfo = isEmpty(task.data.prospectContactInfo)\n ? undefined\n : task.data.prospectContactInfo;\n vm.task.when = moment(vm.task.deadLine).fromNow();\n\n vm.users = task.data.users;\n vm.taskTypes = task.data.taskTypes;\n vm.editTask = function() {\n $state.go(\"main.tasks.edit\", {\n taskId: vm.task.id\n });\n };\n\n vm.notifyTask = function() {\n const subscription = vm.subscription || {\n type: 0,\n taskId: vm.task.id\n };\n\n if (subscription.id) {\n $confirm({\n text: \"Vil du fjerne varsling fra denne oppgaven?\"\n }).then(() => {\n subscriptionApi.remove(subscription).then(() => {\n vm.subscription = null;\n toastr.info(\"Varsling fjernet\");\n });\n });\n } else {\n $confirm({\n text: \"Vil du bli varslet når denne oppgaven fullføres?\"\n }).then(() => {\n subscriptionApi.add(subscription).then(response => {\n vm.subscription = response.data;\n toastr.info(\n \"Du vil bli varslet når denne oppgaven fullføres\"\n );\n });\n });\n }\n };\n\n vm.deleteTask = function() {\n $confirm({\n text: \"Vil du slette oppgaven?\"\n }).then(function() {\n taskApi.deleteTask(vm.task).then(function() {\n $state.go(\n \"main.tasks\",\n {},\n {\n reload: true\n }\n );\n });\n });\n };\n\n vm.completeSubTask = function(st) {\n if (st.isCompleted) {\n taskApi.completeSubTask(st).then(function() {});\n }\n };\n vm.completeTask = function() {\n var skipModal = vm.task.taskType === 1 || vm.task.taskType === 3;\n if (skipModal) {\n completeTaskDb(vm.task);\n } else {\n completeTaskModal(vm.task).result.then(task => {\n if (task) {\n completeTaskDb(task);\n }\n });\n }\n };\n\n var completeTaskDb = task => {\n taskApi.completeTask(task).then(response => {\n var followup = get(response, \"data.followup\");\n\n if (followup) {\n switch (followup) {\n case \"prospect\":\n $state.go(\"main.tasks.followup-prospect\", {\n taskId: response.data.id\n });\n break;\n case \"viewing\":\n $state.go(\"main.tasks.followup-viewing\", {\n taskId: response.data.id\n });\n break;\n default:\n // $state.reload();\n break;\n }\n } else {\n history.go(-1);\n // $state.reload();\n }\n });\n };\n }\n];\n","export default \"
\\n

Legg til kommentar etter fullført oppgave

\\n
\\n
\\n
\\n \\n \\n
\\n
\\n\\n\\n
\\n\\n \\n \\n\\n
\";","import { remove, find } from \"lodash\";\nimport uuidv4 from \"uuid/v4\";\nexport default [\n \"$log\",\n \"task\",\n \"taskApi\",\n \"$state\",\n\n \"projectApi\",\n \"sectionApi\",\n \"$uibModal\",\n \"moment\",\n \"searchApi\",\n \"projects\",\n \"$q\",\n \"$scope\",\n \"store\",\n \"commonApi\",\n \"toastr\",\n function(\n $log,\n task,\n taskApi,\n $state,\n\n projectApi,\n sectionApi,\n $uibModal,\n moment,\n searchApi,\n projects,\n $q,\n $scope,\n store,\n commonApi,\n toastr\n ) {\n var vm = this;\n vm.task = task.data.task;\n\n var profile = store.get(\"profile\");\n vm.task.taskGuid = uuidv4();\n\n var preSelectedSection = vm.task.projSectionId;\n var preSelectedCustomer = vm.task.customerId;\n\n vm.task.when = moment(vm.task.deadLine).fromNow();\n if (vm.task.deadLine) {\n vm.task.deadLine = moment(vm.task.deadLine)\n .startOf(\"minute\")\n .toDate();\n vm.task.deadLineTime = moment(vm.task.deadLine).format(\"HH:mm\");\n }\n\n vm.projects = projects.data;\n vm.users = task.data.users;\n vm.sections = task.data.sections;\n vm.taskTypes = task.data.taskTypes;\n\n vm.cancelEdit = function() {\n if (vm.task.id) {\n $state.go(\"main.tasks.view\", {\n taskId: vm.task.id\n });\n } else {\n $state.go(\"main\");\n }\n };\n\n vm.addSubTask = function() {\n vm.task.subTasks = vm.task.subTasks || [];\n vm.task.subTasks.push({\n status: 2\n });\n };\n vm.changeSubTask = function(st, del) {\n if (del) {\n if (st.status === 2) {\n remove(vm.task.subTasks, st);\n } else {\n st.status = -1;\n }\n } else {\n st.status = st.status === 2 ? 2 : 1;\n }\n };\n\n vm.saveTask = function() {\n\n if (!vm.task.customerAcceptSms && vm.task.sendSms) {\n toastr.warning(\"Kan ikke sende sms til kunder som har reservert seg!\");\n }\n\n var m = moment(vm.task.deadLine);\n if (vm.task.deadLineTime) {\n var time = vm.task.deadLineTime.split(\":\");\n\n m.set(\"hour\", time[0]);\n m.set(\"minute\", time[1]);\n m.set(\"second\", 0);\n m.set(\"millisecond\", 0);\n }\n\n vm.task.deadLine = m.toDate();\n\n taskApi.saveTask(vm.task).then(function(res) {\n $state.go(\n \"main.tasks.view\",\n {\n taskId: res.data.id\n },\n {\n reload: true\n }\n );\n });\n };\n\n vm.projectChanged = function() {\n vm.task.customerId = null;\n vm.task.projSectionId = null;\n\n var promises = [];\n\n promises.push(\n sectionApi\n .getSectionList(vm.task.projectId)\n .then(function(res) {\n vm.sections = res.data;\n })\n );\n\n promises.push(\n projectApi\n .getProjectCustomers(vm.task.projectId)\n .then(function(res) {\n vm.customers = res.data;\n })\n );\n\n promises.push(\n projectApi.getProject(vm.task.projectId).then(function(res) {\n vm.task.address = res.data.project.address;\n vm.task.postCodeId = res.data.project.postCodeId;\n })\n );\n\n return $q.all(promises);\n };\n vm.typeChanged = function() {\n if (vm.task.taskType === 8) {\n vm.task.assignedTo = null;\n }\n if (vm.task.taskType !== 3) {\n vm.task.sendSms = false;\n }\n };\n vm.sectionChanged = function() {\n if (!vm.task.projSectionId) return;\n\n var section = find(vm.sections, function(s) {\n return s.id === vm.task.projSectionId;\n });\n\n vm.task.customerId = section.customerId;\n vm.task.houseId = section.houseId;\n };\n vm.customerChanged = function() {\n if (!vm.task.customerId) \n {\n vm.task.smsNumber = null;\n vm.task.customerAcceptSms = false;\n vm.task.sendSms = false;\n return; \n }\n\n vm.customer =\n find(vm.customers, function(c) {\n return c.customerId === vm.task.customerId;\n }) || {};\n vm.task.projSectionId = vm.customer.projSectionId;\n vm.task.houseId = vm.customer.projSectionProjPhase;\n\n vm.task.smsNumber = vm.customer.customerPerson.mobile;\n vm.task.customerAcceptSms = vm.customer.customerPerson.acceptSms;\n };\n vm.searchProjects = function(s) {\n return projectApi.searchProjects(s).then(function(res) {\n return res.data;\n });\n };\n\n vm.searchContactPerson = function(s) {\n if (!s) return;\n searchApi.searchContactPersons(s, 1).then(function(res) {\n vm.contactpersons = res.data;\n });\n };\n\n if (vm.task.assignedTo) {\n vm.contactpersons = [\n {\n contactPersonId: vm.task.assignedTo,\n contactPersonName:\n vm.task.assignedToContactPersonPersonFullName\n }\n ];\n }\n\n if (vm.task.projectId) {\n vm.projectChanged().then(function() {\n if (preSelectedSection) {\n vm.task.projSectionId = preSelectedSection;\n\n vm.sectionChanged();\n }\n if (preSelectedCustomer) {\n vm.task.customerId = preSelectedCustomer;\n vm.customerChanged();\n }\n });\n }\n\n $scope.$watchGroup([\"vm.task.deadLine\", \"vm.task.deadLineTime\", \"vm.task.customerId\"], function(newVals) {\n var date = newVals[0];\n var time = newVals[1];\n var cutomerId = newVals[2];\n \n if (date && time && cutomerId) {\n vm.viewingTime = commonApi.getDateTime(\n vm.task.deadLine,\n vm.task.deadLineTime\n );\n var formattedDate = moment(\n vm.viewingTime\n ).format(\"Do MMM HH:mm\");\n \n var calLink =\n apiAddress +\n \"/tasks/calendar/\" +\n vm.task.taskGuid;\n\n vm.task.smsText = `Hei ${vm.customer.customerPersonFullName}\\nVisning er avtalt til ${formattedDate}\\nHilsen ${profile.name}\\n\\n${calLink}`;\n } else {\n vm.task.smsText = \"\";\n }\n });\n }\n];\n","import uuidv4 from \"uuid/v4\";\nexport default [\n \"$log\",\n \"task\",\n \"$stateParams\",\n \"taskApi\",\n \"$state\",\n \"albumConfig\",\n \"commonApi\",\n \"toastr\",\n \"$scope\",\n \"moment\",\n \"store\",\n function(\n $log,\n task,\n $stateParams,\n taskApi,\n $state,\n albumConfig,\n commonApi,\n toastr,\n $scope,\n moment,\n store\n ) {\n var vm = this;\n var apiAddress = albumConfig.apiAddress;\n\n var profile = store.get(\"profile\");\n\n vm.profile = profile;\n\n vm.task = task.data.task;\n vm.completeProspectTaskRequest = {\n guid: uuidv4(),\n taskId: vm.task.id,\n smsNumber: vm.task.customerMobile,\n viewingTaskName: `Visning ${vm.task.projectName} - ${vm.task.customerPersonFullName}`\n };\n\n $scope.$watchGroup([\"vm.date\", \"vm.time\"], function(newVals) {\n var date = newVals[0];\n var time = newVals[1];\n if (date && time) {\n vm.completeProspectTaskRequest.viewingTime = commonApi.getDateTime(\n vm.date,\n vm.time\n );\n var formattedDate = moment(\n vm.completeProspectTaskRequest.viewingTime\n ).format(\"Do MMM HH:mm\");\n var calLink =\n apiAddress +\n \"/tasks/calendar/\" +\n vm.completeProspectTaskRequest.guid;\n vm.completeProspectTaskRequest.smsText = `Hei ${vm.task.customerPersonFullName}\\nVisning er avtalt til ${formattedDate}\\nHilsen ${vm.profile.name}\\n\\n${calLink}`;\n }\n });\n\n vm.time = \"12:00\";\n\n vm.changeRating = function(rating) {\n vm.completeProspectTaskRequest.probability = rating;\n };\n\n vm.completeTask = function() {\n if (\n vm.completeProspectTaskRequest.sendSms &&\n vm.completeProspectTaskRequest.smsNumber.length !== 8\n ) {\n toastr.error(\n `Kan ikke fullføre oppgave, sms kan ikke sendes til ${vm.completeProspectTaskRequest.smsNumber} `\n );\n return;\n }\n\n taskApi\n .completeProspectTask(vm.completeProspectTaskRequest)\n .then(response => {\n toastr.success(\"Oppgave fullført\");\n if (response.data && response.data.smsResponse) {\n if (response.data.smsResponse.error) {\n toastr.error(\"Feil ved sending av SMS!\");\n } else {\n toastr.success(\"SMS sendt!\");\n }\n }\n history.go(-2);\n // $state.go(\n // \"main.tasks.view\",\n // {\n // taskId: vm.task.id\n // },\n // {\n // reload: true\n // }\n // );\n });\n };\n }\n];\n","export default [\n \"$log\",\n \"task\",\n \"$stateParams\",\n \"taskApi\",\n \"$state\",\n \"toastr\",\n\n function ($log, task, $stateParams, taskApi, $state, toastr) {\n var vm = this;\n\n\n vm.task = task.data.task;\n\n\n vm.changeRating = function (rating) {\n vm.task.probability = rating;\n };\n\n vm.completeTask = function () {\n\n\n taskApi.completeViewingTask(vm.task).then(() => {\n\n toastr.success(\"Oppgave fullført\");\n\n\n $state.go(\n \"main.tasks.view\", {\n taskId: vm.task.id\n }, {\n reload: true\n }\n );\n });\n };\n\n\n }\n];","import { map, groupBy, first, filter } from \"lodash\";\n\nfunction tasksByCategoryChartConfig(tasks) {\n var tasksNotDone = filter(tasks, { isCompleted: false });\n\n var groupedByType = map(\n groupBy(tasksNotDone, \"taskTypeString\"),\n (arr, key) => {\n return {\n category: key,\n notCompleted: arr.length,\n color: first(arr) && first(arr).taskColor\n };\n }\n );\n\n return {\n chart: {\n type: \"column\"\n },\n title: {\n text: \"Oppgave oversikt\"\n },\n xAxis: {\n categories: map(groupedByType, c => {\n return c.category;\n })\n },\n yAxis: {\n min: 0,\n title: {\n text: \"Antall oppgaver\"\n },\n stackLabels: {\n enabled: true,\n style: {\n fontWeight: \"bold\"\n }\n }\n },\n legend: {\n enabled: false\n },\n tooltip: {\n headerFormat: \"{point.x}
\",\n pointFormat:\n \"{series.name}: {point.y}
Total: {point.stackTotal}\"\n },\n plotOptions: {\n column: {\n stacking: \"normal\",\n dataLabels: {\n enabled: true\n }\n }\n },\n series: [\n {\n name: \"Gjenstående oppgaver\",\n //colorByPoint: true,\n allowPointSelect: true,\n point: {\n events: {}\n },\n color: \"rgba(0,0,0,0.1)\",\n data: map(groupedByType, c => {\n return {\n y: c.notCompleted,\n color: c.color\n };\n })\n }\n /*, {\n name: \"Fullførte oppgaver\",\n colorByPoint: true,\n data: map(groupedByType, c => {\n return c.completed;\n })\n } */\n ]\n };\n}\n\nexport default tasksByCategoryChartConfig;\n","export default [\"$uibModalInstance\",\n function ($uibModalInstance) {\n var modalvm = this;\n\n\n modalvm.tasksOverview = {\n chart: {\n type: \"column\"\n },\n title: {\n text: \"Oppgave oversikt\"\n },\n xAxis: {\n categories: [\"Egenkontroll\", \"Visning\", \"Forbedringsforslag\", \"Sjekkliste\", \"Kategori\"]\n },\n yAxis: {\n min: 0,\n title: {\n text: \"Antall oppgaver\"\n },\n stackLabels: {\n enabled: true,\n style: {\n fontWeight: \"bold\"\n }\n }\n },\n legend: {\n enabled: false\n },\n tooltip: {\n headerFormat: \"{point.x}
\",\n pointFormat: \"{series.name}: {point.y}
Total: {point.stackTotal}\"\n },\n plotOptions: {\n column: {\n stacking: \"normal\",\n dataLabels: {\n enabled: true\n }\n }\n },\n series: [{\n name: \"Gjenstående oppgaver\",\n color: \"rgba(0,0,0,0.1)\",\n data: [2, 2, 3, 2, 1]\n }, {\n name: \"Fullførte oppgaver\",\n colorByPoint: true,\n data: [3, 4, 4, 2, 5]\n }]\n };\n\n modalvm.completedTasksOverview = {\n chart: {\n plotBackgroundColor: null,\n plotBorderWidth: null,\n plotShadow: false,\n type: \"pie\"\n },\n title: {\n text: \"Fullførte oppgaver\"\n },\n tooltip: {\n pointFormat: \"{series.name}: {point.percentage:.1f}%\"\n },\n plotOptions: {\n pie: {\n allowPointSelect: true,\n cursor: \"pointer\",\n dataLabels: {\n enabled: false\n },\n showInLegend: true\n }\n },\n series: [{\n name: \"Brands\",\n colorByPoint: true,\n data: [{\n name: \"Fullført\",\n y: 60,\n sliced: true,\n selected: true\n }, {\n name: \"Ikke fullført\",\n y: 40\n }]\n }]\n };\n\n modalvm.taskTypeOverview = {\n chart: {\n plotBackgroundColor: null,\n plotBorderWidth: null,\n plotShadow: false,\n type: \"pie\"\n },\n title: {\n text: \"Oppgave typer\"\n },\n tooltip: {\n pointFormat: \"{series.name}: {point.percentage:.1f}%\"\n },\n plotOptions: {\n pie: {\n allowPointSelect: true,\n cursor: \"pointer\",\n dataLabels: {\n enabled: false\n },\n showInLegend: true\n }\n },\n series: [{\n name: \"Brands\",\n colorByPoint: true,\n data: [{\n name: \"Egenkontroll\",\n y: 10,\n sliced: true,\n selected: true\n }, {\n name: \"Visning\",\n y: 15\n }, {\n name: \"Forbedringsforslag\",\n y: 20\n }, {\n name: \"Sjekkliste\",\n y: 6\n }, {\n name: \"Kategori\",\n y: 25\n }]\n }]\n };\n\n modalvm.tasksPerMonth = {\n title: {\n text: \"Oppgaver per måned\"\n },\n yAxis: {\n title: {\n text: \"Antall oppgaver\"\n }\n },\n legend: {\n layout: \"vertical\",\n align: \"right\",\n verticalAlign: \"middle\"\n },\n plotOptions: {\n series: {\n label: {\n connectorAllowed: false\n },\n pointStart: 2010\n }\n },\n series: [{\n name: \"Installation\",\n data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175]\n }, {\n name: \"Manufacturing\",\n data: [24916, 24064, 29742, 29851, 32490, 30282, 38121, 40434]\n }, {\n name: \"Sales & Distribution\",\n data: [11744, 17722, 16005, 19771, 20185, 24377, 32147, 39387]\n }, {\n name: \"Project Development\",\n data: [null, null, 7988, 12169, 15112, 22452, 34400, 34227]\n }, {\n name: \"Other\",\n data: [12908, 5948, 8105, 11248, 8989, 11816, 18274, 18111]\n }],\n responsive: {\n rules: [{\n condition: {\n maxWidth: 500\n },\n chartOptions: {\n legend: {\n layout: \"horizontal\",\n align: \"center\",\n verticalAlign: \"bottom\"\n }\n }\n }]\n }\n };\n\n modalvm.close = function () {\n $uibModalInstance.close();\n };\n }\n];","import stateRef from \"../taskLink\";\nimport { loadCalendar } from \"./calendar\";\n//import completedTasksChart from \"./completedTasksChart\";\n\nimport tasksByCategoryChart from \"./tasksByCategoryChart\";\n\nimport myTasksModalCtrl from \"./myTasksModalCtrl\";\nimport myTasksModalHtml from \"./myTasksModal.html\";\nimport { uniqBy, map, filter, isEmpty, forOwn, forEach, find } from \"lodash\";\nimport moment from \"moment\";\nimport navigation from \"shared/navigation.js\";\n\nexport default [\n \"$log\",\n \"taskApi\",\n \"tasks\",\n \"$state\",\n \"$uibModal\",\n \"$scope\",\n \"filterFilter\",\n \"store\",\n function (\n $log,\n taskApi,\n tasks,\n $state,\n $uibModal,\n $scope,\n filterFilter,\n store\n ) {\n function pagination(items) {\n let itemCount = items.length;\n let itemsPrPage = 8;\n let currentPage = 1;\n\n return {\n currentPage: currentPage,\n totalItems: itemCount,\n itemsPrPage: itemsPrPage,\n maxSize: Math.ceil(itemCount / itemsPrPage),\n show: itemCount > itemsPrPage\n };\n }\n\n var vm = this;\n vm.nav = navigation;\n const events = tasks.data.tasks\n .filter(t => !t.isCompleted)\n .map(t => {\n return {\n title: t.name,\n start: moment(t.deadLine).format(\"YYYY-MM-DD\"),\n color: t.taskColor,\n extendedProps: {\n task: t\n }\n };\n });\n\n loadCalendar(\"calendar\", events, $state);\n //vm.completedTasksOverview = completedTasksChart(tasks.data.tasks);\n\n // vm.sort = \"deadLine\";\n var storedSort = store.get(\"mytasks-sort\");\n vm.sort = isEmpty(storedSort) ? \"deadLine\" : storedSort; \n\n var storedSearch = store.get(\"mytasks-search\");\n storedSearch = isEmpty(storedSearch) ? undefined : storedSearch;\n\n vm.search = storedSearch || {\n isCompleted: false\n };\n vm.hideCompleted = !vm.search.isCompleted;\n vm.changeHideCompleted = () => {\n vm.search.isCompleted = vm.hideCompleted ? false : undefined;\n };\n\n vm.pagination = pagination(tasks.data.tasks);\n\n vm.resetFilter = () => {\n vm.search = {};\n vm.hideCompleted = false;\n };\n\n $scope.$watch(\n \"vm.search\",\n function (newVal) {\n $log.info(newVal);\n if (newVal) {\n forOwn(newVal, function (value, key) {\n if (value === \"\") delete newVal[key];\n });\n }\n\n vm.showReset = !isEmpty(newVal);\n\n vm.filtered = filterFilter(vm.tasks, newVal);\n vm.pagination = pagination(vm.filtered);\n\n store.set(\"mytasks-search\", newVal);\n },\n true\n );\n\n $scope.$watch(\n \"vm.sort\",\n function (newVal) {\n store.set(\"mytasks-sort\", newVal);\n },\n true\n );\n\n vm.tasks = tasks.data.tasks;\n \n vm.taskTypes = filter(\n map(\n uniqBy(tasks.data.tasks, t => {\n return t.taskType;\n }),\n t => {\n return {\n id: t.taskType,\n name: t.taskTypeString\n };\n }\n ),\n tt => {\n return tt.id !== undefined;\n }\n );\n\n vm.navigateToTask = task => {\n var ref = stateRef(task);\n if (ref.state) {\n $state.go(ref.state, ref.stateParams);\n } else {\n vm.nav(ref.route);\n }\n \n };\n\n vm.openMyTasksModal = function () {\n $uibModal.open({\n animation: true,\n template: myTasksModalHtml,\n controllerAs: \"modalvm\",\n size: \"fullscreen\",\n controller: myTasksModalCtrl\n });\n };\n\n const handleClick = function () {\n var tt = this.selected\n ? undefined\n : find(vm.taskTypes, type => {\n return type.name === this.category;\n });\n vm.search.taskType = tt && tt.id;\n\n $scope.$apply();\n };\n\n vm.tasksOverview = tasksByCategoryChart(tasks.data.tasks);\n\n forEach(vm.tasksOverview.series, s => {\n s.cursor = \"pointer\";\n s.point.events = {\n click: handleClick\n };\n });\n }\n];\n","import stateRef from \"../taskLink\";\nimport { Calendar } from \"@fullcalendar/core\";\nimport dayGridPlugin from \"@fullcalendar/daygrid\";\nimport bootstrapPlugin from \"@fullcalendar/bootstrap\";\n\nimport nbLocale from \"@fullcalendar/core/locales/nb\";\nimport navigation from \"shared/navigation.js\";\n\nimport \"@fullcalendar/core/main.css\";\nimport \"@fullcalendar/daygrid/main.css\";\nimport \"@fullcalendar/bootstrap/main.css\";\n\nfunction loadCalendar(el, events, $state) {\n var calendarEl = document.getElementById(el);\n\n var calendar = new Calendar(calendarEl, {\n plugins: [dayGridPlugin, bootstrapPlugin],\n defaultView: \"dayGridMonth\",\n header: {\n left: \"prev,next\",\n center: \"title\",\n right: \"dayGridMonth,dayGridWeek\"\n },\n locale: nbLocale,\n contentHeight: \"auto\",\n weekNumbers: true,\n themeSystem: \"bootstrap\",\n eventClick: function(info) {\n var ref = stateRef(info.event.extendedProps.task);\n if (ref.state) {\n $state.go(ref.state, ref.stateParams);\n } else {\n navigation(ref.route);\n }\n },\n events: events\n });\n\n calendar.render();\n}\n\nexport { loadCalendar };\n","export default \"
\\n
Mine oppgave statistikk
\\n \\n
\\n\\n\\n\\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n \\n
\\n\";","import all from \"album/tasks/all/state\";\nimport taskview from \"album/tasks/taskview/state\";\nimport taskedit from \"album/tasks/taskedit/state\";\nimport prospect from \"album/tasks/followup/prospect/state\";\nimport viewing from \"album/tasks/followup/viewing/state\";\nimport mytask from \"album/tasks/mytasks/state\";\n\n\nexport default [\n all,\n taskview,\n taskedit,\n prospect,\n viewing,\n mytask\n];","import ctrl from \"./ctrl\";\nimport html from \"./all.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.tasks\", {\n url: \"tasks\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Oppgaver\"\n },\n views: {\n \"@\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n \\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n\\n\\n \\n \\n \\n \\n \\n \\n
OpprettetAvFristOppgaveProsjektByggTypeAnsvarligFullført\\n Fullført av
\\n \\n \\n \\n \\n \\n
{{task.createdDate | date:'dd.MM.yyyy'}}{{task.createdBy}}{{task.deadLine | date:'dd.MM.yyyy'}}\\n \\n \\n {{task.projectName}}\\n \\n Bygg\\n {{task.houseNum}}\\n {{task.taskTypeString}}{{task.assignedTo}}{{task.completedDate| date : 'dd.MM.yyyy'}}{{task.completedBy}}
\\n
\\n \\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./taskview.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.tasks.view\", {\n url: \"/{taskId}\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{task.data.task.name}}\"\n },\n resolve: {\n task: [\"taskApi\", \"$stateParams\", function (taskApi, $stateParams) {\n return taskApi.getTask($stateParams.taskId, {});\n }]\n },\n views: {\n \"@\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n\n }\n });\n}];","export default \"\\n\\n
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

{{vm.task.name}}

\\n\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t{{vm.task.when}}\\n\\t\\t\\t\\t\\t0\\\">- {{ (vm.task.subTasks | filter\\n\\t\\t\\t\\t\\t\\t:{isCompleted:true}).length}} av\\n\\t\\t\\t\\t\\t\\t{{vm.task.subTasks.length}} oppgaver utført\\n\\t\\t\\t\\t

\\n\\t\\t\\t\\t

\\n\\t\\t\\t\\t\\t Oppgave fullført {{\\n\\t\\t\\t\\t\\tvm.task.completedDate | date : 'dd.MM.yyyy HH:mm'}}\\n\\t\\t\\t\\t

\\n\\t\\t\\t\\t

{{vm.task.followUpComment}}

\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
Oppgavetype:{{vm.task.taskTypeString}}
Prosjekt:{{vm.task.projectName}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
Seksjon:{{vm.task.sectionSectionNum}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
Kunde:{{vm.task.customerPersonFullName}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t
Telefon:\\n\\t\\t\\t\\t\\t\\t\\t\\t{{vm.prospectContactInfo.phone}}\\n\\t\\t\\t\\t\\t\\t\\t
Epost:\\n\\t\\t\\t\\t\\t\\t\\t\\t{{vm.prospectContactInfo.email}}\\n\\t\\t\\t\\t\\t\\t\\t
Sted:{{vm.task.address}},{{vm.task.postCodePostCodeText}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{{vm.task.postCodePostName | uppercase }}\\n\\t\\t\\t\\t\\t\\t\\t
Oppgave linket til:\\n\\t\\t\\t\\t\\t\\t\\t\\t{{vm.stateRef.name}}\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
Opprettet av:\\n\\t\\t\\t\\t\\t\\t\\t\\t{{vm.task.createdByUserContactPersonPersonFullName}}\\n\\t\\t\\t\\t\\t\\t\\t
Ansvarlig:\\n\\t\\t\\t\\t\\t\\t\\t\\t{{vm.task.assignedToContactPersonPersonFullName}}\\n\\t\\t\\t\\t\\t\\t\\t
Fullført av:\\n\\t\\t\\t\\t\\t\\t\\t\\t{{vm.task.completedByName}}\\n\\t\\t\\t\\t\\t\\t\\t
Deadline:\\n\\t\\t\\t\\t\\t\\t\\t\\t{{vm.task.deadLine | date : 'dd.MM.yyyy HH:mm'}}Ingen frist satt
\\n\\t\\t\\t
\\n\\t\\t
\\n\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

Oppgave beskrivelse

\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t

{{vm.task.note || vm.task.autoText}}

\\n\\t\\t\\t\\t

Vedlegg

\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t

Deloppgaver

\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\t
{{st.name}}
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t

{{st.note}}

\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./taskedit.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.tasks.edit\", {\n url: \"/{taskId}/edit\",\n data: {\n requiresLogin: true\n },\n params: {\n createTask: null\n },\n aData: {\n name: \"{{task.data.task.name || 'Ny oppgave'}}\"\n },\n resolve: {\n task: [\"taskApi\", \"$stateParams\", function (taskApi, $stateParams) {\n return taskApi.getTask($stateParams.taskId, $stateParams.createTask);\n }],\n projects: [\"projectApi\", function (projectApi) {\n return projectApi.getProjectList();\n }]\n },\n views: {\n \"@\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t

Rediger\\n\\t\\t\\t\\t"{{vm.task.name}}"

\\n\\t\\t\\t

Opprett ny oppgave

\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\t
\\n\\t\\t\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t Kunde har\\n\\t\\t\\t\\t\\t\\treservert seg mot SMS-varslinger\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\n\\n\\t\\t
\\n\\t\\t\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t{{$select.selected.name}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\n\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t{{$select.selected.contactPersonName}}\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\n\\t\\t\\t
Deloppgaver:
\\n\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\n\\t\\t
\\n\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./prospect.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.tasks.followup-prospect\", {\n url: \"/followup/{taskId}/prospect\",\n data: {\n requiresLogin: true\n },\n\n aData: {\n name: \"{{task.data.task.name}}\"\n },\n resolve: {\n task: [\"taskApi\", \"$stateParams\", function (taskApi, $stateParams) {\n return taskApi.getTask($stateParams.taskId);\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n\n }\n });\n}];","export default \"
\\n
\\n
\\n
\\n

Fullføre "{{vm.task.name}}"

\\n

Oppgave\\n fullført

\\n
\\n\\n
\\n
\\n
\\n
\\n\\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n\\n
\\n\\n \\n \\n
\\n\\n
\\n \\n \\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n
\\n \\n \\n
\\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n\\n\\n\\n
\\n
\\n\\n\\n\\n
\\n \\n \\n
\\n
\\n\\n
\\n Kunde har\\n reservert seg mot SMS-varslinger\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n\\n
\\n \\n
\\n\\n\\n
\\n\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./viewing.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.tasks.followup-viewing\", {\n url: \"/followup/{taskId}/viewing\",\n data: {\n requiresLogin: true\n },\n\n aData: {\n name: \"{{task.data.task.name}}\"\n },\n resolve: {\n task: [\"taskApi\", \"$stateParams\", function (taskApi, $stateParams) {\n return taskApi.getTask($stateParams.taskId);\n }]\n },\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n\n }\n });\n}];","export default \"
\\n
\\n
\\n
\\n

Fullføre "{{vm.task.name}}"

\\n

Oppgave\\n fullført

\\n
\\n\\n
\\n
\\n
\\n\\n
\\n\\n
\\n
\\n\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n\\n
\\n \\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./mytasks.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.mytasks\", {\n url: \"mytasks\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Mine oppgaver\"\n },\n resolve: {\n tasks: [\"taskApi\", taskApi => {\n return taskApi.getAllMyTasks();\n }]\n },\n views: {\n \"@\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n
\\n \\n
\\n\\n \\n
\\n\\n \\n\\n
\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n
\\n\\n\\n \\n\\n
\\n
\\n Ingen oppgaver\\n 0\\\">{{vm.tasks.length}} oppgaver skjult\\n av filter\\n
\\n
\\n
\\n\\n \\n\\n
\\n \\n
\\n
\\n
\\n
\\n \\n
\";","export default [\n \"$log\",\n \"orders\",\n function ($log, orders) {\n var vm = this;\n vm.orders = orders.data;\n }\n];","import { forEach } from \"lodash\";\nimport saveFile from \"shared/saveFile\";\nexport default [\n \"$log\",\n \"order\",\n \"orderApi\",\n \"$confirm\",\n \"$state\",\n function ($log, order, orderApi, $confirm, $state) {\n var vm = this;\n\n vm.order = order.data;\n vm.isReceivingGoods = false;\n\n forEach(vm.order.orderLines, function (orderLine) {\n if (orderLine.qtyAlreadyReceived < orderLine.qty) {\n vm.canReceiveGoods = true;\n }\n });\n\n vm.download = function () {\n orderApi.downloadOrderPdf(vm.order.id).then(res => {\n saveFile(res, `Bestilling #${vm.order.orderId}.pdf`, \"application/pdf\");\n });\n };\n\n vm.validateOrderLine = function (orderLine) {\n var allowedReceivedGoodsActions = [];\n orderLine.allowedReceivedGoodsActions = [] || orderLine.allowedReceivedGoodsActions;\n if (orderLine.qtyReceived == orderLine.qty ||\n (orderLine.qtyReceived + orderLine.qtyAlreadyReceived) == orderLine.qty) {\n allowedReceivedGoodsActions = [\n { id: 0, description: \"Rapporter fullt mottak\" }\n ];\n }\n else if ((orderLine.qtyReceived == null || orderLine.qtyReceived == 0) ||\n (orderLine.qtyReceived < orderLine.qty)\n ) {\n allowedReceivedGoodsActions = [\n { id: 2, description: \"Rapporter delmottak\" },\n { id: 1, description: \"Rapporter fullt mottak (korriger ant. i bestilling)\" }\n ];\n }\n else if ((orderLine.qtyReceived + orderLine.qtyAlreadyReceived) > orderLine.qty) {\n allowedReceivedGoodsActions = [];\n orderLine.qtyReceived = null;\n }\n\n if (allowedReceivedGoodsActions.length > 0)\n orderLine.receivedGoodsAction = allowedReceivedGoodsActions[0].id;\n else\n orderLine.receivedGoodsAction = null;\n orderLine.allowedReceivedGoodsActions = [...allowedReceivedGoodsActions];\n };\n\n vm.validate = function () {\n forEach(vm.order.orderLines, function (orderLine) {\n vm.validateOrderLine(orderLine);\n });\n };\n\n vm.receiveGoods = function () {\n vm.isReceivingGoods = !vm.isReceivingGoods;\n if (vm.isReceivingGoods) {\n $confirm({\n text: \"Er det bestilte antallet på alle varene i ordren mottatt?\",\n ok: \"Ja\",\n cancel: \"Nei\"\n }).then(function () {\n forEach(vm.order.orderLines, function (orderLine) {\n if (orderLine.qtyAlreadyReceived > 0) {\n orderLine.qtyReceived = orderLine.qty - orderLine.qtyAlreadyReceived;\n } else {\n orderLine.qtyReceived = orderLine.qty;\n }\n });\n vm.validate();\n });\n } else {\n forEach(vm.order.orderLines, function (orderLine) {\n orderLine.qtyReceived = null;\n orderLine.receivedGoodsAction = null;\n });\n vm.validate();\n }\n };\n\n\n vm.confirmReceivedGoods = function () {\n $confirm({\n text: \"Bekrefte varemottak?\",\n ok: \"Ja\",\n cancel: \"Nei\"\n }).then(function () {\n orderApi.postReceivedGoods(vm.order.orderId, vm.order.orderLines).then(() => {\n $state.reload();\n });\n });\n };\n }\n];\n","export default [\"$log\", \"components\", \"$state\", \"$window\", function ($log, components, $state, $window) {\n\n var vm = this;\n vm.components = components.data;\n\n\n vm.goToNobb = function (comp) {\n if (comp.nobb) {\n $window.open(\"http://nobb.no/nobbnr/\" + comp.nobb, \"_blank\");\n }\n };\n\n}];","export default [\n \"$log\",\n \"component\",\n function ($log, component) {\n var vm = this;\n vm.component = component.data.component;\n }\n];","import { forEach, map, includes, filter } from \"lodash\";\nexport default [\n \"$log\",\n \"componentApi\",\n \"$uibModal\",\n \"component\",\n \"$state\",\n \"toastr\",\n \"$confirm\",\n \"$window\",\n function (\n $log,\n componentApi,\n $uibModal,\n component,\n $state,\n toastr,\n $confirm,\n $window\n ) {\n var vm = this;\n\n vm.generateId = function () {\n componentApi.generateId(vm.component).then(function (res) {\n vm.component.compId = res.data.compId;\n vm.component.composedId = res.data.composedId;\n });\n };\n vm.goToNobb = function () {\n if (vm.component.nobb) {\n $window.open(\n \"http://nobb.no/nobbnr/\" + vm.component.nobb,\n \"_blank\"\n );\n }\n };\n vm.component = component.data.component || {};\n vm.projComponentMeassures = component.data.projComponentMeasures;\n vm.projCompGroups = filter(component.data.projCompGroups, function (g) {\n return !g.parentGroupId;\n });\n\n vm.loadSubGroups = function () {\n if (vm.component && vm.component.category) {\n vm.projCompGroupSub = filter(\n component.data.projCompGroups,\n function (g) {\n return g.parentGroupId === vm.component.category;\n }\n );\n }\n };\n\n var filterContacts = function () {\n var contactIds = map(vm.component.componentContacts, \"contactId\");\n vm.selectComponentContact = filter(\n component.data.componentContacts,\n function (v) {\n return !includes(contactIds, v.key);\n }\n );\n };\n\n filterContacts();\n vm.loadSubGroups();\n\n vm.changeComponentContact = function (ven) {\n ven.status = ven.status === 2 ? 2 : 1;\n };\n vm.addComponentContact = function () {\n if (vm.newComponentContact && vm.newComponentContact.contact) {\n vm.component.componentContacts =\n vm.component.componentContacts || [];\n\n var vc = {\n contactId: vm.newComponentContact.contact.key,\n price: vm.newComponentContact.price,\n isSelected: vm.newComponentContact.isSelected,\n component: vm.component.Id,\n id: 0,\n status: 2,\n contact: {\n name: vm.newComponentContact.contact.value\n }\n };\n\n if (vc.isSelected) {\n forEach(vm.component.componentContacts, function (v) {\n v.isSelected = false;\n });\n }\n\n vm.component.componentContacts.push(vc);\n\n vm.newComponentContact = undefined;\n vm.save();\n }\n };\n\n vm.removeComponentContact = function (ven) {\n ven.status = ven.status === 2 ? -2 : -1;\n vm.component.save();\n };\n\n vm.setComponentInactive = function () {\n $confirm({\n text: `Vil du sette varen ${vm.component.inActive ? \"aktiv\" : \"inaktiv\"\n } ?`\n }).then(function () {\n vm.component.inActive = !vm.component.inActive;\n componentApi\n .setComponentInactive(vm.component)\n .then(function () {\n $state.reload();\n });\n });\n };\n\n vm.save = function () {\n if (!vm.component.category) {\n toastr.warning(\"Vare må ha kategori\");\n return;\n }\n\n componentApi.saveComponent(vm.component).then(function (res) {\n $state.go(\n \"main.components.component.index\",\n {\n compId: res.data.id\n },\n {\n reload: true\n }\n );\n });\n };\n }\n];\n","export default [\n \"$log\",\n \"$uibModal\",\n \"component\",\n function ($log, $uibModal, component) {\n var vm = this;\n vm.processes = component.data.processes;\n }\n];","export default [\n \"prospects\",\n function (prospects) {\n var vm = this;\n\n vm.prospects = prospects.data;\n }\n];","import angular from \"angular\";\nimport { without } from \"lodash\";\nexport default [\n \"$log\",\n \"$state\",\n \"$localForage\",\n \"searchResponse\",\n \"$stateParams\",\n \"searchApi\",\n \"albumConfig\",\n\n function ($log, $state, $localForage, searchResponse, $stateParams, searchApi, albumConfig) {\n angular.element(\"#searchinput\").trigger(\"focus\");\n\n var vm = this;\n\n vm.response = searchResponse;\n\n vm.searched = vm.response.took !== 0;\n\n vm.types = $stateParams.types ? $stateParams.types.split(\",\") : [];\n\n vm.currentPage = $stateParams.page;\n vm.searchText = $stateParams.st;\n vm.mutedText = `${vm.response.totalHits} resultater (${vm.response.took} millisekunder)`;\n\n vm.navigate = doc => {\n switch (doc.type) {\n case 0:\n case 1:\n $state.go(\"main.customers.customer.index\", {\n id: doc.customerId\n });\n break;\n case 2:\n if (albumConfig.useMultipleAppRouting == \"true\") { \n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=0\" + \"&id=\" + doc.projectId;\n } else {\n $state.go(\"main.projects.project.index\", {\n id: doc.projectId\n });\n }\n break;\n case 3:\n $state.go(\n \"main.processes.process.index\",\n {\n id: doc.processId\n },\n { reload: true }\n );\n break;\n case 4:\n if (albumConfig.useMultipleAppRouting == \"true\") { \n window.location.href = albumConfig.apiAddress + \"/project/navigate/toobject?host=\" + window.location.host + \"&type=2\" + \"&id=\" + doc.sectionId;\n } else {\n searchApi.getPhaseAndProject(doc.sectionId).then(function (res) {\n $state.go(\n \"main.projects.project.house.sections.section.index\",\n {\n id: res.data.id,\n ppId: res.data.ppId,\n sectionId: doc.sectionId\n });\n });\n }\n break;\n case 5:\n $state.go(\"main.contactpersons.contactperson.index\", {\n contactPersonId: doc.contactPersonId\n });\n break;\n case 6:\n $state.go(\"main.contacts.contact.index\", {\n contactId: doc.contactId\n });\n break;\n case 7:\n if (albumConfig.useMultipleAppRouting == \"true\") { \n window.location.href = window.location.href = \n window.location.protocol + \"//\" + window.location.hostname + \"/v2/#/registrations/\" + doc.regLineId;\n } else\n {\n $state.go(\n \"main.reg.index\",\n {\n reglineId: doc.regLineId\n },\n { reload: true }\n );\n }\n break;\n default:\n vm.searchText = doc.searchText;\n vm.search();\n break;\n }\n };\n\n vm.goToHistory = function (search) {\n if (search === \"del\") {\n $localForage.removeItem(\"searchhistory\").then(() => {\n $state.reload();\n });\n } else {\n $state.go(\"main.search\", {\n st: search\n });\n }\n };\n\n $localForage.getItem(\"searchhistory\").then(data => {\n vm.searchHistory = data;\n });\n\n vm.setType = function (typeString) {\n var add = vm.types.indexOf(typeString) === -1;\n\n if (add) {\n vm.types.push(typeString);\n } else {\n vm.types = without(vm.types, typeString);\n }\n vm.currentPage = null;\n vm.search();\n };\n vm.search = function (reset) {\n vm.currentPage = reset ? undefined : vm.currentPage;\n vm.types = reset ? [] : vm.types;\n\n $state.go(\n \"main.search\",\n {\n st: vm.searchText,\n page: vm.currentPage,\n types: vm.types.join(\",\")\n },\n {\n reload: true\n }\n );\n };\n }\n];\n","import angular from \"angular\";\n\nimport { isEqual, omit } from \"lodash\";\n//import { adPhoto } from \"./photo\";\nexport default [\n \"$log\",\n \"contactperson\",\n \"contactApi\",\n \"toastr\",\n \"$uibModal\",\n \"$confirm\",\n \"userApi\",\n \"$state\",\n \"albumConfig\",\n\n function(\n $log,\n contactperson,\n contactApi,\n toastr,\n $uibModal,\n $confirm,\n userApi,\n $state,\n albumConfig\n ) {\n var vm = this;\n vm.contactperson = contactperson.data.contactperson;\n vm.permissions = contactperson.data.permissions;\n var apiAddress = albumConfig.apiAddress;\n var permissionsLoaded = angular.copy(vm.permissions);\n var contactpersonLoaded = angular.copy(vm.contactperson);\n userApi.getCalendarCode(1).then(response => {\n vm.calendarCode = `${apiAddress}/${response.data}`;\n });\n\n vm.subscribeToCalender = () => {\n var calCode = new URL(vm.calendarCode);\n var webCalHref = `webcal://${calCode.host}${calCode.pathname}`;\n\n window.open(webCalHref, \"_blank\");\n };\n\n vm.copyCalenderUrl = () => {\n var copyText = document.getElementById(\"txtCal\");\n copyText.select();\n copyText.setSelectionRange(0, 99999); /*For mobile devices*/\n document.execCommand(\"copy\");\n };\n\n vm.saveContactPerson = function() {\n var saveContactPerson = !isEqual(\n omit(contactpersonLoaded, [\"person.birthDate\"]),\n omit(vm.contactperson, [\"person.birthDate\"])\n );\n\n if (saveContactPerson) {\n vm.contactperson.updateProfile = true;\n contactApi\n .updateContactPerson(vm.contactperson)\n .then(function() {\n toastr.info(\"Kontaktperson oppdatert\");\n $state.reload();\n });\n }\n };\n\n vm.saveProfile = function() {\n var savePermissions = !isEqual(permissionsLoaded, vm.permissions);\n\n if (savePermissions) {\n $confirm({\n text:\n \"Er du sikker på at du vil endre album sine tillatelser på din mailboks ?\"\n }).then(\n function() {\n userApi\n .updatePermissions(vm.permissions)\n .then(function() {\n toastr.info(\"Tillatelser oppdatert\");\n vm.saveContactPerson();\n });\n },\n function() {\n vm.saveContactPerson();\n }\n );\n } else {\n vm.saveContactPerson();\n }\n };\n\n vm.viewProfile = () => {\n openProfile();\n };\n\n var openProfile = function() {\n $uibModal.open({\n template:\n \" \",\n controllerAs: \"modalvm\",\n size: \"lg\",\n controller: [\n \"store\",\n \"$uibModalInstance\",\n function(store, $uibModalInstance) {\n var modalvm = this;\n var profile = store.get(\"profile\");\n\n modalvm.profile = profile;\n\n modalvm.close = function() {\n $uibModalInstance.close();\n };\n }\n ]\n });\n };\n\n vm.duplicateCount =\n contactperson.data.duplicates &&\n contactperson.data.duplicates.length;\n\n //let base64String = btoa(String.fromCharCode(...new Uint8Array(adPhoto.data)));\n //vm.base64Photo = base64String;\n }\n];\n","import { map, forEach } from \"lodash\";\nexport default [\n \"store\",\n \"orderByFilter\",\n \"userApi\",\n \"$state\",\n \"favorites\",\n function(store, orderBy, userApi, $state, favorites) {\n var vm = this;\n\n vm.favorites = map(orderBy(favorites.data, \"index\"), function(f) {\n return {\n value: f.name,\n key: f.favoriteKey,\n index: f.index\n };\n });\n\n vm.favMoved = function(i) {\n vm.favorites.splice(i, 1);\n\n forEach(vm.favorites, function(f, i) {\n f.index = i;\n });\n };\n vm.saveFavorites = function() {\n userApi.updateFavorites(vm.favorites).then(function() {\n $state.reload();\n });\n };\n }\n];\n","export default [\n \"toastr\",\n \"userApi\",\n \"notifyApi\",\n \"types\",\n \"rules\",\n \"person\",\n function(toastr, userApi, notifyApi, types, rules, person) {\n var vm = this;\n\n vm.person = person.data.person;\n vm.notificationChannels = person.data.notificationChannels;\n vm.type = types.data;\n vm.rules = rules.data;\n\n vm.testSlack = function() {\n userApi.slackTest(vm.person);\n };\n\n vm.saveNotificationSettings = function() {\n userApi.updateNotficationSettings(vm.person).then(function() {\n toastr.info(\"Varslingsinnstillinger oppdatert\");\n });\n };\n\n vm.allow = function(type) {\n notifyApi\n .postRule({\n mode: 1,\n type: type.type\n })\n .then(result => {\n vm.rules = result.data;\n });\n };\n\n vm.deny = function(type) {\n notifyApi\n .postRule({\n mode: 0,\n type: type.type\n })\n .then(result => {\n vm.rules = result.data;\n });\n };\n\n vm.hasAllowed = function(type) {\n var rule = vm.matchRules(type);\n\n return rule == null || rule.mode == 1;\n };\n\n vm.hasDenied = function(type) {\n var rule = vm.matchRules(type);\n\n return rule != null && rule.mode == 0;\n };\n\n vm.matchRules = function(type) {\n if (vm.rules != null && vm.rules.length > 0) {\n var closestMatch = null;\n\n vm.rules.forEach(rule => {\n var match = type.type.startsWith(rule.type);\n\n if (\n (match && closestMatch == null) ||\n (match && closestMatch.type.length < rule.type.length)\n ) {\n closestMatch = rule;\n }\n });\n\n return closestMatch;\n }\n\n return null;\n };\n }\n];\n","export default [\"securecontracts\", \"customerApi\",\n function (securecontracts, customerApi) {\n\n\n var vm = this;\n vm.securecontracts = securecontracts.data;\n\n\n vm.setGuarantee = function (contract, type) {\n\n\n customerApi.setGuarantee(contract, type);\n\n };\n\n\n }\n];","export default [\n \"$scope\",\n \"projectApi\",\n function($scope, projectApi) {\n $scope.$context.data.newbudget.year = $scope.$context.data.selectedYear;\n $scope.$context.data.newbudget.january = {\n value: 0,\n changed: false\n };\n $scope.$context.data.newbudget.february = {\n value: 0,\n changed: false\n };\n $scope.$context.data.newbudget.march = {\n value: 0,\n changed: false\n };\n $scope.$context.data.newbudget.april = {\n value: 0,\n changed: false\n };\n $scope.$context.data.newbudget.may = {\n value: 0,\n changed: false\n };\n $scope.$context.data.newbudget.june = {\n value: 0,\n changed: false\n };\n $scope.$context.data.newbudget.july = {\n value: 0,\n changed: false\n };\n $scope.$context.data.newbudget.august = {\n value: 0,\n changed: false\n };\n $scope.$context.data.newbudget.september = {\n value: 0,\n changed: false\n };\n $scope.$context.data.newbudget.october = {\n value: 0,\n changed: false\n };\n $scope.$context.data.newbudget.november = {\n value: 0,\n changed: false\n };\n $scope.$context.data.newbudget.december = {\n value: 0,\n changed: false\n };\n\n $scope.$context.behavior.entering = function(options, callback) {\n if (options.entered) {\n return callback();\n } else {\n projectApi.getProjectList().then(function(res) {\n $scope.projects = res.data;\n return callback();\n });\n }\n };\n\n $scope.setProjectId = function(item) {\n $scope.$context.data.newbudget.projectId = item.id;\n };\n }\n];\n","import addstep1ctrl from \"./add/step1\";\nimport addstep1html from \"./add/step1.html\";\nimport { range } from \"lodash\";\n\nexport default [\n \"budget\",\n \"$wizard\",\n \"$state\",\n \"$log\",\n \"salesApi\",\n \"$confirm\",\n function (budget, $wizard, $state, $log, salesApi, $confirm) {\n var wizardAddBudget = $wizard\n .$new({\n title: \"Legg til budsjett\",\n size: \"lg\",\n shadow: true,\n successing: function ($data, $step, $isLastStep, callback) {\n return callback(true);\n }\n })\n .addStep({\n id: \"step-1-addbudget\",\n title: \"Legg til budsjett\",\n controller: addstep1ctrl,\n template: addstep1html\n });\n\n var vm = this;\n vm.budget = budget.data;\n\n vm.deleteBudget = function (b) {\n $confirm({\n text: \"Vil du slette budsjett for \" + b.projectName + \" ?\"\n }).then(function () {\n return salesApi.deleteBudget(b).then(function () {\n $state.reload();\n });\n });\n };\n vm.saveBudget = function () {\n return salesApi.saveBudget(vm.budget).then(function () { });\n };\n\n var thisYear = new Date().getFullYear();\n\n vm.years = range(thisYear - 7, thisYear + 3);\n\n vm.selectedYear = thisYear;\n vm.changeYear = function () {\n return salesApi.getBudget(vm.selectedYear).then(function (budget) {\n vm.budget = budget.data;\n });\n };\n\n vm.addBudget = function () {\n wizardAddBudget.open(\n {\n selectedYear: vm.selectedYear,\n years: vm.years,\n newbudget: {}\n },\n function (result) {\n $log.debug(result);\n salesApi.addBudget(result.newbudget).then(function () {\n $state.reload();\n });\n },\n window.angular.noop\n );\n };\n }\n];\n","export default \"
\\n \\n \\n
\\n\\n
\\n \\n \\n {{$select.selected.name}}\\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n
\\n \\n \\n

\\n
\\n
\";","import {\n forEach\n\n} from \"lodash\";\nimport FileSaver from \"file-saver\";\nexport default [\"$log\", \"salesApi\", \"moment\", function ($log, salesApi, moment) {\n\n\n var vm = this;\n\n var from = moment().startOf(\"year\");\n var to = moment();\n\n\n vm.filter = {\n filterStartDate: from,\n filterEndDate: to,\n cancellationFilter: \"cancellationdate\"\n };\n\n vm.showTab1 = true;\n vm.showTab2 = false;\n vm.showTab3 = false;\n\n vm.filterChange = function (startDate, endDate) {\n\n\n if (vm.loaded) {\n\n if (startDate) {\n\n vm.filter.filterStartDate = startDate;\n }\n if (endDate) {\n\n vm.filter.filterEndDate = endDate;\n }\n vm.searchContracts();\n }\n };\n\n\n vm.searchContracts = function () {\n\n salesApi.searchContracts(vm.filter).then(function (res) {\n\n vm.allContracts = res.data.allContracts;\n vm.contracts = res.data.contracts;\n vm.cancelations = res.data.cancelations;\n\n forEach(vm.allContracts, function (c) {\n c.createdDateFilter = moment(c.projCustomerCreatedDate).format(\"DD.MM.YYYY\");\n c.contractDateFilter = moment(c.contractDate).format(\"DD.MM.YYYY\");\n c.reservationText = c.reservation ? \"Ja\" : \"Nei\";\n });\n\n forEach(vm.contracts, function (c) {\n c.createdDateFilter = moment(c.projCustomerCreatedDate).format(\"DD.MM.YYYY\");\n c.contractDateFilter = moment(c.contractDate).format(\"DD.MM.YYYY\");\n c.reservationText = c.reservation ? \"Ja\" : \"Nei\";\n });\n\n forEach(vm.cancelations, function (c) {\n c.canceledDateFilter = moment(c.canceledDate).format(\"DD.MM.YYYY\");\n c.contractDateFilter = moment(c.contractDate).format(\"DD.MM.YYYY\");\n });\n\n vm.loaded = true;\n\n });\n };\n\n vm.exportTable = function () {\n if (vm.showTab1) {\n salesApi.exportContracts(vm.displayCollection0).then(response => {\n FileSaver.saveAs(response.data, \"Kontraktanalyse_AlleKontrakter-Eksport.xlsx\");\n });\n }\n else if (vm.showTab2) {\n salesApi.exportContracts(vm.displayCollection1).then(response => {\n FileSaver.saveAs(response.data, \"Kontraktanalyse_Kontrakter-Eksport.xlsx\");\n });\n }\n else if (vm.showTab3) {\n salesApi.exportCancelations(vm.displayCollection2).then(response => {\n FileSaver.saveAs(response.data, \"Kontraktanalyse_Kanselleringer-Eksport.xlsx\");\n });\n }\n };\n\n vm.searchContracts();\n\n}];","import orders from \"album/orders/state\";\nimport order from \"album/orders/order/state\";\nimport components from \"album/components/state\";\nimport component from \"album/components/component/state\";\nimport componentindex from \"album/components/component/index/state\";\nimport processes from \"album/components/component/processes/state\";\nimport prospects from \"album/prospects/state\";\nimport search from \"album/search/state\";\nimport profile from \"album/profile/state\";\nimport profileindex from \"album/profile/index/state\";\nimport favorites from \"album/profile/favorites/state\";\nimport notifications from \"album/profile/notifications/state\";\nimport securecontracts from \"album/securecontracts/state\";\nimport budget from \"album/budget/state\";\nimport contractanalysis from \"album/contractanalysis/state\";\n\nexport default [\n orders,\n order,\n components,\n component,\n componentindex,\n processes,\n prospects,\n search,\n profile,\n profileindex,\n favorites,\n notifications,\n securecontracts,\n budget,\n contractanalysis\n];\n","import ctrl from \"./ctrl\";\nimport html from \"./orders.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.orders\", {\n url: \"orders\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Bestillinger\"\n },\n resolve: {\n orders: [\"orderApi\", function (orderApi) {\n return orderApi.getOrders();\n }]\n },\n\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t\\t\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
IdDatoFirmaProsjektHusProsessStatus
{{o.orderId}}\\n\\t\\t\\t\\t\\t{{o.orderDate | date}}{{o.contactName}}{{o.project}}{{o.phase}}{{o.process}}{{o.status}}
\\n\\t
\\n\\t\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./order.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.orders.order\", {\n url: \"/{orderId}\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Ordre #{{order.data.orderId}}\"\n },\n resolve: {\n order: [\"orderApi\", \"$stateParams\", function (orderApi, $stateParams) {\n\n return orderApi.getOrder($stateParams.orderId);\n }]\n },\n\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n

Ordre #{{vm.order.orderId}}

\\n
\\n \\n \\n
\\n
\\n
\\n\\n
\\n
\\n \\n
\\n

{{vm.order.project}}

\\n
\\n
\\n
\\n \\n
\\n

{{vm.order.phase}}

\\n
\\n
\\n
\\n \\n
\\n {{vm.order.process}}\\n
\\n
\\n
\\n \\n
\\n

{{vm.order.orderDate | date:'dd.MM.yyyy'}}

\\n
\\n
\\n
\\n \\n
\\n

{{vm.order.deliveryDate | date:'dd.MM.yyyy'}}

\\n
\\n
\\n
\\n \\n
\\n

{{vm.order.contactPerson }}

\\n
\\n
\\n
\\n \\n
\\n

{{vm.order.ourReference}}

\\n
\\n
\\n
\\n \\n
\\n

{{vm.order.deliveryAddress}}

\\n
\\n
\\n
\\n \\n
\\n

{{vm.order.status}}

\\n
\\n
\\n
\\n \\n
\\n

{{vm.order.txt}}

\\n
\\n\\n\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
NrNavn{{ vm.isReceivingGoods ? 'Mottatt / Totalt' : 'Antall' }}{{ vm.isReceivingGoods ? 'Antall mottatt nå' : 'Antall\\n mottat'\\n }}Handling varemottakEnhetLeverandør
{{pol.componentId}}{{pol.componentName}}\\n {{pol.qty}}\\n \\n {{ pol.qtyAlreadyReceived.toFixed(2) || 0 }} / {{ pol.qty }}\\n \\n \\n 0 ? pol.qty - pol.qtyAlreadyReceived : pol.qty}}\\\"\\n ng-change=\\\"vm.validateOrderLine(pol)\\\" />\\n {{pol.qtyAlreadyReceived.toFixed(2) || 0}}\\n \\n \\n {{pol.unit}}{{pol.supplier}}
\\n \\n \\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./components.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.components\", {\n url: \"components\",\n data: {\n requiresLogin: true\n },\n\n aData: {\n name: \"{{'Components' | translate}}\"\n },\n resolve: {\n components: [\"componentApi\", function (componentApi) {\n return componentApi.getComponents();\n }]\n },\n\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
\\n\\t\\t\\t\\t
\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\t
\\n\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
IdNOBBNavnVaregruppeEnhetLeverandørAntall bestiltInaktiv
\\n\\t\\t\\t\\t\\t\\t\\n\\t\\t\\t\\t\\t
{{ comp.bcItemId == null ? comp.composedId : comp.compId }}{{comp.nobb}}{{comp.name}}\\n\\t\\t\\t\\t\\t{{comp.categoryText}}{{comp.meassureText}}{{comp.contactName}}{{comp.orderedQty| number:0}}{{comp.inActive ? 'Ja':'Nei'}}
\\n\\t
\\n\\t\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./component.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.components.component\", {\n url: \"/{compId}\",\n data: {\n requiresLogin: true\n },\n abstract: true,\n aData: {\n breadcrumbProxy: \"main.components.component.index\"\n },\n resolve: {\n component: [\"componentApi\", \"$stateParams\", function (componentApi, $stateParams) {\n return componentApi.getComponent($stateParams.compId);\n }]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n }\n });\n}];","export default \"
\\n\\t\\n\\t\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n $stateProvider.state(\"main.components.component.index\", {\n url: \"/component\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"{{component.data.component.name || 'Ny komponent'}}\"\n },\n views: {\n \"componentcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n });\n}];","export default \"
\\n
\\n

{{vm.component.name}}

\\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n
\\n \\n
\\n \\n
\\n\\n
\\n
\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n

Leverandører

\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
LeverandørPris Valgt
{{cc.contact.name}}\\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n {{$select.selected.value}}\\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./processes.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.components.component.processes\", {\n url: \"/component/processes\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Prosesser\"\n },\n views: {\n \"componentcontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n }\n });\n}];","export default \"
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
ProsessnummerProsjekttypeProsessVersjonOpprettetOpprettet avProsess er aktiv
{{p.processKey}}{{p.projectType}}{{p.processName}}{{p.version}}{{p.createdBy}}{{p.createdDate | date : 'dd.MM.yyyy'}}{{p.processActive ? 'Ja': 'Nei'}}
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./prospects.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"prospects\", {\n url: \"prospects\",\n\n data: {\n requiresLogin: true,\n name: \"Prospekter\"\n },\n resolve: {\n prospects: [\"customerApi\", function (customerApi) {\n return customerApi.getProspects();\n }]\n },\n views: {\n \"@\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n\n }\n\n\n });\n}];","export default \"\\n\\n
\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
IdNavnAdressePostnummerPoststedProsjektDatoHåndtertTelefonEpost
{{c.id}}{{c.fullName}}{{c.address}}{{c.postCode}}{{c.postName}}{{c.project.name}}{{c.regDate| date : 'dd.MM.yyyy'}}{{c.handledText}}{{c.phone}}{{c.email}}
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./search.html\";\n\nexport default [\n \"$stateProvider\",\n function ($stateProvider) {\n let transformSearch = res => {\n var hits = [];\n var types = res.data.searchTypes;\n\n hits = res.data.searchResults.items.map(sr => {\n\n return {\n score: sr.score,\n type: sr.type,\n title: sr.highlightTitle,\n fullText: sr.text,\n projectName: sr.type == 2 ? sr.title : null,\n customerId: sr.type == 0 || sr.type == 1 ? sr.tableId : null,\n projectId: sr.type == 2 ? sr.tableId : null,\n regLineId: sr.type == 7 ? sr.tableId : null,\n sectionId: sr.type == 4 ? sr.tableId : null,\n contactPersonId: sr.type == 5 ? sr.tableId : null,\n contactId: sr.type == 6 ? sr.tableId : null,\n processId: sr.type == 3 ? sr.tableId : null,\n customerStatus: sr.type == 0 || sr.type == 1 ? sr.type : null,\n text: sr.highlightText,\n email: sr.key == \"E-post\" ? sr.text : null,\n phone: sr.key == \"Mobil\" || sr.key == \"Telefon\" ? sr.text : null,\n address: sr.key == \"Adresse\" ? sr.text : null,\n lastUpdated: sr.lastUpdated,\n charIndexText: sr.charIndexText,\n key: sr.key\n };\n });\n\n return {\n hits: hits,\n types: types,\n took: res.data.searchResults.took,\n totalHits: res.data.searchResults.totalCount\n };\n };\n\n $stateProvider.state(\"main.search\", {\n url: \"search?st&page&types\",\n data: {\n requiresLogin: true\n },\n\n aData: {\n name: \"Søk\"\n },\n resolve: {\n searchResponse: [\n \"searchApi\",\n \"$stateParams\",\n function (searchApi, $stateParams) {\n var page = $stateParams.page || 1;\n var types = $stateParams.types\n ? $stateParams.types.split(\",\")\n : [];\n var searchText = $stateParams.st;\n\n if (searchText) {\n searchApi.addToHistory(searchText);\n }\n\n return searchApi\n .globalSearch({\n searchText: searchText,\n types: types,\n page: page,\n pageSize: 10\n })\n .then(function (res) {\n var hits = transformSearch(res);\n return hits;\n });\n }\n ]\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n });\n }\n];\n","export default \"
\\n

\\n Søk i Album\\n

\\n
\\n \\n
\\n \\n
\\n
\\n

\\n {{ vm.mutedText }}\\n\\n

\\n
\\n Fant ingen ting..\\n
\\n
\\n Du kan søke etter kunder, prosjekter, seksjoner, reklamasjoner og kontakter,\\n bruk gjerne epost/telefonnummer hvis du leter etter en kunde\\n
\\n
0\\\">\\n

Søkehistorikk

\\n {{ sh.search\\n }}\\n
\\n \\n
\\n\\n \\n
\";","import html from \"./profile.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.profile\", {\n url: \"profile\",\n\n abstract: true,\n data: {\n requiresLogin: true\n },\n aData: {\n breadcrumbProxy: \"main.profile.index\"\n },\n\n views: {\n \"@\": {\n template: html,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n contactperson: [\n \"contactApi\",\n \"store\",\n function(contactApi, store) {\n var profile = store.get(\"profile\");\n\n return contactApi.getContactPerson(\n profile.contactPersonId\n );\n }\n ]\n }\n });\n }\n];\n","export default \"
\\n\\t\\n\\t\\n\\t\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./index.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.profile.index\", {\n url: \"/contactperson\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Min profil\"\n },\n\n views: {\n \"profilecontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n }\n\n\n });\n}];","export default \"
\\n\\t
\\n\\t\\t

Min profil

\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\tLagre\\n\\t\\t
\\n\\t\\t
\\n\\t
\\n
\\n\\n\\n\\n
\\n\\n\\n\\n\\t
\\n\\n\\t\\t
\\n\\t\\t\\t
\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t
\\n\\n\\t\\t\\t\\t\\n\\n\\t\\t\\t\\t\\n\\n\\n\\n\\n\\t\\t\\t
\\n\\t\\t
\\n\\t
\\n\\n\\n\\t
\\n\\t\\t
0\\\">\\n\\t\\t\\t

Det finnes {{vm.duplicateCount}} kontaktperson med samme epost eller mobil

\\n\\t\\t\\t

Trykk her\\n\\t\\t\\t\\tfor å\\n\\t\\t\\t\\tsjekke dine duplikater

\\n\\t\\t
\\n\\t\\t

Tillatelser

\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t\\t
\\n\\t\\t\\t\\n\\t\\t\\t\\n\\t\\t
\\n\\t
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./favorites.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.profile.favorites\", {\n url: \"/favorites\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Mine favoritter\"\n },\n\n views: {\n \"profilecontent\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n }\n\n\n });\n}];","export default \"
\\n\\n \\n
\\n
\\n \\n
    \\n\\n
  • \\n {{item.value}}\\n
  • \\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./notifications.html\";\nexport default [\n \"$stateProvider\",\n function($stateProvider) {\n $stateProvider.state(\"main.profile.notifications\", {\n url: \"/notifications\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Varslinger\"\n },\n views: {\n profilecontent: {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n person: [\n \"userApi\",\n function(userApi) {\n return userApi.getPersonProfile();\n }\n ],\n types: [\n \"notifyApi\",\n function(notifyApi) {\n return notifyApi.getTypes();\n }\n ],\n rules: [\n \"notifyApi\",\n function(notifyApi) {\n return notifyApi.getRules();\n }\n ]\n }\n });\n }\n];\n","export default \"
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n \\n \\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
    \\n
  • \\n
\\n
\\n
\\n\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./securecontracts.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.securecontracts\", {\n url: \"securecontracts\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Sikre kontrakter\"\n },\n\n views: {\n \"@\": {\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n }\n },\n resolve: {\n securecontracts: [\"customerApi\", function (customerApi) {\n return customerApi.getSecureContracts();\n }]\n }\n });\n}];","export default \"\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
ProsjektHusSeksjonKundeKontraktstypeFlyttet innForbehold3% garanti5% garanti
\\n \\n \\n \\n \\n \\n \\n \\n
{{c.projectName}} {{c.houseNum}}{{c.sectionNum}}{{c.fullName}} Bustadoppføring
\\n
\\n \\n
\\n\\n\";","import ctrl from \"./ctrl\";\nimport html from \"./budget.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n\n $stateProvider.state(\"main.budget\", {\n url: \"budget\",\n\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Budsjett\"\n },\n views: {\n \"@\": {\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n },\n\n resolve: {\n budget: [\n \"salesApi\",\n function (salesApi) {\n return salesApi.getBudget(new Date().getFullYear());\n }\n ]\n }\n });\n}];","export default \"
\\n
\\n
\\n \\n
\\n
\\n \\n \\n
\\n
\\n\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
SelgerÅrProsjektJanFebMarsAprMaiJuniJuliAugSeptOktNovDesQ1Q2Q3Q4Total
{{bg.company}}
\\n \\n {{b.salesResponsible}}{{b.year}}\\n \\n {{b.projectName}}\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n {{b | bSum:'q1'}}{{b | bSum:'q2'}}{{b | bSum:'q3'}}{{b | bSum:'q4'}}{{b | bSum:'q5'}}
{{bg | bSum:'jan'}}{{bg | bSum:'feb'}}{{bg | bSum:'mar'}}{{bg | bSum:'apr'}}{{bg | bSum:'may'}}{{bg | bSum:'jun'}}{{bg | bSum:'jul'}}{{bg | bSum:'aug'}}{{bg | bSum:'sep'}}{{bg | bSum:'oct'}}{{bg | bSum:'nov'}}{{bg | bSum:'dec'}}{{bg | bSum:'q1'}}{{bg | bSum:'q2'}}{{bg | bSum:'q3'}}{{bg | bSum:'q4'}}{{bg | bSum:'q5'}}
{{vm.budget | bSum:'jan':true}}{{vm.budget | bSum:'feb':true}}{{vm.budget | bSum:'mar':true}}{{vm.budget | bSum:'apr':true}}{{vm.budget | bSum:'may':true}}{{vm.budget | bSum:'jun':true}}{{vm.budget | bSum:'jul':true}}{{vm.budget | bSum:'aug':true}}{{vm.budget | bSum:'sep':true}}{{vm.budget | bSum:'oct':true}}{{vm.budget | bSum:'nov':true}}{{vm.budget | bSum:'dec':true}}{{vm.budget | bSum:'q1':true}}{{vm.budget | bSum:'q2':true}}{{vm.budget | bSum:'q3':true}}{{vm.budget | bSum:'q4':true}}{{vm.budget | bSum:'q5':true}}
\\n
\\n
\";","import ctrl from \"./ctrl\";\nimport html from \"./contractanalysis.html\";\nexport default [\"$stateProvider\", function ($stateProvider) {\n\n $stateProvider.state(\"main.contractanalysis\", {\n url: \"contractanalysis\",\n data: {\n requiresLogin: true\n },\n aData: {\n name: \"Kontraktsanalyse\"\n },\n\n\n views: {\n \"@\": {\n\n\n template: html,\n controller: ctrl,\n controllerAs: \"vm\"\n\n }\n\n }\n });\n}];","export default \"
\\n
\\n \\n\\n\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
\\n \\n
\\n \\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n
Bruk filteret til å søke etter\\n kontrakter
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
KundenummerNavnKonseptProsjektByggSeksjonRegistrertKontrakt signertForbeholdVisningerNettkjøp
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{section.projCustomerCustomerCustAccount}}{{section.projCustomerCustomerPersonFullName}}\\n {{section.projectPhaseProjectTypeName}}\\n \\n\\n {{section.projectPhaseProjectName}}\\n\\n Bygg\\n {{section.projectPhaseHouseNum}}\\n {{section.sectionNum}}\\n\\n {{section.projCustomerCreatedDate | date : 'dd.MM.yyyy'}}\\n {{section.contractDate | date : 'dd.MM.yyyy'}}{{section.reservation ? 'Ja' : 'Nei'}}{{ section.numberOfShowings }}{{section.isOnlinePurchase ? 'Ja' : 'Nei'}}
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n
Bruk filteret til å søke etter\\n kontrakter
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
KundenummerNavnKonseptProsjektByggSeksjonRegistrertKontrakt signertForbeholdVisningerNettkjøp
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{section.projCustomerCustomerCustAccount}}{{section.projCustomerCustomerPersonFullName}}\\n {{section.projectPhaseProjectTypeName}}\\n \\n\\n {{section.projectPhaseProjectName}}\\n\\n Bygg\\n {{section.projectPhaseHouseNum}}\\n {{section.sectionNum}}\\n\\n {{section.projCustomerCreatedDate | date : 'dd.MM.yyyy'}}\\n {{section.contractDate | date : 'dd.MM.yyyy'}}{{section.reservation ? 'Ja' : 'Nei'}}{{ section.numberOfShowings }}{{section.isOnlinePurchase ? 'Ja' : 'Nei'}}
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n \\n
\\n \\n \\n \\n\\n \\n
\\n \\n
\\n \\n
\\n
\\n
\\n
\\n\\n \\n
\\n
Bruk filteret til å søke etter\\n kanselleringer
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n\\n\\n\\n \\n \\n\\n \\n \\n\\n\\n\\n \\n \\n \\n \\n \\n
KundeKonseptProsjektByggSeksjonKanselleringsdatoKontraktsdatoSelger
\\n \\n \\n \\n \\n \\n \\n \\n
{{c.customerPersonFullName}}\\n \\n {{c.projectPhaseProjectTypeName}}\\n \\n\\n {{c.projSectionProjectPhaseProjectName}}\\n\\n Bygg\\n {{c.projSectionProjectPhaseHouseNum}}\\n {{c.projSectionSectionNum}}\\n\\n {{c.canceledDate | date : 'dd.MM.yyyy'}}{{c.contractDate | date : 'dd.MM.yyyy'}}{{c.salesResponsibleContactPersonPersonFullName}}
\\n\\n
\\n
\\n
\\n
\";","\nvar Msal = require(\"msal\");\nvar MsalAngular = require(\"@azure/msal-angularjs\");\n\nimport { each, concat } from \"lodash\";\nimport run from \"./run\";\nimport configuration from \"./configuration\";\n\nimport \"angular-toastr/dist/angular-toastr.css\";\nimport \"ui-select/dist/select.css\";\nimport \"angular-datepicker/dist/index.min.css\";\n// import \"textangularjs/dist/textAngular.css\";\nimport \"angular-cookie-law/dist/angular-cookie-law.css\";\nimport \"angularjs-dropdown-multiselect/dist/index.css\";\nimport \"assets/scss/trysilhus.scss\";\n\n/*JS*/\n\nimport angular from \"angular\";\n\n// import \"../scripts/textAngular-sanitize.js\";\n// import \"textangularjs\";\n\nimport \"angular-cache\";\nimport \"angular-moment\";\nimport \"angular-cookies\";\nimport \"angular-sanitize\";\nimport \"bootstrap\";\nimport \"bootstrap/js/dist/util.js\";\nimport \"bootstrap/js/dist/carousel.js\";\nimport \"@uirouter/angularjs\";\nimport \"@uirouter/angularjs/release/stateEvents\";\nimport \"ment.io\";\nimport \"angular-storage\";\n//import \"angular1-ui-bootstrap4\";\nimport \"ui-bootstrap4\";\nimport \"angular-smart-table\";\nimport \"../scripts/angular-jwt\";\nimport \"../scripts/albumConfirm.js\";\nimport \"ui-select\";\nimport \"angular-toastr\";\nimport \"angular-cookie-law/dist/angular-cookie-law.js\";\n\nimport \"angular-drag-and-drop-lists\";\nimport \"angular-file-upload\";\nimport \"angular-input-masks\";\nimport \"angular-dynamic-number\";\n\nimport \"angular-google-analytics\";\nimport \"angular-signature\";\nimport \"angular-i18n/angular-locale_nb-no\";\nimport \"../scripts/sx-wizard\";\nimport \"../scripts/sx-wizard-tpls\";\nimport \"angular-fcsa-number\";\nimport \"angular-bootstrap-contextmenu\";\n// import \"../scripts/angularjs-dropdown-multiselect.js\";\nimport \"angularjs-dropdown-multiselect\";\nimport \"../scripts/angular-base64-upload.js\";\n\nimport \"angular-bind-html-compile\";\nimport \"angular-localforage\";\nimport Highcharts from \"highcharts\";\n\nimport addDrilldown from \"highcharts/modules/drilldown\";\nimport addExporting from \"highcharts/modules/exporting\";\naddDrilldown(Highcharts);\naddExporting(Highcharts);\nimport \"highcharts-ng\";\n\nimport translations from \"../assets/translation_nb-no.json\";\nimport * as Sentry from \"@sentry/browser\";\nimport * as Integrations from \"@sentry/integrations\";\n//import appServices from \"./main/services\";\nimport directives from \"./main/directives\";\nimport factories from \"./main/factories\";\nimport components from \"./main/components\";\nimport filters from \"./main/filters\";\nimport msie from \"./main/msie\";\n\nSentry.init({\n dsn: \"https://df896224553547778337bc555f8e2854@sentry.io/229606\",\n integrations: [new Integrations.Angular()]\n});\n\nvar app = angular.module(\"album6\", [\n \"albumConfirm\",\n \"ui.bootstrap\",\n \"smart-table\",\n \"ui.router\",\n \"ui.router.state.events\",\n \"ngCookies\",\n \"angular-storage\",\n \"angular-jwt\",\n \"toastr\",\n \"ui.select\",\n \"ngSanitize\",\n \"sx.wizard\",\n \"fcsa-number\",\n \"angularMoment\",\n \"mentio\",\n \"ui.bootstrap.contextMenu\",\n \"naif.base64\",\n \"angularjs-dropdown-multiselect\",\n \"dynamicNumber\",\n \"ui.utils.masks\",\n \"angular-cache\",\n \"angular-cookie-law\",\n \"angular-google-analytics\",\n \"dndLists\",\n \"angularFileUpload\",\n \"signature\",\n \"ngSentry\",\n \"highcharts-ng\",\n \"angular-bind-html-compile\",\n \"LocalForageModule\",\n \"MsalAngular\"\n]);\n\nconst albumConfig = {\n env: env,\n apiAddress: apiAddress,\n albumAddress: albumAddress,\n btAddress: btAddress,\n useMultipleAppRouting: useMultipleAppRouting\n};\n\nwindow.applicationConfig = {\n clientID: \"44f5d0dc-b682-4dc3-900d-aac8805879bc\",\n consentScopes: [\"user.read\", \"tasks.readwrite\"],\n webApiEndpoint: albumConfig.useMultipleAppRouting == \"false\" ? albumConfig.apiAddress : \"https://notanaddress.com\",\n webApiScopes: [\"api://44f5d0dc-b682-4dc3-900d-aac8805879bc/Album\"],\n userProfileEndpoint: \"https://graph.microsoft.com/v1.0/me\",\n userProfileScopes: [\"user.read\", \"tasks.readwrite\"]\n};\n\nvar protectedResourceMap = new Map();\nprotectedResourceMap.set(\n window.applicationConfig.webApiEndpoint, window.applicationConfig.webApiScopes);\nprotectedResourceMap.set(\n window.applicationConfig.userProfileEndpoint, window.applicationConfig.userProfileScopes);\n\napp.constant(\"albumConfig\", albumConfig);\napp.constant(\"translations\", translations);\n\napp.config([\"msalAuthenticationServiceProvider\", \"$httpProvider\", function (msalProvider, $httpProvider) {\n msalProvider.init({\n clientID: window.applicationConfig.clientID,\n authority: \"https://login.microsoftonline.com/0021d50a-8320-485b-92f5-c61ed1290a57\",\n tokenReceivedCallback: function (errorDesc, token, error, tokenType) {\n localStorage.setItem(\"token\", token);\n localStorage.setItem(\"connections-auth-check\", \"true\");\n },\n optionalParams: {\n redirectUri: albumConfig.albumAddress,\n navigateToLoginRequestUrl: true,\n cacheLocation: \"localStorage\",\n storeAuthStateInCookie: true,\n protectedResourceMap: protectedResourceMap,\n unprotectedResources: []\n },\n routeProtectionConfig: {\n consentScopes: [\"user.read\", \"tasks.readwrite\"],\n popUp: false\n }\n }, $httpProvider);\n}]);\n\n\napp.config(configuration);\n\n\napp.factory(\"$exceptionHandler\", [\n \"$injector\",\n function ($injector) {\n return function (exception, cause) {\n var toastr = $injector.get(\"toastr\");\n var log = $injector.get(\"$log\");\n log.error(exception, cause);\n\n if (env === \"dev\") {\n toastr.error(exception);\n } else {\n toastr.error(\"En feil har oppstått\");\n }\n };\n }\n]);\n\n//STATES ES6\nimport root from \"./main/states/root\";\nimport ks from \"./main/states/ks\";\nimport section from \"./main/states/section\";\nimport processStates from \"./main/states/process\";\nimport contactperson from \"./main/states/contactperson\";\nimport system from \"./main/states/system\";\nimport report from \"./main/states/report\";\nimport project from \"./main/states/project\";\nimport house from \"./main/states/house\";\nimport registration from \"./main/states/registration\";\nimport checklist from \"./main/states/checklist\";\nimport customer from \"./main/states/customer\";\nimport options from \"./main/states/options\";\nimport contact from \"./main/states/contact\";\nimport aberration from \"./main/states/aberration\";\nimport task from \"./main/states/task\";\nimport misc from \"./main/states/misc\";\n\nvar allStates = concat(\n root,\n ks,\n section,\n processStates,\n contactperson,\n system,\n report,\n project,\n house,\n registration,\n checklist,\n customer,\n options,\n contact,\n aberration,\n task,\n misc\n);\n\neach(allStates, s => {\n app.config(s);\n});\n\n//SERVICES ES6\n\n//each(appServices, s => app.service(s.name, s.svc));\n\neach(directives, d => app.directive(d.name, d.directive));\neach(factories, f => app.factory(f.name, f.factory));\neach(components, c => app.component(c.name, c.component));\neach(filters, f => app.filter(f.name, f.filter));\n\napp.constant(\"albumBrowser\", msie);\napp.run(run);\n\nHighcharts.setOptions({\n lang: {\n months: [\n \"Januar\",\n \"Februar\",\n \"Mars\",\n \"April\",\n \"Mai\",\n \"Juni\",\n \"Juli\",\n \"August\",\n \"September\",\n \"Oktober\",\n \"November\",\n \"Desember\"\n ],\n weekdays: [\n \"Mandag\",\n \"Tirsdag\",\n \"Onsdag\",\n \"Torsdag\",\n \"Fredag\",\n \"Lørdag\",\n \"Søndag\"\n ],\n shortMonths: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sept\",\n \"Okt\",\n \"Nov\",\n \"Des\"\n ],\n drillUpText: \"Tilbake til {series.name}\"\n }\n});\n","module.exports = jQuery;"],"sourceRoot":""}