{"version":3,"sources":["undergroundWebApp.js","appConfig.dev.js","appConfig.js","appConstants.js","appRoutes.js","appVersion.js","administration/administrationController.js","area/areaDetailsController.js","area/areaDetailsEditorController.js","area/areaOverviewController.js","area/attachVehicleModalController.js","device/connectSensorModalController.js","device/deviceDetailsModalController.js","device/deviceService.js","footer/footerController.js","GeocodeAPI/GeocodeAPIService.js","group/groupService.js","location/locationDetailsController.js","location/locationDetailsModalController.js","location/locationLayerFactory.js","location/locationsController.js","location/locationsService.js","location/selectDisplayedDevices.js","main/mainController.js","map/areaEditLayerFactory.js","map/areaLayerFactory.js","map/areaUtility.js","map/flyFotoLayerFactory.js","map/mapLayerFactory.js","map/mapService.js","map/selectionLayerFactory.js","reports/externalReportsService.js","reports/reportsController.js","sensorOverview/sensorOverviewController.js","server/serverInfoService.js","shared/focus.js","shared/mapUtility.js","shared/setAttribute.js","statistics/statisticsController.js","undergroundAPI/s2wClusterLayerFactory.js","undergroundAPI/undergroundAPIService.js","administration/containerType/containerTypeDetailsModalController.js","administration/containerType/containerTypesController.js","administration/containerType/containerTypesService.js","administration/deviationReport/deviationReportController.js","administration/deviationReport/deviationReportModalController.js","administration/deviationReport/deviationReportService.js","administration/deviationReport/isDecimalDirective.js","administration/externalLinks/externalLinksController.js","administration/externalLinks/externalLinksDetailsModalController.js","administration/externalLinks/externalLinksService.js","administration/fraction/fractionDetailsModalController.js","administration/fraction/fractionsController.js","administration/fraction/fractionsService.js","administration/user/areaService.js","administration/user/userAdministrationController.js","administration/user/userDetailsModalController.js","administration/user/userService.js","administration/vehicle/vehicleDetailsModalController.js","administration/vehicle/vehiclesController.js","administration/vehicle/vehicleService.js","containerOverview/controllers/containerDetailsModalController.js","containerOverview/controllers/containerEventsController.js","containerOverview/controllers/containerEventsPictureCarouselController.js","containerOverview/controllers/containerInfoController.js","containerOverview/controllers/containerOverviewController.js","containerOverview/controllers/containerStatisticsController.js","containerOverview/controllers/containerStatusController.js","containerOverview/controllers/customerSystemModalController.js","containerOverview/controllers/groupDetailsModalController.js","containerOverviewV2/controllers/containerOverviewV2Controller.js","containerOverviewV2/controllers/sensorApiContainerDetailsModal.js","keyCards/controllers/keyCardRegistrationModalController.js","keyCards/controllers/keycardsOverviewController.js","location/info/deviceExternalSystemCell.js","location/info/externalSystemUtility.js","location/info/fractionsUtility.js","location/info/locationInfoTabController.js","location/log/containerLogModalController.js","location/log/locationLogTabController.js","location/log/logActionService.js","location/powerbi/LocationPowerBITabController.js","location/statistics/locationStatisticsTabController.js","main/directives/mapLayersPanelDirective.js","reports/batteryVoltage/batteryVoltageController.js","reports/batteryVoltage/batteryVoltagesService.js","reports/containerLogs/containerLogsController.js","reports/errorStatus/errorStatusController.js","reports/genericReports/genericReportsController.js","reports/municipalityLogs/municipalityLogsController.js","shared/directives/busyIndicatorDirective.js","shared/directives/conditionalUiSref.js","shared/directives/dateRangePicker.js","shared/directives/dateRangePickerConstants.js","shared/directives/fileUpload.js","shared/directives/municipalityPicker.js","shared/directives/nSplitterDirective.js","shared/directives/numericInputDirective.js","shared/directives/numericInputWithComma.js","shared/directives/radialMenuDirective.js","shared/filters/decimalWithComma.js","shared/filters/trustAsResourceUrl.js","shared/navbar/navbarController.js","shared/pictureCarouselModal/pictureCarouselController.js","shared/popups/confirmModal.js","shared/popups/locationPopupDirective.js","shared/popups/s2wOverviewPopupDirective.js","shared/popups/sensorApiLocationPopupDirective.js","shared/services/authInterceptorService.js","shared/services/authService.js","shared/services/baseDataService.js","shared/services/cacheService.js","shared/services/cachingService.js","shared/services/chartOptionsService.js","shared/services/containerService.js","shared/services/customerSystemsService.js","shared/services/displayService.js","shared/services/externalSystemsService.js","shared/services/filterStateService.js","shared/services/guidService.js","shared/services/httpErrorInterceptorService.js","shared/services/keycardService.js","shared/services/municipalityService.js","shared/services/qPool.js","shared/services/sensorApiAreaService.js","shared/services/statusService.js","shared/services/systemService.js","shared/utilities/deviceUtility.js","shared/utilities/formattingUtility.js","shared/utilities/kendoBusyIndicator.js","shared/utilities/kendoGridUtility.js","shared/utilities/keycardUtility.js","shared/utilities/locationUtility.js","shared/utilities/mediaUtility.js","shared/utilities/tabstripUtility.js","shared/utilities/treeUtility.js"],"names":["undergroundWebApp","angular","module","constant","id","name","icon","config","$locationProvider","$httpProvider","$translateProvider","availableLanguages","defaultSelectedLanguageId","html5Mode","interceptors","push","useStaticFilesLoader","prefix","suffix","registerAvailableLanguageKeys","map","l","en","no","preferredLanguage","fallbackLanguage","useSanitizeValueStrategy","useLocalStorage","latMin","latMax","longMin","longMax","outlineDefault","color","width","outlineSelected","lineSymbol","pointSymbol","size","edgeSymbol","edgeSelectedSymbol","pointerSize","pointerSizeDefault","mapType","wkid","run","$rootScope","$timeout","globalEvents","pageSpecificDisplays","authService","systemService","externalReportsService","displayService","init","then","authData","showMenu","isAuth","getSystemInfo","getAllExternalReports","reports","externalReports","masterMode","isAdmin","authUser","groups","some","g","groupName","isAccessible","area","accessType","hasAccess","getCachePrefix","userName","$on","$stateChangeSuccess","_","toState","selectedContainerId","undefined","pageSpecificDisplay","applyPageViewMode","viewMode","isPriority","accessTokenExpired","logout","kendo","ui","FilterMenu","fn","options","operators","string","contains","FilterCell","doesnotcontain","endswith","eq","isempty","isnotempty","isnotnull","isnotnullorempty","isnull","isnullorempty","neq","startswith","culture","$localForageProvider","driver","localforage","INDEXEDDB","disableCache","statusCacheMaxAge","geocodeingServiceUrl","reenHubContainer","reenHubLocation","clientSideCacheEnabled","domain","clientId","apiIdentifier","add","edit","provider","this","$get","$translate","Id","Name","LocalizedName","instant","active","deleted","inactive","invisible","WGS84","UTM33N","viewModes","split","full","splitViewMode","fullViewMode","main","layerVisibilityChanged","overviewContainersChanged","redrawCluster","refreshLocationContainers","zoomToLocation","$stateChangeStart","$stateProvider","$urlRouterProvider","appVersion","ieIE","window","document","documentMode","appVersionString","replace","navbarView","templateUrl","controller","otherwise","state","url","views","navbar","footer","params","containerId","externalSystemId","startTab","keycardNumber","showInactive","noCache","redirectTo","filter","reloadOnSearch","locationId","locationsFilter","deviceId","areaId","AdministrationController","$scope","$state","tabstripUtility","busyIndicatorCounter","getTabs","tabs","contentUrl","showBusyIndicator","$broadcast","destination","message","overlay","positionClass","top","left","right","hideBusyIndicator","tabStripOptions","animation","select","handleTabSelected","dataTextField","dataContentUrlField","dataSource","dataBound","e","sender","$watch","current","changeTabByState","administrationtab","getAccessRights","data","$inject","AreaDetailsController","$stateParams","$kWindow","mapService","sensorApiAreaService","filterStateService","handleAreaLoaded","getLayer","selectArea","areaVehiclesGrid","vehicles","attachVehicle","open","modal","movable","title","resizable","height","visible","windowTemplateUrl","resolve","currentVehicles","result","finally","detachVehicle","vehicle","confirmText","confirm","areaVehiclesGridOptions","sort","getSortFromQueryString","field","dir","getFilterFromQueryString","columns","filterable","sortable","groupable","template","noRecords","selectable","storeGridSortInQueryString","storeGridFilterInQueryString","go","location","event","startsWith","clearSelectedArea","getArea","initController","areaDetailsEditorController","mapUtility","handleAreaResponse","areaForm","$setPristine","description","ready","onDrawingFinished","points","newPoints","isAreaEditing","newAreaDrawn","hideArea","drawTemporaryArea","clearDrawing","finishEditArea","cancelSelection","clearTemporaryArea","save","preventDefault","validator","validate","request","areaDto","updateModel","isActive","length","point","index","coords","convertToWGS84","latitude","lat","longitude","lng","order","getAreaDto","isEdit","updateArea","createArea","loadData","cancel","handleStartDrawing","startSelection","handleEditArea","areaLayer","startEditArea","handleCancelEditArea","showArea","deleteArea","handleNewAreaDrawing","AreaOverviewController","kendoGridUtility","areaDetails","areaOverviewGridOptions","transport","read","getAreas","success","pageSize","checkBoxColumnTemplate","scrollable","virtual","change","selectedRows","dataItem","AttachVehicleModalController","$windowInstance","vehicleService","vehiclesOptions","getVehicles","availableVehicles","v","every","cv","reject","dataValueField","optionLabel","saveAndClose","close","$event","ConnectSensorModalController","$q","externalSystemsService","deviceService","readDevices","requests","getExternalSystems","getDevices","all","devices","externalSystems","allDisconnectedDevices","d","disconnectedDevices","forEach","extSystem","find","s","toLowerCase","externalId","catch","error","selectedDevices","filterChanged","f","includes","filterText","setTimeout","sensorsOptions","serverFiltering","DeviceDetailsModalController","formTypes","currentFormType","guidService","device","updateCallbacks","deviceTypes","fallbackErrorMessageText","externalSystemValid","selectedExternalSystem","externalIdValid","deviceTypeValid","selectedDeviceType","deferred","defer","deviceDto","emptyGuid","serial","customerKey","externalSystem","sensorHeight","fullHeight","deviceType","updateDevice","updatedDevice","updateDeviceToGrid","gridDevice","addDevice","addedDevice","addDeviceToGrid","promise","readExternalSystems","alert","selectedExternalSystemId","systems","externalSystemOptions","value","deviceTypeOptions","extSystemsDdlServerErrorText","localizedMessage","$http","post","get","getDevice","put","deleteDevice","delete","disconnectDevice","disconnectDeviceDto","factory","FooterController","currentViewMode","setViewMode","setUserViewMode","getUserViewMode","geocodeAPIService","serviceUrls","getGeocodeSuggestions","searchString","countryCode","cCode","requestUrl","response","getGeocodePosition","magicKey","groupService","addGroup","group","info","userId","getGroups","getContainerIdsByGroupId","groupId","updateGroup","LocationDetailsController","locationsService","s2wClusterLayerFactory","hasContainers","containers","openUpdateLocation","openNewContainerModal","isLocationDeletable","externalWMPlaceNr","deleteLocation","locationDetailsTab","getLocation","zoomLevel","initialized","convertToUTM33N","x","X","y","Y","externalLink","LocationDetailsModalController","municipalityService","saveFunction","updateLocation","bind","addLocation","getSaveFunction","toString","Number","closeWindow","municipalityCodeOptions","getMunicipalities","noDataTemplate","valuePrimitive","valueTemplate","esriLoader","locationUtility","readyDeferred","locationLayerFactory","createLayerOnAdd","require","Point","MarkerClusterLayer","createLayer","popupVisible","locationLayer","singleLocationIcon","getScreenPoint","graphic","mapView","geometry","toScreen","zIndex","locationFilterIds","toggleVisibility","onMouseMove","evt","hitResponse","results","layer","attributes","isCluster","graphicScreenPoint","position","onRightClick","screenPoint","type","item","mapPosition","focusPoint","clusterPoints","redrawData","setLocationFilter","locationIds","filteredLocations","_locations","updateData","getLocations","locations","validLocations","isValidLocation","degLong","degLat","LocationsController","fractionsUtility","externalSystemUtility","selectDisplayedDevices","s2wExternalSystemId","sortedLocations","locationModalOptions","getLocationAddress","postalCodeAndCity","postalCode","city","Boolean","join","address","municipalityCode","searchLocations","storeStateInQueryString","isFiltersEmpty","array1","array2","newFilteredLocations","isLocationMatching","$","getKendoGrid","deviceExternalIds","chain","flatMap","container","relatedDevice","s2wDevice","toUpperCase","searchTerm","isStringMatching","searchTermMatching","fractions","fraction","fractionMatching","exSys","externalSystemMatching","noPositionOnly","noPositionFilterMatching","str","term","indexOf","onRowClicked","row","closest","isAdvancedFiltersEmptpy","formatFractionAndCount","count","exportToExcel","locationOverviewGrid","saveAsExcel","exportAsPdf","saveAsPDF","openNewLocation","isExternalSystemFilterSelected","toggleFilterBox","filterBoxVisible","resize","toggleExternalSystemFilter","findIndex","splice","clearFilters","getExtSystemPlaceholderColor","filterData","getStateFromQueryString","fractionsDropdownOptions","settings","externalIdProp","events","onSelectionChanged","console","dropdownTranslations","checkAll","uncheckAll","buttonDefaultText","dynamicButtonTextSuffix","locationOverviewGridOptions","DataSource","a","b","unionBy","uniqBy","label","getFractionsForFilter","sortBy","img","getExternalSystemIcon","selected","getExternalSystemsForFilter","updateFilters","excel","allPages","fileName","pdf","multiPage","repeatHeaders","paperSize","detailText","htmlEncode","class","groupBy","getFractionIcon","pickBy","_fractions","fractionIcon","countHtml","uniq","formatFraction","click","excelExport","sheet","workbook","sheets","headers","bold","rows","cells","i","countBy","toPairs","on","includeContainers","includeDeletedLocations","includeDeletedContainers","activeLocations","status","c","getLocationStatistics","from","to","getLocationStatisticsByContainer","activeDevices","localeCompare","Date","lastModified","devicesToDisplay","priorityDeviceIndex","slice","MainController","environmentConfig","baseLayerFactory","flyFotoLayerFactory","selectionLayerFactory","areaLayerFactory","areaEditLayerFactory","zoomToContainersExceptions","handleZoomToLocation","setInitialPosition","mapCreated","currentLocationId","mapLayers","menuOptions","showNavbar","draggable","actions","Extent","SpatialReference","clusterLayer","clusterLayerGfx","graphics","items","xmin","ymin","xmax","ymax","j","currentPoint","fullExt","zoomToExtent","createMap","isInitialized","initRequired","reInitialize","addLayerFactory","areaUtility","mapTypes","selectionSettings","mapSettings","layerFactory","declare","Graphic","GraphicsLayer","SimpleMarkerSymbol","SimpleLineSymbol","SimpleFillSymbol","Circle","Polyline","Polygon","areaLineStyle","style","STYLE_SOLID","areaFill","AreaEditLayer","constructor","isEnabled","currentArea","selectedEdgeId","editAreaDeferred","onClick","hitResults","mapPoint","toMap","offsetX","offsetY","edge","r","moveEdgeToPoint","render","relatedPointIdx","p","lastIdx","createEdgeGraphic","isSelected","edgePoint","createEdgePoint","symbol","getPointPolyline","hasZ","hasM","paths","getPolygonPaths","spatialReference","clearGraphics","pointCoordinates","areaPolygon","createPolygon","edgeGraphics","edgeGraphic","addMany","renderAreaLines","renderAreaPoints","editedAreaPoints","getSelectionResult","path","removeAll","Font","Color","TextSymbol","selectedLineStyle","selectionFill","AreaLayer","textVisible","textZoomTreshold","onZoomFinished","currentZoomLevel","newTextVisibility","_addTextGraphics","_removeTextGraphics","areas","areaGraphics","createAreaPolygon","selectedAreaId","polygonGraphic","isTemporary","tempArea","remove","zoomTo","newGraphic","clone","zoomToGraphics","hiddenGraphic","graphicToHide","textGraphics","removeMany","createAreaTextGraphic","fillSymbol","areaGraphic","centroid","font","STYLE_NORMAL","VARIANT_NORMAL","WEIGHT_BOLDER","text","firstPoint","rings","Math","sign","additionalAttributes","pathPoints","polygon","addRing","flyFotoLayer","TileLayer","ScreenPoint","ignoreHitResults","currentResult","showContextMenu","persistenceRootKey","defaultVisibilityList","MapLayer","FlyFotoLayer","s2wClusterLayer","mapCreatedDeferred","_factories","_services","_mapView","_targetElement","_initialPosition","_initialZoom","ctxMenu","zoom","Map","MapView","Menu","callbacks","mousemove","rightclick","center","zoomFinished","executeCallbacks","eventName","buttons","executeCallbacksWithHitResponse","box","corner","w","h","getScreenPointFromMenuPosition","eventType","hitTestPromise","hitTest","onDoubleClick","onZoom","onCenter","saveLayerVisibilityList","visibilityList","Object","fromEntries","layers","localStorage","setItem","JSON","stringify","mapId","replaceWith","constraints","rotationEnabled","service","watch","onOpen","startup","bindDomNode","factories","createLayersPromises","parse","getItem","newVisibilityList","addLayerService","setup","layerName","toggleLayerVisibility","callback","refreshMap","extent","graphicsArray","expansionFactor","goTo","Array","isArray","reduce","fullExtent","union","expand","GetLayerGraphics","allLayers","locationPoint","zoomOut","zoomRelative","getMapPoint","reloadMap","loadDataPromises","lineSym","pointSym","SelectionLayer","enabled","selectionDeferred","createPoint","_isPointNearStartPoint","onSelectionComplete","target","pop","renderGeometry","firstScreenPoint","distanceTreshold","xDiff","abs","yDiff","sqrt","ReportsController","reportsTab","SensorOverviewController","sensorOverviewGrid","extendDevice","modifiedAt","createdAt","openUpdateSensor","moveToLocationDetails","param","sensorOverviewGridOptions","containerNumber","t","format","serverInfoService","getServers","$window","element","getElementById","focus","utm33N","projectedCoords","proj4","getCenterFromDegrees","num_coords","Z","PI","lon","cos","sin","atan2","hyp","newX","newY","distanceToLineSegment","lx1","ly1","lx2","ly2","px","py","ldx","ldy","lineLengthSquared","lx","ly","dx","dy","distanceSquaredToLineSegment2","distanceSquaredToLineSegment","attribute","setAttribute","StatisticsController","containerService","chartOptionsService","dateRange","charts","getChartData","getContainerStatistics","moment","statistics","createChart","valueAxis","min","max","getContainerByRelatedDevice","titleParts","getPageTitle","undergroundAPIService","initDeferred","locs","hitResult","displayText","place","containerType","fill","volt","loc","placeNr","locationNumber","commune","hasPosition","poiId","time","radialMenuOptions","cp","upsertLocationData","getS2WOverviewExpress","locationsToLoad","deviceIdNumbers","isNaN","qPool","hasCompleted","isFirst","ContainerTypeDetailsModalController","containerTypesService","containerTypeUnits","updateContainerType","addContainerType","containerTypeUnitOptions","unit","ContainerTypesController","$filter","containerTypeStatuses","openContainerTypeModal","formType","sortedContainerTypes","openNewContainerType","openUpdateContainerType","deleteContainerType","containerTypeOverviewGridOptions","getContainerTypes","containerTypes","DeviationReportController","deviationReportService","deviationStatuses","deviationAlertRecurrenceTypes","openDeviationDetailsModal","reportQueries","deviationAlert","deviations","sortedJobs","openNewDeviationReport","deleteDeviationReport","deviationReportId","deviationReport","isSuccessful","openUpdateDeviationReport","getDaysOfWeekLocalizedString","daysOfWeekBinaryArray","daysOfWeek","recurrence","daysOfWeekEnglish","localizedDaysOfWeek","day","getIntervalMinutesLocalizedString","intervalInMinutes","String","getLocalizedDateString","date","getRecurrenceTypeLocalizedString","recurrenceTypeBinary","getEmailParticipantsCount","emailAddresses","getStatusCheckboxByStatusId","statusId","findDeviationAlertType","deviationReportGridOptions","getDeviationReports","getDeviationReportQueries","getDeviations","jobs","filteredJobs","job","messages","DeviationReportModalController","userService","daysOfTheWeek","reportQueryTypeChanged","selectedReportType","deviationReportType","getAnEmptyJob","queryId","lastSuccessfullRun","statuses","subject","body","sendEmptyReport","startDate","endDate","firstDailyRun","lastDailyRun","exceptions","runOnceADayAtTime","validateForm","dateCorrectedFirstDailyRun","dateCorrectedLastDailyRun","validation","selectedReportStatusField","operator","selectedReportStatusOperator","statusValue","selectedReportStatusOperatorr","values","preventSubmittingOnEnterKey","keyCode","nodeName","formatForInit","statusFieldValue","deviationReportParameters","statusOperatorValue","formattedDeviation","Set","reportTypes","formatBeforeSave","addedDeviations","deviation","formEl","addEventListener","typeChanged","deviationAlertTypeId","selectedType","operatorChanged","log","updateDeviationReport","addDeviationReport","deleteAndClose","formDeviation","parameterDeviation","newDeviation","editChanges","isEqual","modificationsToNewDeviation","addEmail","isParametered","input","emailAddressesSearchBox1","emailAddressesSearchBox","inputValue","email","match","removeEmail","addDeviation","deviationsSearchBox","textField","removeDeviation","toggleScheduledDay","dayIndex","togglExceptionDay","handleShowEmailAddressesSearchBox","search","handleShowDeviationsSearchBox","keys","key","reportStatusField","reportStatusOperator","recurrenceTypes","sortedDeviations","formatDeviationsForInit","isEditMode","getUsersPromise","getUsers","isPeriodRangeVisible","emailAddressesSearchBoxOptions","highlightFirst","clearButton","users","sortedEmails","user","deviationsSearchBoxOptions","placeholder","directive","link","scope","attr","ngModelCtrl","$parsers","transformedInput","lst","$setViewValue","$render","ExternalLinksController","externalLinkService","removeExternalLinkFromGrid","idToDelete","linkToDelete","externalLinksGrid","openExternalLinkModal","openNewExternalLink","externalLinks","openUpdateExternalLink","deleteExternalLink","deletedLink","externalLinksGridOptions","getExternalLinks","ExternalLinkDetailsModalController","updateExternalLink","createExternalLink","externalLinkId","FractionDetailsModalController","fractionsService","updateFraction","addFraction","FractionsController","fractionStatuses","openFractionModal","sortedFractions","openNewFraction","deleteFraction","openUpdateFraction","fractionOverviewGridOptions","getFractions","externalIdNumber","extFractions","areaService","UserAdministrationController","extendUser","groupsText","authTypes","userDetailsModalHeight","isShop2WinModuleEnabled","sortedUsers","openNewUser","allUsers","openUpdateUser","userOverviewGridOptions","unsortedUsers","UserDetailsModalController","validateUserName","matchUsers","auth0UserId","sendPasswordChange","userNameValid","isEmailFormatValid","selectedAuthTypes","addedAreas","areaOptions","AllAreas","addArea","removeArea","areasValid","showAtleastOneAreaWarn","test","validateEmailFormat","selectedAreas","areaName","UserId","Auth0UserId","UserName","SendPasswordChange","AuthTypes","Areas","updateUser","addUser","getAuthGroups","VehicleDetailsModalController","fuelTypes","vehiclePromise","updateVehicle","createVehicle","savePromise","vehicleImage","imagePromise","addImage","fuelType","VehiclesController","mediaUtility","openVehicleModal","sortedVehicles","openNewVehicle","vehicleOverviewGrid","deleteVehicle","openUpdateVehicle","openMediaModal","pictureUrl","getMediaUrl","imageId","pictureUrls","vehicleOverviewGridOptions","getVehicle","vehicleId","file","imageModel","mediaType","mediaContent","content","ContainerDetailsModalController","keycardService","allContainers","confirmModal","updateGroupValidationText","addedGroups","showAtLeastOneGroupWarn","resetWindow","Value","selectedContainerType","selectedGroup","selectedUser","containerIdValid","validateContainerId","containerToSave","nummer","communeId","groupIds","shouldDisconnectPromise","okText","shouldDisconnectDevice","updateContainer","addContainer","cloneDeep","removeGroup","usersOptions","each","usersDdlServerErrorText","containerTypesOptions","containerTypesDdlServerErrorText","groupsOptions","groupsDdlServerErrorText","fg","groupOfContainer","containerTypeId","ContainerEventsController","deviceLogs","media","m","getLogsByExtDeviceIdAndSystem","containerEventsGridOptions","pageable","ContainerEventsPictureCarouselController","source","ContainerInfoController","showEditGroupButton","hideNavBar","containerData","activate","deactivate","frequenceList","frequenceListOptions","saveContainerSetting","updateContainerSettings","magnetTime","fillValue","fillingHeight","frequence","selectedFrequence","cardsActive","soundActive","clearCounter","triggerUpdate","openEditGroup","currentGroup","groupDisplayText","groupInGroups","toggleClearCounter","toggleTriggerUpdate","getExternalSystem","system","boolToText","containeroverviewdetailstab","selectStartTab","getContainerById","getContainer","cardsActiveChangeIsPending","cardsActiveText","soundActiveText","fillText","frequenceText","triggerCards","triggerSound","updateTime","parseDate","usageCounter","version","battery","ContainerOverviewController","toggleInactive","timeout","containerOverviewGridData","transitionTo","inherit","relative","$current","notify","containerOverviewGrid","refresh","getContainerOverviewGridData","getContainers","relatedLocation","placeNumber","signal","SignalClass","getSignalStrength","PositionClass","updateTimeDisplay","toFixed","locationName","locationHref","origin","extendGridData","loadContainerOverviewGridData","yes","excelFileName","isEditVisible","openNewGroupModal","openUpdateContainerModal","containerOverviewGridOptions","schema","model","fields","multi","isTrue","isFalse","dateFormat","columnWidths","ContainerStatisticsController","localStorageService","addChartData","column","category","chartType","tooltipVisible","special","times","series","axis","tooltip","valueAxes","getMinValue","report","getMaxValue","containerReportData","seriesDefaults","missingValues","chartData","refreshChart","containerStatisticsGridData","getContainerReportsBasedOnDate","round","timestamp","categoryAxis","categories","majorGridLines","axisCrossingValues","setCategoryAxis","onLegendItemClick","ContainerStatusController","containerStatusGridData","containerStatusGridOptions","getErrorsForContainerId","containerStatusGrid","CustomerSystemModalController","currentCustomerSystemId","currentCustomerSystemExternalId","selectedCustomerSystemId","customerSystemExternalId","customerSystemOptions","updateDeviceCustomerSystem","customerSystem","customerSystemId","customerSystemName","GroupDetailsModalController","createResult","createLocation","groupResult","country","trim","groupNummer","ContainerOverviewV2Controller","containerEditModalWidth","deviceUtility","hideColumn","showColumn","addContainerToGrid","updateContainerToGrid","titleFraction","titleAddress","persistOptions","getDeviceOverviewColumns","getIndexedColumnTitle","getContainersV2","sensorSystemsCount","getCurrentSensorSystemColumnCount","containerNumberNum","deviceOverviews","padDeviceOverviews","extendDeviceOverview","toDateOrEmpty","dateWhenFull","lastEmptyDate","sensorColumnTemplate","detailsLink","getDeviceDetailsLink","deviceExternalId","getSensorColumnTemplate","sensor","sensorSystemId","itemTemplate","filterCheckboxTemplate","getColumns","columnMenu","filterMenuInit","sortMulticheckboxFilterValues","columnMenuInit","excludeColumnFromMenuList","columnHide","columnShow","columnResize","columnReorder","unwatch","grid","loadOptions","setOptions","loadOverviewGridOptions","SensorApiContainerDetailsModalController","customerSystemsService","customerSystems","containerCustomerSystems","allContainerCustomerSystems","addedSystemsIds","isDirty","deviceIndex","openAddSensor","showSensorBusyIndicator","connectDevice","getContainerByContainerId","cont","extDevices","hideSensorBusyIndicator","hideMainBusyIndicator","detachSensor","isBusy","fractionValid","selectedFraction","containerTypeValid","nameValid","updateContainerDto","number","selectedLocationId","fractionId","selectedFractionId","selectedContainerTypeId","updateContainerV2","containerOverview","addContainerV2","customerSystemDropDownEditor","appendTo","kendoDropDownList","customerSystemGridCellContents","html","getAvailableSystems","ex","readFractions","fractionsDdlServerErrorText","readLocations","locationsDdlServerErrorText","selectedLocation","readContainerTypes","extContainerTypes","ct","togglePriority","toggleStatus","isContainerDeletable","deleteContainer","getCustomerSystems","getAllContainerCustomerSystems","getCustomerSystemsForContainer","ccSystem","locationOptions","containerTypeOptions","fractionOptions","sensorGridOptions","hidden","editable","tabOptions","activeTab","innerText","$applyAsync","isSensorTabActive","isCustomerSystemTabActive","ContentUrl","kendoTooltip","effects","duration","addCustomerSystem","addRow","customerSystemGridOptions","create","containerCustomerSystem","copy","customerSystemsGrid","cancelRow","addCustomerSystemForContainer","update","cs","updateContainerCustomerSystem","destroy","removeCustomerSystemFromContainer","ind","batch","required","editor","command","KeyCardRegistrationModalController","keyCard","keycardUtility","saveKeycards","keyCards","cardNumbers","cardKeys","lastName","cityAddress","cardDeactivated","firstName","addKeycards","updateKeycard","isAdditionDisabled","Remember","newKey","errorMessage","total","groupOptions","addKey","which","exist","convertResult","convertKeycardNumber","returnStr","TexValuet","removeKey","cardNumber","streetAddress","KeycardsOverviewController","KeyCardsOverviewGridData","openKeyCardRegistrationModal","getKeyCardsOverviewGridData","openUpdateKeyCardModal","getContainerPromise","selectedGroupId","filteredKeyCardsData","kC","keycardsOverviewGrid","cardFilter","onGroupUpdated","getKeyCardsByGroupId","keycardsOverviewGridOptions","restrict","deviceInfo","hashCode","hash","charCodeAt","externalSystemIconName","externalSystemName","getExternalSystemIconName","substring","getFractionNormalizedName","fractionName","LocationInfoTabController","formattingUtility","unwatchLocationChanged","handleLocationLoaded","resetPosition","loadLocationContainersData","containerInfos","chartStatistics","getContainerInfoByLocationId","containerInfoList","extendContainerInfo","containersWithoutDevices","containersWithDevices","concat","createMiniCharts","today","start","getFullYear","getMonth","getDate","showPositionEditButtons","containerInfo","latestStatus","diff","dateWhenFullText","endOf","getDateWhenFull","fillStatisticsLink","fillPriorityDevice","getExternalSystemName","deviceData","externalSystemIcon","externalSystemIconStyle","getDevicesToDisplay","isDeletable","latestStatuses","statusWithVolt","toFixedTrunc","containerMinCharts","currentStatistic","relatedContainer","item1","days","item2","barHeights","stat","minChart","$minChartElement","barHeight","append","savePosition","containerRowPaddingLength","devicesLength","deleteIconLength","maxDevicesLength","ContainerLogModalController","logActionService","addContainerLog","logAction","logActionId","comment","containerOptions","deviceOptions","logActionOptions","getLogActions","logActions","logActionsDdlServerErrorText","deviceDropDown","LocationLogTabController","unwatchLocation","containerLogs","loadContainerLogs","filterList","getLogsByFilterBulk","extendContainerLog","containerLog","openNewLogModal","isBetween","waitLocationLoaded","containerLogsGridOptions","LocationPowerBITabController","windowSize","frameWidth","frameHeight","locationDetailsBaseUrl","reportType","powerBILink","reportUrlBase","powerBiFrame","LocationStatisticsTabController","newCharts","mapValues","stats","getFractionColor","mapLayersPanel","_scope","entries","button","addClass","removeClass","toggleLayer","stopPropagation","BatteryVoltageController","batteryVoltagesService","filterCacheKey","setSubVoltSliderAboveMainSlider","voltRangeOfMainSlider","voltSlider","voltageRange","subVoltSlider","set","exportChildData","rowIndex","Deferred","detailExportPromises","sliderValues","allStatuses","getStatusesFilteredByVoltMinMax","parseFloat","ExcelExporter","book","masterRowIndex","filteredStatuses","municipalities","isInSelectedMunicipalities","show24NotReported","currentDate","setHours","getHours","getStatusesByNotReportedCheck","batteryStatus","isBatteryInArea","isInSelectedAreas","getStatusesFilteredByAreas","batteryVoltagesGrid","storeFilterInLocalStorage","getCurrentFilter","filterDetailGridsData","detailGrids","gridElement","kendoGrid","getMinMaxVoltValues","voltIntervals","currentMin","currentMax","interval","relatedMinMax","inside","xi","yi","xj","yj","extBatteryVoltageReport","batteryVoltage","expandAll","Promise","expandRow","done","filter24NotReported","detailsExpanded","handleNotReportedButtonClick","toggleExpandDetails","async","collapseRow","show24NotReportedTrue","show24NotReportedFalse","getFilterFromLocalStorage","areasDropdownOptions","voltDropdownOptions","voltInterval","voltDropdownTranslations","municipalitiesDropdownOptions","dropdownMunicipalityTranslations","batteryVoltagesGridOptions","dateToCheck","className","detailInit","detailGrid","detailRow","openedDetailGrids","gridId","cleanUpClosedDetailGrids","detailTemplate","masterData","deviceid","when","apply","detailExports","makeArray","arguments","unshift","ci","saveAs","dataURI","ooxml","Workbook","toDataURL","detailGridOptions","getBatteryVoltages","batteryVoltages","allMunicipalits","code","activeAreas","municipality","getMunicipalitiesForFilter","loadMunicipalitiesToFilter","getAreasForFilter","defaultFormatter","volts","ceil","floor","getVoltageRangeOfBatteries","sliderDiv","subVoltSliderDiv","sliderProps","connect","tooltips","step","range","noUiSlider","initSliders","ContainerLogsController","containerLogsGrid","selectedMunicipalities","selectedMunicipalyy","filterMunicipalitiesData","municipalityfilter","filterLog","allContainerLogInTimeSlot","selectedArea","getLogs","logs","locationIdOfLog","displayNoRecordsConditionally","filterBasedOnArea","filteredByArea","isInArea","logByMunicipality","filteredLogs","allLogs","filteredByMunicipality","filterBasedOnMunicipality","municipalitySelected","containerLogsByArea","updateMunicipalitiesFilters","loadContainerLogsGridOptions","ErrorStatusController","defaultDateRangeOptions","statusService","loadAreas","loadStatuses","getStatusesPromise","selectedDateRange","getStatusesByDate","subtract","getLatestStatuses","extendedStatuses","isUserMunicipality","extendStatuses","allExtendedStatuses","filteredExtendedStatuses","statusGrid","dateRangeOptions","setter","setDate","statusGridOptions","loadMunicipalities","extendedStatus","selectedDateRangeChanged","GenericReportsController","selectedReportId","allReports","changeReport","empty","hide","selectedReport","show","reportsDdlOptions","genericReports","viewSize","MunicipalityLogsController","filterdLogsByArea","filteredLog","municipalityLogsGrid","selectedMunicipality","loadMunicipalityLogs","municipalityLogsGridOptions","busyIndicator","css","$compile","$interpolate","terminal","priority","attrs","removeAttr","uiSref","uiSrefIf","$location","onInit","persistenceKeyPrefix","store","getStore","datePickerkey","getPersistenceKey","entry","fromDate","toDate","loadPersistedValues","setDateValues","persistDateIfCustom","__","persistValues","_oldDateRange","getFromDate","saveStore","setMonth","setFullYear","fileread","ctrl","changeEvent","reader","FileReader","onload","loadEvent","dataUrl","metaData","getModel","readAsDataURL","files","transclude","readMunicipalities","handleMunicipalitiesFilterChanged","onItemSelect","municipalityOptions","halfOpenedStates","fullOpenedStates","getPaneSizes","stateName","paneSizes","kendoSplitter","orientation","panes","collapsible","resizeEvent","splitbar","splitter","$splitterToggle","mousedown","inputNumber","ngModel","$formatters","toLocaleString","useGrouping","startLeft","startTop","animationDuration","isOpen","lastScreenPoint","lastScreenPointType","webMercatorUtils","getExtentFromClusterPoints","setPosition","setLocationPosition","minFactor","maxFactor","setOpen","newValue","contextType","startWidth","endLeft","maxHeight","endTop","maxWidth","animate","queue","complete","fadeIn","fadeOut","locationSetPositionShown","fractionDigits","defaultIfZero","minimumFractionDigits","maximumFractionDigits","$sce","val","trustAsResourceUrl","NavbarController","handleRouteStateChanged","toParams","relatedItem","searchItems","searchBoxText","displayName","readContainerSuggestionsInternal","suggestions","mergedContainers","searchType","currentText","getContainerSuggestions","goToContainerDetails","tab","hideSearchLoading","filteredSearchItems","searchFilterType","showLoginLoadingIcon","overviewContainers","handleLoginClick","login","handleLogoutClick","searchFilter","handleSearchClick","searchBox","dataItems","ul","children","openAddKeycardModal","addressSearchOptions","isLoggedIn","containerName","extendContainerV2List","s2wOverviewContainers","addSearchItems","readContainerSuggestions","searchResult","readAddressSuggestions","keyCardSearch","keycards","distinctNumberKeycards","readKeyCardSuggestions","candidates","idx","goToLocationDetails","first","loadNavbar","PictureCarouselController","actualOptions","kendoConfirm","fail","ownerText","owners","args","_event","setPlacement","$apply","authInterceptorService","Authorization","token","authConfig","cachingService","authServiceVersion","auth0Client","authenticationData","username","contractorId","activeDepartment","userRoles","modules","loginWithRedirect","redirect_uri","clear","clearAuthData","returnTo","configureClient","handleRedirectCallback","fillAuthData","isUpToDate","handleRedirectDeferred","query","history","replaceState","getTokenSilentlyPromise","getTokenSilently","getUserPromise","getUser","accessToken","getUserDetails","accessRights","getAuthData","getAccessRightsInternal","createAuth0Client","client_id","audience","useRefreshTokens","client","currentRights","BaseDataService","locationBaseUrl","serviceBaseUrl","locationServiceUrl","getMeasurementUnitTypes","getMeasurementUnitTypesUrl","getMeasurementTypes","getMeasurementTypesUrl","cacheService","$localForage","cacheKey","cacheItem","now","meta","expiresAt","removeItem","getTime","setMinutes","getMinutes","removeByRegex","regex","removePromises","serialize","serialized","prototype","call","encodeURI","cacheLocks","cacheCalls","addTo","getAll","getByPrefix","matches","has","isValid","prependTo","getCompositeKey","compositeKey","removeFrom","nestedKey","filterKey","filterValue","removeFromBy","replaceIn","lockingFunction","array","Error","itemIndex","getWithCache","serviceName","serviceUrl","methodName","getWithoutCache","exists","keyPrefix","matchedKeys","compositePrefix","cacheItems","matchedKey","pattern","RegExp","matchKey","cacheTimeoutInMin","toISOString","removeUnstorableProperties","functionName","cacheCall","isPrepend","itemKey","object","isObject","forIn","isStorable","isFunction","additionalOptions","legend","getCategories","chartArea","assign","uniqData","flatten","getEmptyingReportsForContainerById","utcLogTime","extendLogs","getLogsByFilter","containerSettings","CustomerSystemId","containerCustomerSystemId","connectDeviceDto","userViewModeKey","pageViewMode","waitForStateAndStore","fallback","serializedItem","fieldName","atob","valueGetter","btoa","uuidv4","random","httpErrorInterceptorService","responseError","GroupId","CardNumbers","LastName","CityAddress","CardDeactivated","Address","FirstName","CommuneId","Time","getKeyCardsForUsers","deferredDict","callerName","keyValues","getItemByCompositeKey","removeIfCompleted","addCompositeKey","generateGuid","keyValuesJson","$$state","s4","errorOnly","systemInfoData","systemInfo","getLinkToS2WDetails","forceHref","getLinkToReenDetails","n","substr","parseInt","pow","extend","kendoBusyIndicator","outerWidth","outerHeight","jQuery","fieldNames","direction","fieldList","$filterMultiCheckElement","thead","filterMultiCheck","checkSource","view","toJSON","createCheckBoxes","emptyFieldText","_index","$checkElement","inputElement","tableVersion","getOptions","OPTIONS_KEY_PREFIX","getOptionsStorageKey","inputString","validCharacterList","keycardInput","suffixStartIndex","k","convertedKeycardNumber","startIndex","coordinateBounds","long","mediaId","selectedTab","textContent","tabstrip","tabToSelect","visitNode","node","hashMap","idProp","convertTreeToList","root","childrenProp","stack"],"mappings":"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","file":"app-bundle.js","sourcesContent":["(function () {\r\n var undergroundWebApp = angular.module('UndergroundWebApp', [\r\n 'kendo.directives',\r\n 'kendo.window',\r\n 'ui.router',\r\n 'LocalStorageModule',\r\n 'LocalForageModule',\r\n 'esri.map',\r\n 'angularjs-dropdown-multiselect',\r\n 'angulartics',\r\n 'angulartics.google.analytics',\r\n 'ui.toggle',\r\n 'ui-iconpicker',\r\n 'pascalprecht.translate',\r\n 'ngCookies'\r\n ]);\r\n\r\n undergroundWebApp.constant('defaultSelectedLanguageId', 'no');\r\n\r\n undergroundWebApp.constant('availableLanguages', [\r\n { id: 'en', name: 'English', icon: 'UnitedStates-Flag-48.png' }, // icon:\"GreatBritain-Flag-48.png\"\r\n { id: 'no', name: 'Norsk', icon: 'Norway-Flag-48.png' }\r\n ]);\r\n\r\n undergroundWebApp.config([\r\n '$locationProvider',\r\n '$httpProvider',\r\n '$translateProvider',\r\n 'availableLanguages',\r\n 'defaultSelectedLanguageId',\r\n\r\n function ($locationProvider, $httpProvider, $translateProvider, availableLanguages, defaultSelectedLanguageId) {\r\n $locationProvider.html5Mode(true);\r\n $httpProvider.interceptors.push('authInterceptorService');\r\n $httpProvider.interceptors.push('httpErrorInterceptorService');\r\n\r\n $translateProvider\r\n .useStaticFilesLoader({\r\n prefix: 'app/locales/',\r\n suffix: '.json'\r\n })\r\n .registerAvailableLanguageKeys(\r\n availableLanguages.map(l => l.id),\r\n {\r\n en: 'en',\r\n no: 'no'\r\n }\r\n )\r\n .preferredLanguage(defaultSelectedLanguageId)\r\n .fallbackLanguage('en')\r\n .useSanitizeValueStrategy('escapeParameters');\r\n\r\n $translateProvider.useLocalStorage();\r\n }\r\n ]);\r\n\r\n undergroundWebApp.constant('containerEditModalWidth', 980);\r\n\r\n undergroundWebApp.constant('fallbackErrorMessageText', 'En feil oppstod ved henting av data... Prøv å laste inn side på nytt');\r\n\r\n undergroundWebApp.constant('maxContainerOverviewSensorColumns', 3);\r\n\r\n undergroundWebApp.constant('coordinateBounds', {\r\n latMin: 58,\r\n latMax: 72,\r\n longMin: 5,\r\n longMax: 32,\r\n });\r\n\r\n undergroundWebApp.constant('selectionSettings', {\r\n outlineDefault: { color: [255, 255, 255], width: 1 },\r\n outlineSelected: { color: [0, 162, 235], width: 2 },\r\n lineSymbol: { color: [0, 162, 235], width: 2 },\r\n pointSymbol: { color: [255, 0, 0], size: 2 },\r\n edgeSymbol: { color: [230, 162, 110], size: 12 },\r\n edgeSelectedSymbol: { color: [230, 100, 10], size: 16 },\r\n pointerSize: 10,\r\n pointerSizeDefault: 2\r\n });\r\n\r\n undergroundWebApp.constant('mapSettings', {\r\n mapType: 'UTM33N',\r\n wkid: 32633,\r\n });\r\n\r\n undergroundWebApp.run([\r\n '$rootScope',\r\n '$timeout',\r\n 'globalEvents',\r\n 'pageSpecificDisplays',\r\n 'authService',\r\n 'systemService',\r\n 'externalReportsService',\r\n 'displayService',\r\n\r\n function ($rootScope, $timeout, globalEvents, pageSpecificDisplays, authService, systemService, externalReportsService, displayService) {\r\n authService.init().then(authData => {\r\n $rootScope.authData = authData;\r\n $rootScope.showMenu = authData.isAuth;\r\n\r\n systemService.getSystemInfo();\r\n externalReportsService.getAllExternalReports().then(reports => {\r\n $rootScope.externalReports = reports;\r\n });\r\n });\r\n \r\n $rootScope.masterMode = false;\r\n $rootScope.isAdmin = isAdmin;\r\n $rootScope.isAccessible = isAccessible;\r\n $rootScope.getCachePrefix = getCachePrefix;\r\n\r\n //Subscribe to global events\r\n $rootScope.$on(globalEvents.$stateChangeSuccess, handleStateChangeSuccess);\r\n $rootScope.$on(globalEvents.accessTokenExpired, handleAccessTokenExpired);\r\n\r\n setKendoGridFilterOperatorOrder();\r\n\r\n kendo.culture(\"no-NO\");\r\n\r\n //Global event handlers\r\n function handleStateChangeSuccess(_, toState) {\r\n $rootScope.selectedContainerId = undefined;\r\n\r\n let pageSpecificDisplay = pageSpecificDisplays[toState.name];\r\n if (pageSpecificDisplay) {\r\n $timeout(250).then(displayService.applyPageViewMode(\r\n pageSpecificDisplay.viewMode,\r\n pageSpecificDisplay.isPriority)\r\n );\r\n }\r\n }\r\n\r\n function handleAccessTokenExpired() {\r\n authService.logout();\r\n }\r\n\r\n //Private functions\r\n function getCachePrefix() {\r\n return $rootScope.authData.authUser.userName + '_';\r\n }\r\n\r\n function isAccessible(area, accessType) {\r\n return $rootScope.authData\r\n && $rootScope.authData.isAuth\r\n && $rootScope.authData.hasAccess\r\n && $rootScope.authData.hasAccess(area, accessType);\r\n }\r\n\r\n function isAdmin() {\r\n return $rootScope.authData\r\n && $rootScope.authData.authUser\r\n && $rootScope.authData.authUser.groups\r\n && $rootScope.authData.authUser.groups.some(g => g.groupName === 'Admin');\r\n }\r\n }]);\r\n\r\n //Private functions\r\n function setKendoGridFilterOperatorOrder() {\r\n kendo.ui.FilterMenu.fn.options.operators.string = {\r\n contains: kendo.ui.FilterCell.fn.options.operators.string.contains,\r\n doesnotcontain: kendo.ui.FilterCell.fn.options.operators.string.doesnotcontain,\r\n endswith: kendo.ui.FilterCell.fn.options.operators.string.endswith,\r\n eq: kendo.ui.FilterCell.fn.options.operators.string.eq,\r\n isempty: kendo.ui.FilterCell.fn.options.operators.string.isempty,\r\n isnotempty: kendo.ui.FilterCell.fn.options.operators.string.isnotempty,\r\n isnotnull: kendo.ui.FilterCell.fn.options.operators.string.isnotnull,\r\n isnotnullorempty: kendo.ui.FilterCell.fn.options.operators.string.isnotnullorempty,\r\n isnull: kendo.ui.FilterCell.fn.options.operators.string.isnull,\r\n isnullorempty: kendo.ui.FilterCell.fn.options.operators.string.isnullorempty,\r\n neq: kendo.ui.FilterCell.fn.options.operators.string.neq,\r\n startswith: kendo.ui.FilterCell.fn.options.operators.string.startswith,\r\n };\r\n }\r\n}());\r\n","/**\r\n * This file contains all the environment specific configurations.\r\n */\r\n(function () {\r\n var undergroundWebApp = angular.module('UndergroundWebApp');\r\n\r\n undergroundWebApp.config(['$localForageProvider', function ($localForageProvider) {\r\n $localForageProvider.config({\r\n driver: localforage.INDEXEDDB\r\n });\r\n }]);\r\n\r\n undergroundWebApp.constant('environmentConfig', {\r\n \"showMenu\": false,\r\n \"disableCache\": true,\r\n statusCacheMaxAge: 60 * 60 * 1000,\r\n });\r\n\r\n undergroundWebApp.constant('s2wExternalSystemId', '1851D315-6413-400E-998A-797EF5CAE143');\r\n\r\n undergroundWebApp.constant('serviceUrls', {\r\n geocodeingServiceUrl: 'https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/',\r\n reenHubContainer: 'https://hub.reen.com/status/container/',\r\n reenHubLocation: 'https://hub.reen.com/status/site/',\r\n });\r\n})();\r\n","/**\r\n * This file contains all the environment specific configurations.\r\n */\r\n(function () {\r\n var undergroundWebApp = angular.module('UndergroundWebApp');\r\n\r\n undergroundWebApp.config(['$localForageProvider', function ($localForageProvider) {\r\n $localForageProvider.config({\r\n driver: localforage.INDEXEDDB\r\n });\r\n }]);\r\n\r\n undergroundWebApp.constant('environmentConfig', {\r\n clientSideCacheEnabled: false,\r\n statusCacheMaxAge: 60 * 60 * 1000,\r\n });\r\n\r\n undergroundWebApp.constant('s2wExternalSystemId', '1851D315-6413-400E-998A-797EF5CAE143');\r\n\r\n undergroundWebApp.constant('serviceUrls', {\r\n geocodeingServiceUrl: 'https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/',\r\n reenHubContainer: 'https://hub.reen.com/status/container/',\r\n reenHubLocation: 'https://hub.reen.com/status/site/',\r\n });\r\n\r\n undergroundWebApp.constant('authConfig', {\r\n domain: 'fieldata.eu.auth0.com',\r\n clientId: 'phKOqRBUVfkHDyWv0lxibuaVqCoCcnPJ',\r\n apiIdentifier: 'https://stavanger.intellicont.no'\r\n });\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n var undergroundWebApp = angular.module('UndergroundWebApp');\r\n\r\n undergroundWebApp.constant('formTypes', {\r\n add: 'add',\r\n edit: 'edit'\r\n });\r\n\r\n undergroundWebApp.provider('containerTypeUnits', function() {\r\n this.$get = ['$translate', function($translate) {\r\n return [\r\n { Id: 0, Name: 'Liter', LocalizedName: $translate.instant('CONTSANT_CONTAINER_TYPE_UNITS_LITER') }\r\n ];\r\n }];\r\n });\r\n\r\n undergroundWebApp.provider('containerTypeStatuses', function() {\r\n this.$get = ['$translate', function($translate) {\r\n return {\r\n active: { Id: 0, Name: 'Active', LocalizedName: $translate.instant('CONTSANT_STATUS_ACTIVE') },\r\n deleted: { Id: 99, Name: 'Deleted', LocalizedName: $translate.instant('CONTSANT_STATUS_DELETED') }\r\n };\r\n }];\r\n });\r\n\r\n undergroundWebApp.provider('deviceTypes', function() {\r\n this.$get = ['$translate', function($translate) {\r\n return [\r\n { id: 0, name: $translate.instant('CONTSANT_DEVICE_TYPES_ACCESS_CONTROL') },\r\n { id: 1, name: $translate.instant('CONTSANT_DEVICE_TYPES_LEVEL_MEASUREMENT') },\r\n { id: 2, name: $translate.instant('CONTSANT_DEVICE_TYPES_ACCESS_CONTROL_AND_LEVEL_MEASUREMENT') }\r\n ];\r\n }];\r\n });\r\n \r\n undergroundWebApp.provider('fractionStatuses', function() {\r\n this.$get = ['$translate', function($translate) {\r\n return {\r\n active: { Id: 0, Name: 'Active', LocalizedName: $translate.instant('CONTSANT_STATUS_ACTIVE') },\r\n deleted: { Id: 99, Name: 'Deleted', LocalizedName: $translate.instant('CONTSANT_STATUS_DELETED') }\r\n };\r\n }];\r\n });\r\n\r\n undergroundWebApp.provider('deviationStatuses', function() {\r\n this.$get = ['$translate', function($translate) {\r\n return {\r\n active: { Id: 0, Name: 'Active', LocalizedName: $translate.instant('CONTSANT_STATUS_ACTIVE') },\r\n inactive: { Id: 1, Name: 'Inactive', LocalizedName: $translate.instant('CONTSANT_STATUS_INACTIVE') },\r\n invisible: { Id: 2, Name: 'Invisible', LocalizedName: $translate.instant('CONTSANT_STATUS_INVISIBLE') },\r\n deleted: { Id: 99, Name: 'Deleted', LocalizedName: $translate.instant('CONTSANT_STATUS_DELETED') }\r\n };\r\n }];\r\n });\r\n\r\n undergroundWebApp.provider('deviationAlertRecurrenceTypes', function() {\r\n this.$get = ['$translate', function($translate) {\r\n return {\r\n 0: { id: 0, Name: 'Continuous run', LocalizedName: $translate.instant('ADMINISTRATION_DEVIATION_RECURRENCE_TYPE_CONTINUS_RUN') },\r\n 1: { id: 1, Name: 'Scheduled alert', LocalizedName: $translate.instant('ADMINISTRATION_DEVIATION_RECURRENCE_TYPE_SCHEDULED_ALERT') }\r\n };\r\n }];\r\n });\r\n\r\n undergroundWebApp.provider('daysOfTheWeek', function() {\r\n this.$get = ['$translate', function($translate) {\r\n return [\r\n $translate.instant('ADMINISTRATION_DEVIATION_DAYS_OF_WEEK_MONDAY'),\r\n $translate.instant('ADMINISTRATION_DEVIATION_DAYS_OF_WEEK_TUESDAY'),\r\n $translate.instant('ADMINISTRATION_DEVIATION_DAYS_OF_WEEK_WEDNESDAY'),\r\n $translate.instant('ADMINISTRATION_DEVIATION_DAYS_OF_WEEK_THURSDAY'),\r\n $translate.instant('ADMINISTRATION_DEVIATION_DAYS_OF_WEEK_FRIDAY'),\r\n $translate.instant('ADMINISTRATION_DEVIATION_DAYS_OF_WEEK_SATURDAY'),\r\n $translate.instant('ADMINISTRATION_DEVIATION_DAYS_OF_WEEK_SUNDAY')\r\n ];\r\n }];\r\n });\r\n\r\n undergroundWebApp.provider('fuelTypes', function() {\r\n this.$get = ['$translate', function($translate) {\r\n return [\r\n { id: 0, name: $translate.instant('CONTSANT_GAS') },\r\n { id: 1, name: $translate.instant('CONTSANT_DIESEL') },\r\n { id: 2, name: $translate.instant('CONTSANT_HYBRID') },\r\n { id: 3, name: $translate.instant('CONTSANT_ELECTRIC') },\r\n ];\r\n }];\r\n });\r\n\r\n undergroundWebApp.constant('mapTypes', {\r\n WGS84: 'WGS84',\r\n UTM33N: 'UTM33N'\r\n });\r\n\r\n const viewModes = {\r\n map: 'map',\r\n split: 'split',\r\n full: 'full'\r\n };\r\n\r\n undergroundWebApp.constant('viewModes', viewModes);\r\n\r\n const splitViewMode = { viewMode: viewModes.split },\r\n fullViewMode = { viewMode: viewModes.full };\r\n\r\n undergroundWebApp.constant('pageSpecificDisplays', {\r\n 'main': { viewMode: viewModes.map, isPriority: true },\r\n 'main.administration': splitViewMode,\r\n 'main.area': splitViewMode,\r\n 'main.areaDetails': splitViewMode,\r\n 'main.containerOverview': splitViewMode,\r\n 'main.containerOverviewV2': fullViewMode,\r\n 'main.locations': splitViewMode,\r\n 'main.locationDetails': splitViewMode,\r\n 'main.reports': splitViewMode,\r\n 'main.reports.info': splitViewMode,\r\n 'main.reports.containerlogs': splitViewMode,\r\n 'main.reports.municipalityLogs': splitViewMode,\r\n 'main.reports.errorStatus': splitViewMode,\r\n 'main.reports.batteryVoltage': splitViewMode,\r\n 'main.reports.genericReports': splitViewMode,\r\n 'main.sensorOverview': splitViewMode,\r\n });\r\n\r\n undergroundWebApp.constant('globalEvents', {\r\n accessTokenExpired: 'accessTokenExpired',\r\n layerVisibilityChanged: 'layerVisibilityChanged',\r\n overviewContainersChanged: 'overviewContainersChanged',\r\n redrawCluster: 'redrawCluster',\r\n refreshLocationContainers: 'refreshLocationContainers',\r\n zoomToLocation: 'zoomToLocation',\r\n $stateChangeStart: '$stateChangeStart',\r\n $stateChangeSuccess: '$stateChangeSuccess',\r\n });\r\n})();\r\n","angular.module('UndergroundWebApp').config(['$stateProvider', '$urlRouterProvider', 'appVersion',\r\n function ($stateProvider, $urlRouterProvider, appVersion) {\r\n 'use strict';\r\n\r\n const ieIE = !!window.document.documentMode;\r\n\r\n var appVersionString = appVersion.replace(/\\./g, '');\r\n\r\n var navbarView = {\r\n templateUrl: 'app/shared/navbar/navbar.html',\r\n // NavbarController and its dependencies are not compatible with Internet Explorer, \r\n // so it's disabled and a prompt is displayed for the user.\r\n controller: !ieIE ? 'NavbarController' : null\r\n };\r\n\r\n var footerView = {\r\n templateUrl: 'app/footer/footer-view.html',\r\n controller: 'FooterController'\r\n };\r\n\r\n $urlRouterProvider.otherwise('/main');\r\n\r\n $stateProvider\r\n .state('main', {\r\n url: '/main',\r\n views: {\r\n 'main': {\r\n templateUrl: 'app/main/main-view.html' + '?v=' + appVersionString,\r\n controller: 'MainController'\r\n },\r\n 'navbar': navbarView,\r\n 'footer': footerView,\r\n }\r\n })\r\n .state('main.containerDetails', {\r\n url: '/container/details?containerId&externalSystemId&showInactive/groupId',\r\n templateUrl: 'app/containerOverview/views/container-details-view.html' + '?v=' + appVersionString,\r\n controller: 'ContainerInfoController',\r\n params: {\r\n containerId: null,\r\n externalSystemId: null,\r\n startTab: null,\r\n keycardNumber: null,\r\n showInactive: 'false'\r\n }\r\n })\r\n .state('main.containerOverview', {\r\n url: '/container-overview?showInactive',\r\n templateUrl: 'app/containerOverview/views/container-overview-view.html' + '?v=' + appVersionString,\r\n controller: 'ContainerOverviewController',\r\n params: {\r\n showInactive: 'false',\r\n noCache: null\r\n }\r\n })\r\n .state('main.containerOverviewV2', {\r\n url: '/container-overview-v2',\r\n templateUrl: 'app/containerOverviewV2/views/container-overview-v2-view.html' + '?v=' + appVersionString,\r\n controller: 'ContainerOverviewV2Controller',\r\n params: {\r\n noCache: null\r\n }\r\n })\r\n .state('main.keycardsOverview', {\r\n url: '/keycards-overview',\r\n templateUrl: 'app/keycards/views/keycards-overview-view.html' + '?v=' + appVersionString,\r\n controller: 'KeycardsOverviewController',\r\n params: {\r\n noCache: null\r\n }\r\n })\r\n .state('main.administration', {\r\n url: '/administration',\r\n templateUrl: 'app/administration/administration-view.html' + '?v=' + appVersionString,\r\n controller: 'AdministrationController',\r\n redirectTo: 'main.administration.fractions',\r\n })\r\n .state('main.administration.fractions', {\r\n url: '/fractions',\r\n templateUrl: 'app/administration/administration-view.html' + '?v=' + appVersionString,\r\n controller: 'AdministrationController'\r\n })\r\n .state('main.administration.deviationAlert', {\r\n url: '/deviation-alert',\r\n templateUrl: 'app/administration/administration-view.html' + '?v=' + appVersionString,\r\n controller: 'AdministrationController'\r\n })\r\n .state('main.administration.userAdministration', {\r\n url: '/users',\r\n templateUrl: 'app/administration/administration-view.html' + '?v=' + appVersionString,\r\n controller: 'AdministrationController'\r\n })\r\n .state('main.administration.containerTypes', {\r\n url: '/container-types',\r\n templateUrl: 'app/administration/administration-view.html' + '?v=' + appVersionString,\r\n controller: 'AdministrationController'\r\n })\r\n .state('main.administration.vehicles', {\r\n url: '/vehicles',\r\n templateUrl: 'app/administration/administration-view.html' + '?v=' + appVersionString,\r\n controller: 'AdministrationController'\r\n })\r\n .state('main.administration.externalLinks', {\r\n url: '/external-links',\r\n templateUrl: 'app/administration/administration-view.html' + '?v=' + appVersionString,\r\n controller: 'AdministrationController'\r\n })\r\n .state('main.locations', {\r\n url: '/location?filter',\r\n params: {\r\n filter: null,\r\n },\r\n templateUrl: 'app/location/locations-view.html' + '?v=' + appVersionString,\r\n controller: 'LocationsController',\r\n reloadOnSearch: false,\r\n })\r\n .state('main.locationDetails', {\r\n url: '/location/:locationId',\r\n params: {\r\n locationId: null,\r\n locationsFilter: null,\r\n },\r\n templateUrl: 'app/location/location-details-view.html' + '?v=' + appVersionString,\r\n controller: 'LocationDetailsController',\r\n redirectTo: 'main.locationDetails.info',\r\n })\r\n .state('main.locationDetails.info', {\r\n url: '/info',\r\n templateUrl: 'app/location/location-details-view.html' + '?v=' + appVersionString,\r\n controller: 'LocationDetailsController'\r\n })\r\n .state('main.locationDetails.keycard', {\r\n url: '/keycard',\r\n templateUrl: 'app/location/location-details-view.html' + '?v=' + appVersionString,\r\n controller: 'LocationDetailsController'\r\n })\r\n .state('main.locationDetails.log', {\r\n url: '/log',\r\n templateUrl: 'app/location/location-details-view.html' + '?v=' + appVersionString,\r\n controller: 'LocationDetailsController'\r\n })\r\n .state('main.locationDetails.statistics', {\r\n url: '/statistics',\r\n templateUrl: 'app/location/location-details-view.html' + '?v=' + appVersionString,\r\n controller: 'LocationDetailsController'\r\n })\r\n .state('main.locationDetails.powerbi', {\r\n url: '/powerbi',\r\n templateUrl: 'app/location/location-details-view.html' + '?v=' + appVersionString,\r\n controller: 'LocationDetailsController'\r\n })\r\n .state('main.statistics', {\r\n url: '/statistics?deviceId',\r\n params: {\r\n deviceId: null\r\n },\r\n templateUrl: 'app/statistics/statistics-view.html' + '?v=' + appVersionString,\r\n controller: 'StatisticsController'\r\n })\r\n .state('main.reports', {\r\n url: '/reports',\r\n templateUrl: 'app/reports/reports-view.html' + '?v=' + appVersionString,\r\n controller: 'ReportsController',\r\n redirectTo: 'main.reports.containerlogs',\r\n })\r\n .state('main.reports.containerlogs', {\r\n url: '/logs',\r\n templateUrl: 'app/reports/reports-view.html' + '?v=' + appVersionString,\r\n controller: 'ReportsController'\r\n })\r\n .state('main.reports.municipalityLogs', {\r\n url: '/municipality-logs',\r\n templateUrl: 'app/reports/reports-view.html' + '?v=' + appVersionString,\r\n controller: 'ReportsController'\r\n })\r\n .state('main.reports.errorStatus', {\r\n url: '/error-status',\r\n templateUrl: 'app/reports/reports-view.html' + '?v=' + appVersionString,\r\n controller: 'ReportsController'\r\n })\r\n .state('main.reports.batteryVoltage', {\r\n url: '/battery-voltage',\r\n templateUrl: 'app/reports/reports-view.html' + '?v=' + appVersionString,\r\n controller: 'ReportsController'\r\n })\r\n .state('main.reports.genericReports', {\r\n url: '/generic-reports',\r\n templateUrl: 'app/reports/reports-view.html' + '?v=' + appVersionString,\r\n controller: 'ReportsController'\r\n })\r\n .state('main.sensorOverview', {\r\n url: '/sensor-overview',\r\n templateUrl: 'app/sensorOverview/sensor-overview.html' + '?v=' + appVersionString,\r\n controller: 'SensorOverviewController',\r\n })\r\n .state('main.area', {\r\n url: '/area',\r\n templateUrl: 'app/area/area-overview.html' + '?v=' + appVersionString,\r\n controller: 'AreaOverviewController',\r\n })\r\n .state('main.areaDetails', {\r\n url: '/area/:areaId',\r\n params: {\r\n areaId: null,\r\n },\r\n templateUrl: 'app/area/area-details-view.html' + '?v=' + appVersionString,\r\n controller: 'AreaDetailsController',\r\n })\r\n .state('main.areaDetails.edit', {\r\n url: '/edit',\r\n views: {\r\n '@main': {\r\n templateUrl: 'app/area/area-details-editor-view.html' + '?v=' + appVersionString,\r\n controller: 'areaDetailsEditorController',\r\n }\r\n },\r\n });\r\n }]);\r\n","(function() {\r\n angular.module('UndergroundWebApp').constant('appVersion', '21.10.1.786');\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('AdministrationController', AdministrationController);\r\n\r\n AdministrationController.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n 'authService',\r\n 'tabstripUtility',\r\n '$translate'\r\n ];\r\n\r\n function AdministrationController(\r\n $scope,\r\n $rootScope,\r\n $state,\r\n authService,\r\n tabstripUtility,\r\n $translate\r\n ) {\r\n var busyIndicatorCounter = 0;\r\n\r\n $scope.showBusyIndicator = showBusyIndicator;\r\n $scope.hideBusyIndicator = hideBusyIndicator;\r\n\r\n $scope.tabStripOptions = {\r\n animation: false,\r\n select: tabstripUtility.handleTabSelected,\r\n dataTextField: 'name',\r\n dataContentUrlField: 'contentUrl',\r\n dataSource: getTabs(),\r\n dataBound: (e) => e.sender.select(0),\r\n };\r\n\r\n initController();\r\n\r\n function initController() {\r\n $scope.$watch(() => $state.current.name, (state) => {\r\n tabstripUtility.changeTabByState($scope.administrationtab, state);\r\n });\r\n\r\n authService.getAccessRights().then(() => {\r\n $scope.administrationtab.dataSource.data(getTabs());\r\n tabstripUtility.changeTabByState($scope.administrationtab, $state.current.name);\r\n });\r\n };\r\n\r\n function showBusyIndicator() {\r\n if (busyIndicatorCounter === 0) {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'adminIndicator',\r\n destination: '.administration',\r\n message: $translate.instant('G_BUSY_INDICATOR'),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n }\r\n\r\n busyIndicatorCounter += 1;\r\n }\r\n\r\n function hideBusyIndicator() {\r\n busyIndicatorCounter -= 1;\r\n\r\n if (busyIndicatorCounter === 0) {\r\n $rootScope.$broadcast('hideBusyIndicator', 'adminIndicator');\r\n }\r\n }\r\n\r\n function getTabs() {\r\n const tabs = [];\r\n\r\n if ($scope.isAccessible('NewFraction', 'R')) {\r\n tabs.push({\r\n name: $translate.instant('ADMINISTRATION_FRACTION_FRACTIONS'),\r\n contentUrl: 'app/administration/fraction/fractions-view.html',\r\n state: 'main.administration.fractions',\r\n });\r\n }\r\n if ($scope.isAccessible('NewContainerType', 'R')) {\r\n tabs.push({\r\n name: $translate.instant('ADMINISTRATION_CONTAINERTYPES'),\r\n contentUrl: 'app/administration/containerType/container-types-view.html',\r\n state: 'main.administration.containerTypes',\r\n });\r\n }\r\n if ($scope.isAccessible('UserAdmin', 'R')) {\r\n tabs.push({\r\n name: $translate.instant('ADMINISTRATION_USERS'),\r\n contentUrl: 'app/administration/user/user-administration-view.html',\r\n state: 'main.administration.userAdministration',\r\n });\r\n }\r\n if ($scope.isAccessible('Vehicle', 'R')) {\r\n tabs.push({\r\n name: $translate.instant('ADMINISTRATION_VEHICLE_VEHICLES'),\r\n contentUrl: 'app/administration/vehicle/vehicles-view.html',\r\n state: 'main.administration.vehicles',\r\n });\r\n }\r\n if ($scope.isAccessible('ExternalLink', 'R')) {\r\n tabs.push({\r\n name: $translate.instant('ADMINISTRATION_EXTERNAL_LINKS'),\r\n contentUrl: 'app/administration/externalLinks/external-links-view.html',\r\n state: 'main.administration.externalLinks',\r\n });\r\n }\r\n if ($scope.isAccessible('NewFraction', 'R')) { //@todo ($scope.isAccessible('NewDeviationAlert', 'R')) {\r\n tabs.push({\r\n name: $translate.instant('ADMINISTRATION_DEVIATION_JOBS'),\r\n contentUrl: 'app/administration/deviationReport/deviation-report-view.html',\r\n state: 'main.administration.deviationAlert',\r\n });\r\n }\r\n\r\n return tabs;\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('AreaDetailsController', AreaDetailsController);\r\n\r\n AreaDetailsController.$inject = [\r\n '$rootScope',\r\n '$scope',\r\n '$stateParams',\r\n '$state',\r\n '$kWindow',\r\n 'globalEvents',\r\n 'mapService',\r\n 'sensorApiAreaService',\r\n 'filterStateService',\r\n '$translate'\r\n ];\r\n\r\n function AreaDetailsController(\r\n $rootScope,\r\n $scope,\r\n $stateParams,\r\n $state,\r\n $kWindow,\r\n globalEvents,\r\n mapService,\r\n sensorApiAreaService,\r\n filterStateService,\r\n $translate\r\n ) {\r\n $scope.attachVehicle = attachVehicle;\r\n $scope.detachVehicle = detachVehicle;\r\n\r\n $scope.areaVehiclesGridOptions = {\r\n dataSource: {\r\n data: [],\r\n sort: filterStateService.getSortFromQueryString({\r\n field: 'name',\r\n dir: 'asc'\r\n }),\r\n filter: filterStateService.getFilterFromQueryString(),\r\n },\r\n columns: [\r\n { field: 'name', title: $translate.instant('G_NAME') },\r\n { field: 'externalId', title: $translate.instant('AREA_DETAILS_CONTROLLER_HEADER_EXTERNAL_ID'), width: 100 },\r\n { field: 'brand', title: $translate.instant('AREA_DETAILS_CONTROLLER_HEADER_BRAND'), width: 100 },\r\n {\r\n field: 'edit',\r\n filterable: false,\r\n sortable: false,\r\n groupable: false,\r\n title: ' ',\r\n width: 60,\r\n template: ``,\r\n }\r\n ],\r\n sortable: true,\r\n filterable: true,\r\n noRecords: {\r\n template: $translate.instant('AREA_DETAILS_CONTROLLER_TABLE_NO_RECORDS'),\r\n },\r\n selectable: false,\r\n sort: filterStateService.storeGridSortInQueryString,\r\n filter: filterStateService.storeGridFilterInQueryString,\r\n };\r\n\r\n initController();\r\n\r\n function initController() {\r\n if ($stateParams.areaId === 'new') {\r\n $state.go('main.areaDetails.edit', { areaId: 'new' }, { location: 'replace' });\r\n return;\r\n }\r\n\r\n $scope.$on(globalEvents.$stateChangeStart, function (event, toState, params) {\r\n if (!toState.name.startsWith('main.areaDetails')) {\r\n mapService.getLayer('areaLayer').clearSelectedArea();\r\n }\r\n });\r\n\r\n loadArea();\r\n };\r\n\r\n //Event handlers\r\n function attachVehicle() {\r\n openAttachVehicleModal().then((result) => {\r\n if (!result) return;\r\n\r\n showBusyIndicator();\r\n sensorApiAreaService.attachVehicle($scope.area.id, result)\r\n .then(handleAreaLoaded)\r\n .finally(hideBusyIndicator);\r\n });\r\n }\r\n\r\n function detachVehicle(vehicle) {\r\n let confirmText = $translate.instant('AREA_DETAILS_CONTROLLER_DETACH_VEHICLE_CONFIRM');\r\n\r\n if (!confirm(`${confirmText}: ${vehicle.name}?`)) return;\r\n\r\n showBusyIndicator();\r\n sensorApiAreaService.detachVehicle($scope.area.id, vehicle.id)\r\n .then(handleAreaLoaded)\r\n .finally(hideBusyIndicator);\r\n }\r\n\r\n function openAttachVehicleModal() {\r\n return $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant('AREA_DETAILS_CONTROLLER_ASSIGN_CAR'),\r\n resizable: false,\r\n height: 150,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/area/attach-vehicle-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'AttachVehicleModalController',\r\n resolve: {\r\n currentVehicles: () => $scope.area.vehicles,\r\n },\r\n }).result;\r\n }\r\n\r\n function handleAreaLoaded(area) {\r\n $scope.area = area;\r\n mapService.getLayer('areaLayer').selectArea(area.id);\r\n $scope.areaVehiclesGrid.dataSource.data(area.vehicles);\r\n }\r\n\r\n //Data loading\r\n function loadArea() {\r\n showBusyIndicator();\r\n sensorApiAreaService.getArea($stateParams.areaId)\r\n .then(handleAreaLoaded)\r\n .finally(hideBusyIndicator);\r\n }\r\n\r\n //Private functions\r\n function showBusyIndicator() {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'areaDetailsIndicator',\r\n destination: '#area-details-view',\r\n message: $translate.instant('G_BUSY_INDICATOR'),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n },\r\n });\r\n }\r\n\r\n function hideBusyIndicator() {\r\n $rootScope.$broadcast('hideBusyIndicator', 'areaDetailsIndicator');\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('areaDetailsEditorController', areaDetailsEditorController);\r\n\r\n areaDetailsEditorController.$inject = [\r\n '$rootScope',\r\n '$scope',\r\n '$stateParams',\r\n 'sensorApiAreaService',\r\n '$state',\r\n 'globalEvents',\r\n 'mapService',\r\n 'mapUtility',\r\n '$translate'\r\n ];\r\n\r\n function areaDetailsEditorController(\r\n $rootScope,\r\n $scope,\r\n $stateParams,\r\n sensorApiAreaService,\r\n $state,\r\n globalEvents,\r\n mapService,\r\n mapUtility,\r\n $translate\r\n ) {\r\n $scope.save = save;\r\n $scope.cancel = cancel;\r\n $scope.handleStartDrawing = handleStartDrawing;\r\n $scope.handleEditArea = handleEditArea;\r\n $scope.handleCancelEditArea = handleCancelEditArea;\r\n $scope.deleteArea = deleteArea;\r\n\r\n $scope.handleNewAreaDrawing = handleNewAreaDrawing;\r\n\r\n $scope.area = null;\r\n $scope.title = '';\r\n $scope.isEdit = true;\r\n $scope.isAreaEditing = false;\r\n $scope.newAreaDrawn = false;\r\n $scope.newPoints = [];\r\n\r\n initController();\r\n\r\n function initController() {\r\n $scope.isEdit = $stateParams.areaId !== 'new';\r\n\r\n if ($scope.isEdit) {\r\n loadArea();\r\n } else {\r\n $scope.title = $translate.instant('AREA_DETAILS_EDITOR_CONTROLLER_ADD_AREA');\r\n }\r\n\r\n $scope.$on(globalEvents.$stateChangeStart, function (event, toState, params) {\r\n clearDrawing();\r\n if (!toState.name.startsWith('main.areaDetails')) {\r\n mapService.getLayer('areaLayer').clearSelectedArea();\r\n }\r\n });\r\n };\r\n\r\n function loadArea() {\r\n showBusyIndicator();\r\n sensorApiAreaService.getArea($stateParams.areaId)\r\n .then(handleAreaResponse)\r\n .finally(hideBusyIndicator);\r\n }\r\n\r\n function handleAreaResponse(area) {\r\n $scope.area = area;\r\n $scope.areaForm.$setPristine()\r\n $scope.title = area.description;\r\n\r\n mapService.ready().then(() => {\r\n mapService.getLayer('areaLayer').selectArea(area.id)\r\n });\r\n }\r\n\r\n function handleStartDrawing(event) {\r\n event.preventDefault();\r\n if (\r\n $scope.newPoints.length !== 0\r\n && !confirm($translate.instant('AREA_DETAILS_EDITOR_CONTROLLER_START_DRAWING_CONFIRM'))\r\n ) {\r\n return;\r\n }\r\n\r\n clearDrawing();\r\n $scope.isAreaEditing = true;\r\n mapService.getLayer('selectionLayer').startSelection()\r\n .then(onDrawingFinished);\r\n }\r\n\r\n function handleNewAreaDrawing(event) {\r\n event.preventDefault();\r\n if (\r\n $scope.newPoints.length !== 0\r\n && !confirm($translate.instant('AREA_DETAILS_EDITOR_CONTROLLER_START_DRAWING_CONFIRM'))\r\n ) {\r\n return;\r\n }\r\n\r\n clearDrawing();\r\n $scope.isAreaEditing = true;\r\n\r\n mapService.getLayer('areaLayer').hideArea($scope.area.id);\r\n mapService.getLayer('selectionLayer').startSelection()\r\n .then(onDrawingFinished);\r\n }\r\n\r\n function handleEditArea(event) {\r\n event.preventDefault();\r\n\r\n clearDrawing();\r\n $scope.isAreaEditing = true;\r\n\r\n let areaLayer = mapService.getLayer('areaLayer');\r\n areaLayer.clearSelectedArea();\r\n areaLayer.hideArea($scope.area.id);\r\n\r\n //Show current area on the edit layer\r\n mapService.getLayer('areaEditLayer')\r\n .startEditArea($scope.area);\r\n }\r\n\r\n function onDrawingFinished(points) {\r\n $scope.newPoints = points;\r\n $scope.isAreaEditing = false;\r\n $scope.newAreaDrawn = true;\r\n\r\n mapService.getLayer('areaLayer').hideArea($scope.area.id);\r\n mapService.getLayer('areaLayer').drawTemporaryArea(points);\r\n }\r\n\r\n function handleCancelEditArea(event) {\r\n event.preventDefault();\r\n\r\n clearDrawing();\r\n\r\n let areaLayer = mapService.getLayer('areaLayer');\r\n areaLayer.showArea($scope.area.id);\r\n areaLayer.selectArea($scope.area.id);\r\n }\r\n\r\n function clearDrawing() {\r\n $scope.isAreaEditing = false;\r\n $scope.newPoints = [];\r\n\r\n mapService.getLayer('areaEditLayer').finishEditArea();\r\n mapService.getLayer('selectionLayer').cancelSelection();\r\n mapService.getLayer('areaLayer').clearTemporaryArea();\r\n }\r\n\r\n function save(event) {\r\n event.preventDefault();\r\n if (!$scope.validator.validate()) {\r\n return;\r\n }\r\n\r\n if (!$scope.newAreaDrawn) {\r\n let points = mapService.getLayer('areaEditLayer')\r\n .finishEditArea();\r\n $scope.newPoints = points;\r\n }\r\n\r\n let request;\r\n const areaDto = getAreaDto();\r\n showBusyIndicator();\r\n if ($scope.isEdit) {\r\n request = sensorApiAreaService.updateArea(areaDto);\r\n } else {\r\n request = sensorApiAreaService.createArea(areaDto);\r\n }\r\n\r\n request.then((area) => {\r\n clearDrawing();\r\n mapService.getLayer('areaLayer').loadData();\r\n $state.go('main.areaDetails', { areaId: area.id });\r\n }).finally(hideBusyIndicator);\r\n }\r\n\r\n function cancel(event) {\r\n event.preventDefault();\r\n\r\n if ($scope.isEdit) {\r\n $state.go('main.areaDetails');\r\n } else {\r\n $state.go('main.area');\r\n }\r\n }\r\n\r\n function getAreaDto() {\r\n const updateModel = {\r\n id: $scope.area.id,\r\n description: $scope.area.description,\r\n isActive: $scope.area.isActive,\r\n };\r\n\r\n if ($scope.newPoints.length > 0) {\r\n updateModel.points = $scope.newPoints.map((point, index) => {\r\n const coords = mapUtility.convertToWGS84(point[0], point[1]);\r\n return {\r\n latitude: coords.lat,\r\n longitude: coords.lng,\r\n order: index,\r\n };\r\n });\r\n }\r\n\r\n return updateModel;\r\n }\r\n\r\n function deleteArea(event) {\r\n event.preventDefault();\r\n let confirm = $translate.instant('AREA_DETAILS_EDITOR_CONTROLLER_DELETE_AREA_CONFIRM');\r\n\r\n if (!confirm(`${confirm}: ${$scope.area.description}?`)) {\r\n return;\r\n }\r\n\r\n sensorApiAreaService.deleteArea($stateParams.areaId)\r\n .then(() => {\r\n mapService.getLayer('areaLayer').loadData();\r\n $state.go('main.area', null, { location: 'replace' });\r\n });\r\n }\r\n\r\n function showBusyIndicator() {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'areaDetailsIndicator',\r\n destination: '#area-details-editor-view',\r\n message: $translate.instant('G_BUSY_INDICATOR'),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n },\r\n });\r\n }\r\n\r\n function hideBusyIndicator() {\r\n $rootScope.$broadcast('hideBusyIndicator', 'areaDetailsIndicator');\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('AreaOverviewController', AreaOverviewController);\r\n\r\n AreaOverviewController.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n 'sensorApiAreaService',\r\n 'filterStateService',\r\n 'kendoGridUtility',\r\n '$state',\r\n '$translate'\r\n ];\r\n\r\n function AreaOverviewController(\r\n $scope,\r\n $rootScope,\r\n sensorApiAreaService,\r\n filterStateService,\r\n kendoGridUtility,\r\n $state,\r\n $translate\r\n ) {\r\n $scope.areaDetails = areaDetails;\r\n\r\n $scope.areaOverviewGridOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readAreas,\r\n },\r\n pageSize: 70,\r\n sort: filterStateService.getSortFromQueryString(),\r\n filter: filterStateService.getFilterFromQueryString(),\r\n },\r\n columns: [\r\n {\r\n field: 'description',\r\n title: $translate.instant('AREA_OVERVIEW_CONTROLLER_TABLE_HEADER_DESCRIPTION'),\r\n },\r\n {\r\n field: 'isActive',\r\n title: $translate.instant('AREA_OVERVIEW_CONTROLLER_TABLE_HEADER_ACTIVE'),\r\n template: kendoGridUtility.checkBoxColumnTemplate('isActive'),\r\n width: 100,\r\n },\r\n ],\r\n scrollable: {\r\n virtual: true\r\n },\r\n sortable: true,\r\n filterable: true,\r\n noRecords: true,\r\n selectable: true,\r\n sort: filterStateService.storeGridSortInQueryString,\r\n filter: filterStateService.storeGridFilterInQueryString,\r\n change: onRowClicked,\r\n };\r\n\r\n function readAreas(e) {\r\n showBusyIndicator();\r\n sensorApiAreaService.getAreas().then((result) => {\r\n e.success(result);\r\n }).finally(() => hideBusyIndicator());\r\n }\r\n\r\n function showBusyIndicator() {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'areaOverviewIndicator',\r\n destination: '#area-overview',\r\n message: $translate.instant('G_BUSY_INDICATOR'),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n }\r\n\r\n function hideBusyIndicator() {\r\n $rootScope.$broadcast('hideBusyIndicator', 'areaOverviewIndicator');\r\n }\r\n\r\n function areaDetails(area) {\r\n $state.go('main.area', {\r\n areaId: area.id,\r\n });\r\n }\r\n\r\n function onRowClicked() {\r\n var selectedRows = this.select();\r\n var dataItem = this.dataItem(selectedRows[0]);\r\n $state.go('main.areaDetails', { areaId: dataItem.id });\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('AttachVehicleModalController', AttachVehicleModalController);\r\n\r\n AttachVehicleModalController.$inject = [\r\n '$scope',\r\n '$windowInstance',\r\n 'vehicleService',\r\n 'currentVehicles',\r\n '$translate'\r\n ];\r\n\r\n function AttachVehicleModalController(\r\n $scope,\r\n $windowInstance,\r\n vehicleService,\r\n currentVehicles,\r\n $translate\r\n ) {\r\n $scope.vehiclesOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readVehicles\r\n }\r\n },\r\n dataTextField: 'name',\r\n dataValueField: 'id',\r\n optionLabel: $translate.instant('AREA_ATTACH_VEHICLE_MODAL_CONTROLLER_SELECT_CAR')\r\n };\r\n\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.close = close;\r\n\r\n function readVehicles(e) {\r\n vehicleService.getVehicles().then((vehicles) => {\r\n const availableVehicles = vehicles\r\n .filter(v => currentVehicles.every(cv => v.id !== cv.id));\r\n e.success(availableVehicles);\r\n }, () => {\r\n e.reject();\r\n });\r\n }\r\n\r\n function saveAndClose() {\r\n if ($scope.validator.validate()) {\r\n $windowInstance.close($scope.vehicle.id);\r\n }\r\n }\r\n\r\n function close($event) {\r\n $event.preventDefault();\r\n $windowInstance.close(false);\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ConnectSensorModalController', ConnectSensorModalController);\r\n\r\n ConnectSensorModalController.$inject = [\r\n '$q',\r\n '$rootScope',\r\n '$scope',\r\n '$windowInstance',\r\n 'externalSystemsService',\r\n 'deviceService',\r\n 'containerId',\r\n '$translate'\r\n ];\r\n\r\n function ConnectSensorModalController(\r\n $q,\r\n $rootScope,\r\n $scope,\r\n $windowInstance,\r\n externalSystemsService,\r\n deviceService,\r\n containerId,\r\n $translate\r\n ) {\r\n $scope.close = close;\r\n $scope.selectedDevices = [];\r\n $scope.filterChanged = filterChanged;\r\n $scope.filterText = '';\r\n\r\n initController();\r\n\r\n function initController() {\r\n setTimeout(()=>$rootScope.$broadcast('showBusyIndicator', {\r\n id: \"loadDevices\",\r\n destination: '#connect-sensor-modal',\r\n message: $translate.instant(\"G_BUSY_INDICATOR\"),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n }), 200);\r\n\r\n $scope.sensorsOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readDevices\r\n },\r\n serverFiltering: false\r\n },\r\n filter: 'contains',\r\n dataTextField: 'name',\r\n dataValueField: 'id'\r\n };\r\n\r\n readDevices();\r\n }\r\n\r\n function readDevices() {\r\n \r\n var requests = [\r\n externalSystemsService.getExternalSystems(),\r\n deviceService.getDevices()\r\n ];\r\n $q.all(requests)\r\n .then(data => {\r\n $scope.externalSystems = data[0];\r\n $scope.allDisconnectedDevices = _.filter(data[1], d => d.containerId === null);\r\n $scope.disconnectedDevices = $scope.allDisconnectedDevices;\r\n extDevices($scope.disconnectedDevices);\r\n })\r\n .catch((error) => {\r\n })\r\n .finally(()=>{\r\n $rootScope.$broadcast('hideBusyIndicator', 'loadDevices');\r\n });\r\n }\r\n function extDevices(devices) {\r\n _.forEach(devices, d => {\r\n var extSystem = _.find($scope.externalSystems, s => s.id.toLowerCase() === d.externalSystemId);\r\n d.name = d.externalId + (extSystem ? (' - ' + extSystem.name) : '');\r\n })\r\n }\r\n\r\n function close() {\r\n $windowInstance.close($scope.selectedDevices ? $scope.selectedDevices : null);\r\n }\r\n\r\n function filterChanged(){\r\n $scope.disconnectedDevices = _.filter($scope.allDisconnectedDevices, f => f.name.includes($scope.filterText));\r\n }\r\n }\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('DeviceDetailsModalController', DeviceDetailsModalController);\r\n\r\n DeviceDetailsModalController.$inject = [\r\n '$scope', \r\n '$q', \r\n '$windowInstance', \r\n 'formTypes', \r\n 'currentFormType', \r\n 'externalSystemsService', \r\n 'deviceService', \r\n 'guidService', \r\n 'containerId', \r\n 'device', \r\n 'updateCallbacks', \r\n 'deviceTypes', \r\n 'fallbackErrorMessageText',\r\n '$translate'\r\n ];\r\n\r\n function DeviceDetailsModalController(\r\n $scope, \r\n $q, \r\n $windowInstance, \r\n formTypes, \r\n currentFormType, \r\n externalSystemsService, \r\n deviceService, \r\n guidService, \r\n containerId, \r\n device, \r\n updateCallbacks, \r\n deviceTypes, \r\n fallbackErrorMessageText,\r\n $translate\r\n ) {\r\n\r\n $scope.externalSystem = '';\r\n $scope.externalId = '';\r\n $scope.serial = '';\r\n $scope.sensorHeight = '';\r\n $scope.fullHeight = '';\r\n $scope.customerKey = '';\r\n $scope.isPriority = false;\r\n\r\n $scope.save = save;\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.close = close;\r\n\r\n $scope.externalSystemValid = true;\r\n $scope.externalIdValid = true;\r\n $scope.deviceTypeValid = true;\r\n\r\n if (formTypes.edit === currentFormType && device) {\r\n $scope.isEdit = true;\r\n $scope.selectedExternalSystemId = device.externalSystemId;\r\n $scope.externalId = device.externalId;\r\n $scope.serial = device.serial;\r\n $scope.sensorHeight = device.sensorHeight;\r\n $scope.fullHeight = device.fullHeight;\r\n $scope.customerKey = device.customerKey;\r\n $scope.isActive = device.isActive;\r\n $scope.isPriority = device.isPriority;\r\n $scope.selectedDeviceType = _.find(deviceTypes, { id: device.deviceType });\r\n }\r\n\r\n initController();\r\n \r\n function initController() {\r\n externalSystemsService.getExternalSystems().then(systems => {\r\n $scope.externalSystems = systems;\r\n $scope.selectedExternalSystem = _.find($scope.externalSystems, s => s.id.toLowerCase() == $scope.selectedExternalSystemId)\r\n $scope.externalSystemOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readExternalSystems\r\n }\r\n },\r\n dataTextField: 'name',\r\n dataValueField: 'id',\r\n change: function (e) {\r\n $scope.selectedExternalSystemId = this.value();\r\n }\r\n };\r\n\r\n $scope.deviceTypeOptions = {\r\n dataSource: deviceTypes,\r\n dataTextField: 'name',\r\n dataValueField: 'id',\r\n optionLabel: {\r\n name: $translate.instant(\"DEVICE_DETAILS_CONTROLLER_CHOOSE_TYPE\"),\r\n id: '',\r\n },\r\n };\r\n }).catch(function (error) {\r\n $scope.extSystemsDdlServerErrorText = error.localizedMessage || fallbackErrorMessageText;\r\n });\r\n }\r\n\r\n function close() {\r\n $windowInstance.close();\r\n }\r\n\r\n function save() {\r\n $scope.externalSystemValid = !!$scope.selectedExternalSystem;\r\n $scope.externalIdValid = !!$scope.externalId;\r\n $scope.deviceTypeValid = !!$scope.selectedDeviceType &&\r\n $scope.selectedDeviceType.id !== '';\r\n\r\n var deferred = $q.defer();\r\n \r\n var deviceDto = {\r\n id: device ? device.id : guidService.emptyGuid(),\r\n externalId: $scope.externalId,\r\n serial: $scope.serial,\r\n customerKey: $scope.customerKey,\r\n externalSystem: $scope.selectedExternalSystem,\r\n externalSystemId: $scope.selectedExternalSystem.id,\r\n sensorHeight: $scope.sensorHeight,\r\n fullHeight: $scope.fullHeight,\r\n containerId: containerId,\r\n isActive: $scope.isActive,\r\n isPriority: $scope.isPriority,\r\n deviceType: $scope.selectedDeviceType.id,\r\n }\r\n\r\n if ($scope.externalSystemValid && $scope.externalIdValid && $scope.deviceTypeValid) {\r\n if ($scope.isEdit) {\r\n deviceService.updateDevice(deviceDto).then((updatedDevice) => {\r\n device = updatedDevice;\r\n if (updateCallbacks && updateCallbacks.updateDeviceToGrid) {\r\n var gridDevice = {...device};\r\n gridDevice.externalSystem = $scope.selectedExternalSystem.name;\r\n updateCallbacks.updateDeviceToGrid(gridDevice);\r\n }\r\n\r\n deferred.resolve();\r\n });\r\n } else {\r\n deviceService.addDevice(deviceDto).then((addedDevice) => {\r\n device = addedDevice;\r\n $scope.isEdit = formTypes.edit;\r\n if (updateCallbacks && updateCallbacks.addDeviceToGrid) {\r\n var gridDevice = {...device};\r\n gridDevice.externalSystem = $scope.selectedExternalSystem.name;\r\n updateCallbacks.addDeviceToGrid(gridDevice);\r\n }\r\n deferred.resolve();\r\n });\r\n }\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function saveAndClose() {\r\n save()\r\n .then(() => {\r\n close();\r\n }).catch(() => {\r\n alert($translate.instant(\"G_SAVE_FAILED\"));\r\n });\r\n }\r\n\r\n function readExternalSystems(e){\r\n e.success($scope.externalSystems ? $scope.externalSystems : []);\r\n }\r\n }\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('deviceService', deviceService);\r\n\r\n deviceService.$inject = ['$http'];\r\n\r\n function deviceService($http) {\r\n return {\r\n addDevice,\r\n getDevices,\r\n getDevice,\r\n updateDevice,\r\n deleteDevice,\r\n disconnectDevice,\r\n };\r\n\r\n function addDevice(device) {\r\n return $http.post('/api/device', device)\r\n .then(result => result.data);\r\n }\r\n\r\n function getDevices() {\r\n return $http.get('/api/device')\r\n .then(result => result.data);\r\n }\r\n\r\n function getDevice(externalSystemId, externalId) {\r\n return $http.get('/api/device/' + externalId + '/' + externalSystemId)\r\n .then(result => result.data);\r\n }\r\n\r\n function deleteDevice(deviceId) {\r\n return $http.delete('/api/device/' + deviceId)\r\n .then(result => result.data);\r\n }\r\n\r\n function updateDevice(device) {\r\n return $http.put('/api/device', device)\r\n .then(result => result.data);\r\n }\r\n\r\n function disconnectDevice(externalId, externalSystemId) {\r\n let disconnectDeviceDto = {\r\n externalId,\r\n externalSystemId,\r\n }\r\n\r\n return $http.post('api/device/disconnect', disconnectDeviceDto)\r\n .then(result => result.data);\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('FooterController', FooterController);\r\n\r\n FooterController.$inject = [\r\n '$timeout',\r\n '$scope',\r\n 'viewModes',\r\n 'displayService'\r\n ];\r\n\r\n function FooterController(\r\n $timeout,\r\n $scope,\r\n viewModes,\r\n displayService\r\n ) {\r\n $scope.viewModes = viewModes;\r\n $scope.currentViewMode;\r\n\r\n $scope.setViewMode = setViewMode;\r\n\r\n $timeout(250).then(initController);\r\n\r\n function initController() {\r\n displayService.getUserViewMode().then(currentViewMode => {\r\n $scope.currentViewMode = currentViewMode;\r\n });\r\n }\r\n\r\n function setViewMode(viewMode) {\r\n if ($scope.currentViewMode === viewMode) {\r\n $scope.currentViewMode = null;\r\n } else {\r\n $scope.currentViewMode = viewMode;\r\n }\r\n\r\n displayService.setUserViewMode($scope.currentViewMode);\r\n }\r\n }\r\n})();\r\n","(function () {\r\n\r\n angular.module('UndergroundWebApp').factory('geocodeAPIService', geocodeAPIService);\r\n\r\n geocodeAPIService.$inject = [\r\n '$q',\r\n '$http',\r\n 'serviceUrls'\r\n ];\r\n\r\n function geocodeAPIService(\r\n $q,\r\n $http,\r\n serviceUrls\r\n ) {\r\n return {\r\n getGeocodeSuggestions: getGeocodeSuggestions,\r\n getGeocodePosition: getGeocodePosition\r\n };\r\n\r\n function getGeocodeSuggestions(searchString, countryCode) {\r\n var deferred = $q.defer();\r\n\r\n var cCode = countryCode || null;\r\n if (typeof (cCode) !== \"undefined\") {\r\n searchString = searchString + \"&sourceCountry=\" + cCode;\r\n }\r\n\r\n var requestUrl = serviceUrls.geocodeingServiceUrl + 'suggest?text=' + searchString + '&f=pjson';\r\n\r\n $http.get(requestUrl).then(function (response) {\r\n deferred.resolve(response.data);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getGeocodePosition(magicKey) {\r\n var deferred = $q.defer();\r\n var requestUrl = serviceUrls.geocodeingServiceUrl + 'findAddressCandidates?&magicKey=' + magicKey + '&maxLocations=10&outFields=Match_addr,Place_addr,Type&f=pjson&outSR=32633';\r\n\r\n $http.get(requestUrl).then(function (response) {\r\n deferred.resolve(response.data);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('groupService', groupService);\r\n\r\n groupService.$inject = [\r\n '$http'\r\n ];\r\n\r\n function groupService(\r\n $http\r\n ) {\r\n return {\r\n addGroup,\r\n getGroups,\r\n getContainerIdsByGroupId,\r\n updateGroup\r\n };\r\n\r\n function addGroup(group) {\r\n return $http.post('api/groups', {\r\n name: group.name,\r\n info: group.info,\r\n userId: group.userId\r\n }).then(result => result.data);\r\n }\r\n\r\n function getGroups() {\r\n return $http.get('api/groups')\r\n .then(result => result.data);\r\n }\r\n\r\n function getContainerIdsByGroupId(groupId) {\r\n return $http.get('api/groups/containers/' + groupId)\r\n .then(result => result.data);\r\n }\r\n\r\n function updateGroup(group) {\r\n return $http.put('api/groups', group)\r\n .then(result => result.data);\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('LocationDetailsController', LocationDetailsController);\r\n\r\n LocationDetailsController.$inject = [\r\n '$rootScope',\r\n '$scope',\r\n '$state',\r\n '$stateParams',\r\n 'globalEvents',\r\n 'locationsService',\r\n 's2wClusterLayerFactory',\r\n 'mapService',\r\n 'mapUtility',\r\n 'serviceUrls',\r\n 'formTypes',\r\n '$kWindow',\r\n 'tabstripUtility',\r\n ];\r\n\r\n function LocationDetailsController(\r\n $rootScope,\r\n $scope,\r\n $state,\r\n $stateParams,\r\n globalEvents,\r\n locationsService,\r\n s2wClusterLayerFactory,\r\n mapService,\r\n mapUtility,\r\n serviceUrls,\r\n formTypes,\r\n $kWindow,\r\n tabstripUtility,\r\n ) {\r\n var locationId = $stateParams.locationId;\r\n\r\n $scope.openUpdateLocation = openUpdateLocation;\r\n $scope.openNewContainerModal = openNewContainerModal;\r\n $scope.location = null;\r\n $scope.locationsFilter = $stateParams.locationsFilter;\r\n $scope.hasContainers = hasContainers;\r\n $scope.isLocationDeletable = isLocationDeletable;\r\n $scope.deleteLocation = deleteLocation;\r\n\r\n $scope.tabStripOptions = {\r\n animation: false,\r\n select: tabstripUtility.handleTabSelected,\r\n dataTextField: 'name',\r\n dataContentUrlField: 'contentUrl',\r\n dataSource: [\r\n {\r\n name: 'Info',\r\n contentUrl: 'app/location/info/location-info-tab-view.html',\r\n state: 'main.locationDetails.info',\r\n },\r\n {\r\n name: 'Fyll (%)',\r\n contentUrl: 'app/location/statistics/location-statistics-tab-view.html',\r\n state: 'main.locationDetails.statistics',\r\n },\r\n {\r\n name: 'Logg',\r\n contentUrl: 'app/location/log/location-log-tab-view.html',\r\n state: 'main.locationDetails.log',\r\n },\r\n {\r\n name: 'Statistikk',\r\n contentUrl: 'app/location/powerbi/location-powerbi-tab-view.html',\r\n state: 'main.locationDetails.powerbi',\r\n },\r\n ],\r\n };\r\n\r\n initController();\r\n\r\n function initController() {\r\n $scope.$watch(() => $state.current.name, (state) => {\r\n tabstripUtility.changeTabByState($scope.locationDetailsTab, state);\r\n });\r\n\r\n loadLocation();\r\n };\r\n\r\n function setExternalLink() {\r\n // Reen externalId is at least 5 characters long while S2W group id is below 10000\r\n if ($scope.location.externalId && $scope.location.externalId.length > 4) {\r\n $scope.externalLink = serviceUrls.reenHubLocation + $scope.location.externalId;\r\n }\r\n }\r\n\r\n function loadLocation() {\r\n locationsService.getLocation(locationId).then(function (location) {\r\n $scope.location = location;\r\n zoomToLocation(location.latitude, location.longitude, 16);\r\n setExternalLink();\r\n });\r\n }\r\n\r\n function zoomToLocation(latitude, longitude, zoomLevel) {\r\n if (latitude && longitude) {\r\n s2wClusterLayerFactory.initialized().then(function () {\r\n var point = mapUtility.convertToUTM33N(latitude, longitude);\r\n mapService.zoomToLocation({\r\n x: point.X,\r\n y: point.Y\r\n }, zoomLevel);\r\n $rootScope.$broadcast(globalEvents.redrawCluster);\r\n }, function () {\r\n });\r\n }\r\n }\r\n\r\n function openUpdateLocation(location) {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: true,\r\n title: 'Hentested',\r\n resizable: true,\r\n height: 680,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/location/location-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'LocationDetailsModalController',\r\n resolve: {\r\n currentFormType: () => formTypes.edit,\r\n location: () => location\r\n }\r\n });\r\n\r\n windowInstance.result.then(function (location) {\r\n if (location) {\r\n $scope.location = location;\r\n }\r\n });\r\n }\r\n\r\n function openNewContainerModal() {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: 'Container',\r\n resizable: false,\r\n height: 600,\r\n width: 980,\r\n visible: false\r\n },\r\n templateUrl: 'app/containerOverviewV2/views/sensor-api-container-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'SensorApiContainerDetailsModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.add;\r\n },\r\n containerId: function () {\r\n return null;\r\n },\r\n updateCallbacks: function () {\r\n return null;\r\n },\r\n locationId: function () {\r\n return $scope.location && $scope.location.id;\r\n }\r\n }\r\n });\r\n\r\n windowInstance.result.then(function () {\r\n $rootScope.$broadcast(globalEvents.refreshLocationContainers);\r\n });\r\n }\r\n\r\n function hasContainers() {\r\n return $scope.location\r\n && $scope.location.containers\r\n && $scope.location.containers.length !== 0;\r\n }\r\n\r\n function isLocationDeletable() {\r\n return $scope.location\r\n && $scope.location.containers\r\n && $scope.location.containers.length === 0\r\n && $scope.location.externalWMPlaceNr === null;\r\n }\r\n\r\n function deleteLocation() {\r\n if (!$scope.location) {\r\n return;\r\n }\r\n\r\n if (!hasContainers() && $scope.location.externalWMPlaceNr !== null) {\r\n if (!confirm(\r\n 'Dette hentestedet ('\r\n + $scope.location.externalWMPlaceNr\r\n + ') er knyttet til eksternt kundesystem, er du sikker på at du ønsker å slette?')) {\r\n return;\r\n }\r\n } else if (!confirm('Er du sikker på at du vil slette dette hentestedet?')) {\r\n return;\r\n }\r\n\r\n locationsService.deleteLocation($scope.location.id).then(() =>\r\n $state.go('main.locations', { filter: $scope.locationsFilter })\r\n );\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('LocationDetailsModalController', LocationDetailsModalController);\r\n\r\n LocationDetailsModalController.$inject = [\r\n '$q',\r\n '$scope',\r\n '$rootScope',\r\n '$windowInstance',\r\n 'locationsService',\r\n 'formTypes',\r\n 'currentFormType',\r\n 'location',\r\n 'municipalityService',\r\n ];\r\n\r\n function LocationDetailsModalController(\r\n $q,\r\n $scope,\r\n $rootScope,\r\n $windowInstance,\r\n locationsService,\r\n formTypes,\r\n currentFormType,\r\n location,\r\n municipalityService,\r\n ) {\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.closeWindow = closeWindow;\r\n $scope.location = location != null ? { ...location } : {};\r\n\r\n $scope.municipalityCodeOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readMunicipalities,\r\n }\r\n },\r\n dataTextField: 'name',\r\n dataValueField: 'code',\r\n optionLabel: 'Velg kommune',\r\n noDataTemplate: 'Ingen treff',\r\n valuePrimitive: true,\r\n template: '#: name # (#: code #)',\r\n valueTemplate: '#: name # (#: code #)',\r\n };\r\n\r\n function readMunicipalities(e) {\r\n municipalityService.getMunicipalities().then(e.success.bind(e));\r\n }\r\n\r\n function saveAndClose(event) {\r\n event.preventDefault();\r\n\r\n if ($scope.validator.validate()) {\r\n save().then(function (result) {\r\n $windowInstance.close(result);\r\n });\r\n }\r\n }\r\n\r\n function closeWindow(event) {\r\n event.preventDefault();\r\n $windowInstance.close(false);\r\n }\r\n\r\n function getSaveFunction(currentFormType) {\r\n if (currentFormType === formTypes.edit) {\r\n return locationsService.updateLocation.bind(locationsService);\r\n }\r\n\r\n return locationsService.addLocation.bind(locationsService);\r\n }\r\n\r\n function save() {\r\n var deferred = $q.defer();\r\n\r\n $rootScope.$broadcast('showGlobalBusyIndicator', 'locationModalIndicator');\r\n\r\n var saveFunction = getSaveFunction(currentFormType);\r\n $scope.location.latitude.toString().replace(',', '.');\r\n $scope.location.latitude = Number($scope.location.latitude);\r\n $scope.location.longitude.toString().replace(',', '.');\r\n $scope.location.longitude = Number($scope.location.longitude);\r\n saveFunction($scope.location)\r\n .then(result => deferred.resolve(result),\r\n () => deferred.reject())\r\n .finally(() => $rootScope.$broadcast('hideBusyIndicator', 'locationModalIndicator'));\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();\r\n","angular.module('UndergroundWebApp').factory('locationLayerFactory', [\r\n '$q',\r\n '$rootScope',\r\n 'esriLoader',\r\n 'globalEvents',\r\n 'authService',\r\n 'locationsService',\r\n 'locationUtility',\r\n 'mapUtility',\r\n\r\n function (\r\n $q,\r\n $rootScope,\r\n esriLoader,\r\n globalEvents,\r\n authService,\r\n locationsService,\r\n locationUtility,\r\n mapUtility,\r\n ) {\r\n 'use strict';\r\n\r\n const readyDeferred = $q.defer();\r\n\r\n var locationLayerFactory = {\r\n createLayerOnAdd: true,\r\n\r\n ready: function () {\r\n return readyDeferred.promise;\r\n },\r\n };\r\n\r\n esriLoader.require([\r\n 'esri/geometry/Point',\r\n 'mcl/MarkerClusterLayer'\r\n ], function (Point, MarkerClusterLayer) {\r\n locationLayerFactory.createLayer = function () {\r\n let popupVisible = false;\r\n\r\n const locationLayer = new MarkerClusterLayer({ singleLocationIcon: '../img/location.png' });\r\n locationLayer.name = 'locationLayer';\r\n locationLayer.zIndex = 16;\r\n locationLayer.locationFilterIds = null;\r\n\r\n locationLayer.toggleVisibility = function () {\r\n locationLayer.visible = !locationLayer.visible;\r\n }\r\n\r\n locationLayer.onMouseMove = function (evt, mapView, hitResponse) {\r\n if (!hitResponse) {\r\n if (popupVisible) {\r\n $rootScope.$broadcast('hideSensorApiLocationPopup');\r\n popupVisible = false;\r\n }\r\n return;\r\n }\r\n\r\n var graphic = hitResponse.results[0].graphic;\r\n if (\r\n popupVisible\r\n || !graphic.layer\r\n || graphic.layer.name !== locationLayer.name\r\n || graphic.attributes.isCluster\r\n ) return;\r\n\r\n var graphicScreenPoint = getScreenPoint(graphic, mapView);\r\n\r\n $rootScope.$broadcast('showSensorApiLocationPopup', {\r\n left: graphicScreenPoint.x + mapView.position[0] + 20,\r\n top: graphicScreenPoint.y + mapView.position[1] + 10,\r\n ...graphic.attributes,\r\n });\r\n popupVisible = true;\r\n };\r\n\r\n locationLayer.onRightClick = function (evt, mapView, hitResponse) {\r\n if (!hitResponse) return;\r\n\r\n var graphic = hitResponse.results[hitResponse.results.length - 1].graphic;\r\n if (graphic.layer && graphic.layer.name !== locationLayer.name) return;\r\n var screenPoint = getScreenPoint(graphic, mapView);\r\n\r\n if (graphic.attributes && !graphic.attributes.isCluster && !(graphic.attributes.type === 'sublocation')) {\r\n $rootScope.$broadcast('showContextMenu', {\r\n item: { id: graphic.attributes.id },\r\n mapPosition: mapView.position,\r\n screenPoint: screenPoint,\r\n type: 'Location',\r\n });\r\n } else if (graphic.attributes && graphic.attributes.type === 'sublocation') {\r\n $rootScope.$broadcast('showContextMenu', {\r\n item: { id: graphic.attributes.id },\r\n mapPosition: mapView.position,\r\n screenPoint: screenPoint,\r\n focusPoint: mapView.toScreen(graphic.attributes.point),\r\n type: 'Location',\r\n });\r\n } else if (graphic.attributes && graphic.attributes.isCluster) {\r\n $rootScope.$broadcast('showContextMenu', {\r\n mapPosition: mapView.position,\r\n screenPoint: screenPoint,\r\n clusterPoints: graphic.attributes.points,\r\n type: 'Cluster'\r\n });\r\n }\r\n };\r\n\r\n $rootScope.$on(globalEvents.redrawCluster, function () {\r\n locationLayer.redrawData();\r\n });\r\n\r\n /**\r\n * Filters the displayed locations with the provided location IDs\r\n * @param locationIds The list of location IDs used to filter the locations by `location.id`. \r\n * Leave empty to reset the filtering.\r\n */\r\n locationLayer.setLocationFilter = function (locationIds) {\r\n locationLayer.locationFilterIds = locationIds;\r\n if (!locationIds) {\r\n locationLayer.updateData(locationLayer._locations);\r\n return;\r\n }\r\n\r\n if (locationIds.length === 0) {\r\n locationLayer.updateData([]);\r\n return;\r\n }\r\n\r\n var filteredLocations = locationLayer._locations.filter(function (location) {\r\n return locationIds.includes(location.id);\r\n });\r\n locationLayer.updateData(filteredLocations);\r\n }\r\n\r\n locationLayer.loadData = function () {\r\n authService.ready().then((authData) => {\r\n const getLocations = authData.isAuth\r\n ? locationsService.getLocations()\r\n : $q.resolve([]);\r\n\r\n return getLocations.then(function (locations) {\r\n const validLocations = locations\r\n .filter((location) =>\r\n locationUtility.isValidLocation(location.latitude, location.longitude))\r\n .map((location) => {\r\n const coords = mapUtility.convertToUTM33N(location.latitude, location.longitude);\r\n return {\r\n ...location,\r\n degLong: coords.X,\r\n degLat: coords.Y,\r\n }\r\n });\r\n\r\n locationLayer._locations = validLocations;\r\n if (locationLayer.locationFilterIds) {\r\n locationLayer.setLocationFilter(locationLayer.locationFilterIds);\r\n } else {\r\n locationLayer.updateData(validLocations);\r\n }\r\n });\r\n });\r\n }\r\n\r\n function getScreenPoint(graphic, mapView) {\r\n var point = new Point(graphic.geometry.x, graphic.geometry.y);\r\n return mapView.toScreen(point);\r\n }\r\n\r\n locationLayer.loadData();\r\n\r\n return locationLayer;\r\n };\r\n\r\n readyDeferred.resolve(locationLayerFactory);\r\n });\r\n\r\n return locationLayerFactory;\r\n }]);\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('LocationsController', LocationsController);\r\n\r\n LocationsController.$inject = [\r\n '$scope',\r\n '$state',\r\n '$stateParams',\r\n '$rootScope',\r\n '$kWindow',\r\n 'locationsService',\r\n 'formTypes',\r\n 'fractionsUtility',\r\n 'externalSystemUtility',\r\n 'mapService',\r\n 'selectDisplayedDevices',\r\n 'locationUtility',\r\n 'filterStateService',\r\n 's2wExternalSystemId',\r\n '$translate'\r\n ];\r\n\r\n function LocationsController(\r\n $scope,\r\n $state,\r\n $stateParams,\r\n $rootScope,\r\n $kWindow,\r\n locationsService,\r\n formTypes,\r\n fractionsUtility,\r\n externalSystemUtility,\r\n mapService,\r\n selectDisplayedDevices,\r\n locationUtility,\r\n filterStateService,\r\n s2wExternalSystemId,\r\n $translate,\r\n ) {\r\n var sortedLocations = [];\r\n var filteredLocations = [];\r\n\r\n const locationModalOptions = {\r\n modal: true,\r\n movable: true,\r\n title: $translate.instant('LOCATION_LOCATION'),\r\n resizable: true,\r\n height: 680,\r\n width: 400,\r\n visible: false\r\n };\r\n\r\n $scope.exportToExcel = exportToExcel;\r\n $scope.exportAsPdf = exportAsPdf;\r\n $scope.openNewLocation = openNewLocation;\r\n $scope.searchLocations = searchLocations;\r\n $scope.onRowClicked = onRowClicked;\r\n\r\n $scope.isExternalSystemFilterSelected = isExternalSystemFilterSelected;\r\n $scope.toggleFilterBox = toggleFilterBox;\r\n $scope.toggleExternalSystemFilter = toggleExternalSystemFilter;\r\n $scope.clearFilters = clearFilters;\r\n $scope.getExtSystemPlaceholderColor = externalSystemUtility.getExtSystemPlaceholderColor;\r\n\r\n $scope.filterData = {\r\n fractions: [],\r\n externalSystems: [],\r\n };\r\n\r\n $scope.filter = filterStateService.getStateFromQueryString('filter', getEmptyFilter());\r\n $scope.filterBoxVisible = !isAdvancedFiltersEmptpy();\r\n\r\n $scope.fractionsDropdownOptions = {\r\n settings: {\r\n externalIdProp: '',\r\n },\r\n events: {\r\n onSelectionChanged: handleFractionFilterChanged,\r\n },\r\n }\r\n\r\n $scope.dropdownTranslations = {\r\n checkAll: $translate.instant('G_CHECKALL'),\r\n uncheckAll: $translate.instant('G_UNCHECK_ALL'),\r\n buttonDefaultText: $translate.instant('LOCATION_DDL_TRANSLATION_BTN_DEFAULT_TEXT'),\r\n dynamicButtonTextSuffix: $translate.instant('G_DYNAMIC_BTN_TEXT_SUFFIX'),\r\n };\r\n\r\n $scope.locationOverviewGridOptions = {\r\n dataSource: new kendo.data.DataSource({\r\n transport: {\r\n read: readLocations\r\n },\r\n pageSize: 69,\r\n sort: { field: 'name', dir: 'asc' }\r\n }),\r\n excel: {\r\n allPages: true,\r\n fileName: 'Hentested.xlsx',\r\n },\r\n pdf: {\r\n allPages: true,\r\n fileName: 'Hentested.pdf',\r\n multiPage: true,\r\n repeatHeaders: true,\r\n paperSize: \"A4\",\r\n },\r\n columns: [\r\n {\r\n title: $translate.instant('LOCATION_TABLE_HEADER_LOCATION'),\r\n template: getLocationTemplate,\r\n attributes: {\r\n 'class': 'navigable'\r\n }\r\n },\r\n {\r\n title: $translate.instant('LOCATION_TABLE_HEADER_FRACTION'),\r\n template: getFractionsTemplate,\r\n width: '190px',\r\n attributes: {\r\n 'class': 'navigable'\r\n }\r\n }\r\n ],\r\n\r\n sortable: false,\r\n selectable: false,\r\n click: onRowClicked,\r\n\r\n scrollable: {\r\n virtual: true\r\n },\r\n excelExport: excelExport\r\n };\r\n\r\n initController();\r\n\r\n function initController() {\r\n $('#locationsGrid').on('click', 'td.navigable', onRowClicked);\r\n }\r\n\r\n function getLocationTemplate(location) {\r\n const detailText = getLocationAddress(location);\r\n\r\n return `
${kendo.htmlEncode(location.name)}
${kendo.htmlEncode(detailText)}
`;\r\n }\r\n\r\n function getLocationAddress(location) {\r\n const postalCodeAndCity = [location.postalCode, location.city].filter(Boolean).join(' ');\r\n const detailText = [location.address, postalCodeAndCity, location.municipalityCode].filter(Boolean).join(', ');\r\n\r\n return detailText;\r\n }\r\n\r\n function getFractionsTemplate(location) {\r\n const fractions = _.chain(location.containers)\r\n .map((container) => container.fraction)\r\n .groupBy((fraction) => fractionsUtility.getFractionIcon(fraction))\r\n .pickBy((_fractions, icon) => !!icon)\r\n .map((fractions, icon) => formatFraction(icon, fractions))\r\n .value()\r\n .sort()\r\n .join('');\r\n return `${fractions}`;\r\n }\r\n\r\n function formatFraction(fractionIcon, fractions) {\r\n var countHtml = '';\r\n if (fractions.length > 1) {\r\n countHtml = `${fractions.length}`;\r\n }\r\n\r\n var title = _.chain(fractions)\r\n .map((fraction) => fraction.name)\r\n .uniq()\r\n .value()\r\n .join(', ');\r\n return `
${countHtml}
`;\r\n }\r\n\r\n function openNewLocation() {\r\n var windowInstance = $kWindow.open({\r\n options: locationModalOptions,\r\n templateUrl: 'app/location/location-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'LocationDetailsModalController',\r\n resolve: {\r\n currentFormType: () => formTypes.add,\r\n location: () => null\r\n }\r\n });\r\n\r\n windowInstance.result.then(function () {\r\n $('#locationsGrid').getKendoGrid().dataSource.read();\r\n });\r\n }\r\n\r\n function readLocations(e) {\r\n showLocationLoadBusyIndicator();\r\n\r\n locationsService.getLocations(true, false, false, true).then(function (locations) {\r\n sortedLocations = locations.sort(function (a, b) {\r\n return a.address.toLowerCase() < b.address.toLowerCase() ? -1 : 1;\r\n });\r\n\r\n filteredLocations = [];\r\n updateFilters(sortedLocations);\r\n searchLocations();\r\n\r\n e.success(filteredLocations);\r\n }, function () {\r\n e.success([]);\r\n }).finally(() => $rootScope.$broadcast('hideBusyIndicator', 'locationIndicator'));\r\n }\r\n\r\n function searchLocations() {\r\n filterStateService.storeStateInQueryString('filter', getCurrentFilter());\r\n var newFilteredLocations = isFiltersEmpty()\r\n ? sortedLocations\r\n : sortedLocations.filter(isLocationMatching);\r\n\r\n if (!arrayEquals(filteredLocations, newFilteredLocations)) {\r\n filteredLocations = newFilteredLocations;\r\n $('#locationsGrid').getKendoGrid().dataSource.data(filteredLocations);\r\n\r\n if (!isFiltersEmpty()) {\r\n var deviceExternalIds = _.chain(filteredLocations)\r\n .flatMap((location) => location.containers)\r\n .map((container) => {\r\n let relatedDevice = undefined;\r\n const s2wDevice = container.devices.find((device) =>\r\n device.externalSystem\r\n && device.externalSystem.id.toUpperCase() === s2wExternalSystemId\r\n );\r\n\r\n if (s2wDevice) {\r\n relatedDevice = s2wDevice;\r\n } else {\r\n if (container.devices.length > 0) {\r\n relatedDevice = container.devices[0];\r\n }\r\n }\r\n\r\n return relatedDevice && relatedDevice.externalId;\r\n })\r\n .filter(externalId => !!externalId)\r\n .value();\r\n const locationIds = filteredLocations.map((location) => location.id);\r\n\r\n mapService.getLayer('s2wClusterLayer').setLocationFilter(deviceExternalIds);\r\n mapService.getLayer('locationLayer').setLocationFilter(locationIds);\r\n } else {\r\n mapService.getLayer('s2wClusterLayer').setLocationFilter();\r\n mapService.getLayer('locationLayer').setLocationFilter();\r\n }\r\n }\r\n }\r\n\r\n function isLocationMatching(location) {\r\n return searchTermMatching(location)\r\n && fractionMatching(location)\r\n && externalSystemMatching(location)\r\n && noPositionFilterMatching(location);\r\n }\r\n\r\n function searchTermMatching(location) {\r\n if (!$scope.filter.searchTerm) {\r\n return true;\r\n }\r\n\r\n return isStringMatching(location.name, $scope.filter.searchTerm)\r\n || isStringMatching(location.address, $scope.filter.searchTerm)\r\n || isStringMatching(location.postalCode, $scope.filter.searchTerm)\r\n || isStringMatching(location.city, $scope.filter.searchTerm)\r\n || isStringMatching(location.municipalityCode, $scope.filter.searchTerm)\r\n || location.containers\r\n && location.containers.some(container =>\r\n container.devices\r\n && selectDisplayedDevices(container.devices).some((device) =>\r\n isStringMatching(device.externalId, $scope.filter.searchTerm)\r\n )\r\n );\r\n }\r\n\r\n function fractionMatching(location) {\r\n if ($scope.filter.fractions.length === 0) {\r\n return true;\r\n }\r\n\r\n if (!location.containers || location.containers.length === 0) {\r\n return false;\r\n }\r\n\r\n return $scope.filter.fractions.some((filter) =>\r\n location.containers.some((container) =>\r\n container.fraction\r\n && filter.id === container.fraction.id\r\n )\r\n );\r\n }\r\n\r\n function externalSystemMatching(location) {\r\n if ($scope.filter.externalSystems.length === 0) {\r\n return true;\r\n }\r\n\r\n if (!location.containers || location.containers.length === 0) {\r\n return false;\r\n }\r\n\r\n return location.containers.some((container) =>\r\n container.devices\r\n && container.devices.filter((device) => device.isActive).length > 0\r\n && $scope.filter.externalSystems.every((exSys) =>\r\n container.devices\r\n .filter((device) => device.isActive)\r\n .some((device) => device.externalSystemId === exSys.id)\r\n )\r\n );\r\n }\r\n\r\n function isStringMatching(str, term) {\r\n if (str) {\r\n return str.toString().toLowerCase().indexOf(term.toLowerCase()) !== -1;\r\n }\r\n return false;\r\n }\r\n\r\n function noPositionFilterMatching(location) {\r\n return !$scope.filter.noPositionOnly\r\n || !locationUtility.isValidLocation(location.latitude, location.longitude);\r\n }\r\n\r\n function arrayEquals(array1, array2) {\r\n return array1 === array2\r\n || array1.length === array2.length\r\n && array1.every(function (value, index) { return value === array2[index]; });\r\n }\r\n\r\n function onRowClicked() {\r\n var row = $(this).closest('tr');\r\n var location = $('#locationsGrid').getKendoGrid().dataItem(row);\r\n $state.go('main.locationDetails.info', {\r\n locationId: location.id,\r\n locationsFilter: $stateParams.filter,\r\n });\r\n }\r\n\r\n function updateFilters(locations) {\r\n $scope.filterData.fractions = _.unionBy(\r\n getFractionsForFilter(locations),\r\n $scope.filter.fractions,\r\n 'id'\r\n );\r\n $scope.filterData.fractions = _.sortBy($scope.filterData.fractions, 'label');\r\n\r\n $scope.filterData.externalSystems = _.unionBy(\r\n getExternalSystemsForFilter(locations),\r\n $scope.filter.externalSystems,\r\n 'id'\r\n );\r\n }\r\n\r\n function toggleFilterBox() {\r\n $scope.filterBoxVisible = !$scope.filterBoxVisible;\r\n setTimeout(() => {\r\n $('#locationsGrid').getKendoGrid().resize();\r\n }, 0);\r\n }\r\n\r\n function toggleExternalSystemFilter(externalSystem) {\r\n var index = _.findIndex($scope.filter.externalSystems, { id: externalSystem.id });\r\n if (index === -1) {\r\n $scope.filter.externalSystems.push(externalSystem);\r\n } else {\r\n $scope.filter.externalSystems.splice(index, 1);\r\n }\r\n searchLocations();\r\n }\r\n\r\n function handleFractionFilterChanged() {\r\n try {\r\n searchLocations();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n function isExternalSystemFilterSelected(externalSystem) {\r\n return !!_.find($scope.filter.externalSystems, { id: externalSystem.id });\r\n }\r\n\r\n function clearFilters() {\r\n $scope.filter = getEmptyFilter();\r\n searchLocations();\r\n }\r\n\r\n //Private functions\r\n function extendLocation(location) {\r\n if (location && location.containers) {\r\n location.containers = location.containers.filter(c => c.status !== 99);\r\n }\r\n }\r\n\r\n function showLocationLoadBusyIndicator() {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'locationIndicator',\r\n destination: '#locations-view',\r\n message: $translate.instant(\"G_BUSY_INDICATOR\"),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n }\r\n\r\n //Private functions - Filtering\r\n function getFractionsForFilter(locations) {\r\n if (!locations) {\r\n return [];\r\n }\r\n\r\n return _.chain(locations)\r\n .flatMap((location) => location.containers)\r\n .uniqBy((container) => container.fraction && container.fraction.id)\r\n .map((container) => container.fraction)\r\n .filter((fraction) => !!fraction)\r\n .map((fraction) => ({\r\n label: fraction.name,\r\n id: fraction.id,\r\n }))\r\n .value();\r\n }\r\n\r\n function getExternalSystemsForFilter(locations) {\r\n if (!locations) {\r\n return [];\r\n }\r\n\r\n return _.chain(locations)\r\n .flatMap((location) => location.containers)\r\n .flatMap((container) => selectDisplayedDevices(container.devices)\r\n .map((device) => device.externalSystem)\r\n )\r\n .uniqBy((externalSystem) =>\r\n externalSystem\r\n && externalSystem.id\r\n )\r\n .filter((externalSystem) => externalSystem)\r\n .map((externalSystem) => ({\r\n id: externalSystem.id,\r\n name: externalSystem.name,\r\n img: externalSystemUtility.getExternalSystemIcon(externalSystem),\r\n selected: false,\r\n }))\r\n .value();\r\n }\r\n\r\n function getEmptyFilter() {\r\n return {\r\n fractions: [],\r\n externalSystems: [],\r\n searchTerm: '',\r\n noPositionOnly: false,\r\n };\r\n }\r\n\r\n function getCurrentFilter() {\r\n return isFiltersEmpty()\r\n ? null\r\n : $scope.filter;\r\n }\r\n\r\n function isFiltersEmpty() {\r\n return $scope.filter.searchTerm === ''\r\n && isAdvancedFiltersEmptpy();\r\n }\r\n\r\n function isAdvancedFiltersEmptpy(params) {\r\n return $scope.filter.fractions.length === 0\r\n && $scope.filter.externalSystems.length === 0\r\n && !$scope.filter.noPositionOnly;\r\n }\r\n\r\n function exportToExcel() {\r\n $scope.locationOverviewGrid.saveAsExcel();\r\n }\r\n\r\n function exportAsPdf() {\r\n $scope.locationOverviewGrid.saveAsPDF();\r\n }\r\n\r\n function excelExport(e) {\r\n var sheet = e.workbook.sheets[0];\r\n\r\n var headers = [{\r\n value: $translate.instant(\"LOCATION_TABLE_HEADER_LOCATION\"),\r\n bold: true\r\n }, {\r\n value: $translate.instant(\"LOCATION_TABLE_HEADER_ADDRESS\"),\r\n bold: true\r\n }, {\r\n value: $translate.instant(\"LOCATION_TABLE_HEADER_FRACTION\"),\r\n bold: true\r\n }];\r\n\r\n sheet.rows.splice(0, 0, { cells: headers, type: 'header' });\r\n\r\n for (var i = 1; i < sheet.rows.length; i++) {\r\n var row = sheet.rows[i];\r\n row.cells = [\r\n {\r\n value: e.data[i - 1].name\r\n },\r\n {\r\n value: getLocationAddress(e.data[i - 1])\r\n },\r\n {\r\n value: _.chain(e.data[i - 1].containers)\r\n .countBy((container) => container.fraction.name)\r\n .toPairs()\r\n .map(x => formatFractionAndCount(x[0], x[1]))\r\n .value()\r\n .sort()\r\n .join(', ')\r\n }\r\n ];\r\n }\r\n }\r\n\r\n function formatFractionAndCount(fraction, count) {\r\n if (count === 1) {\r\n return fraction;\r\n }\r\n\r\n return `${fraction} (${count})`;\r\n }\r\n }\r\n})();\r\n","(function () {\r\n angular.module('UndergroundWebApp').factory('locationsService', locationsService);\r\n\r\n locationsService.$inject = [\r\n '$q',\r\n '$http'\r\n ];\r\n\r\n function locationsService(\r\n $q,\r\n $http\r\n ) {\r\n let locationService = {\r\n addLocation,\r\n getLocations,\r\n getLocation,\r\n getLocationStatistics,\r\n getLocationStatisticsByContainer,\r\n updateLocation,\r\n deleteLocation,\r\n };\r\n\r\n return locationService;\r\n\r\n function addLocation(location) {\r\n return $http.post('/api/locations', location)\r\n .then(result => result.data);\r\n }\r\n\r\n function getLocations(includeContainers, includeDeletedLocations = false, includeDeletedContainers = false) {\r\n includeContainers = !!includeContainers;\r\n let deferred = $q.defer();\r\n\r\n $http.get('/api/locations?includeContainers=' + includeContainers).then(function (result) {\r\n if (result && result.data) {\r\n let activeLocations = result.data;\r\n if (!includeDeletedLocations) {\r\n activeLocations = result.data.filter(s => s.status !== 99);\r\n }\r\n\r\n if (!includeDeletedContainers) {\r\n activeLocations.forEach(l => l.containers = l.containers.filter(c => c.status !== 99));\r\n }\r\n\r\n deferred.resolve(activeLocations);\r\n }\r\n else {\r\n deferred.reject();\r\n }\r\n }).catch(function () {\r\n deferred.reject();\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getLocation(locationId) {\r\n return $http.get('/api/locations/' + locationId)\r\n .then(result => result.data);\r\n }\r\n\r\n function getLocationStatistics(locationId, from, to) {\r\n return $http.get('/api/locations/' + locationId + '/statistics?from=' + from + '&to=' + to)\r\n .then(result => result.data);\r\n }\r\n\r\n function getLocationStatisticsByContainer(locationId, from, to) {\r\n return $http.get('/api/locations/' + locationId + '/statistics/by-container?from=' + from + '&to=' + to)\r\n .then(result => result.data);\r\n }\r\n\r\n function updateLocation(location) {\r\n return $http.put('/api/locations', location)\r\n .then(result => result.data);\r\n }\r\n\r\n function deleteLocation(locationId) {\r\n let deferred = $q.defer();\r\n\r\n $http.delete('/api/locations/' + locationId).then(function (result) {\r\n deferred.resolve();\r\n }, function () {\r\n deferred.reject();\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('selectDisplayedDevices', selectDisplayedDevices);\r\n\r\n function selectDisplayedDevices() {\r\n return function(devices) {\r\n const activeDevices = devices\r\n .filter((device) => device.isActive)\r\n .sort((a, b) => a.id.localeCompare(b.id))\r\n .sort((a, b) => new Date(b.lastModified) - new Date(a.lastModified));\r\n\r\n const devicesToDisplay = [];\r\n const priorityDeviceIndex = activeDevices.findIndex((device) => device.isPriority);\r\n if (priorityDeviceIndex !== -1) {\r\n devicesToDisplay.push(activeDevices[priorityDeviceIndex]);\r\n activeDevices.splice(priorityDeviceIndex, 1);\r\n }\r\n\r\n devicesToDisplay.push(...activeDevices.slice(0, devicesToDisplay.length === 0 ? 2 : 1));\r\n\r\n return devicesToDisplay;\r\n }\r\n }\r\n})();\r\n","(function () {\r\n angular.module('UndergroundWebApp').controller('MainController', MainController);\r\n\r\n MainController.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n '$state',\r\n '$timeout',\r\n 'globalEvents',\r\n 'environmentConfig',\r\n 'mapService',\r\n 'baseLayerFactory',\r\n 'flyFotoLayerFactory',\r\n 's2wClusterLayerFactory',\r\n 'esriLoader',\r\n '$kWindow',\r\n 'locationLayerFactory',\r\n 'selectionLayerFactory',\r\n 'areaLayerFactory',\r\n 'areaEditLayerFactory'\r\n ];\r\n\r\n function MainController(\r\n $scope,\r\n $rootScope,\r\n $state,\r\n $timeout,\r\n globalEvents,\r\n environmentConfig,\r\n mapService,\r\n baseLayerFactory,\r\n flyFotoLayerFactory,\r\n s2wClusterLayerFactory,\r\n esriLoader,\r\n $kWindow,\r\n locationLayerFactory,\r\n selectionLayerFactory,\r\n areaLayerFactory,\r\n areaEditLayerFactory\r\n ) {\r\n const zoomToContainersExceptions = [\r\n 'main.containerDetails',\r\n 'main.areaDetails.edit',\r\n 'main.areaDetails',\r\n ];\r\n\r\n $scope.currentLocationId = null;\r\n $scope.mapLayers = [];\r\n $scope.menuOptions = {};\r\n $rootScope.showMenu = environmentConfig.showMenu || false;\r\n $scope.showNavbar = true;\r\n\r\n initController();\r\n\r\n function initController() {\r\n $rootScope.$on(globalEvents.zoomToLocation, handleZoomToLocation);\r\n\r\n handleInternetExplorer();\r\n }\r\n\r\n esriLoader.require([\r\n \"esri/geometry/Extent\",\r\n \"esri/geometry/SpatialReference\"\r\n ], function (Extent, SpatialReference) {\r\n $scope.$on('ContainerLayerLoaded', function () {\r\n if (zoomToContainersExceptions.includes($state.current.name)) return;\r\n\r\n var clusterLayer = mapService.getLayer('s2wClusterLayer');\r\n if (!clusterLayer) return;\r\n\r\n $timeout(250).then(function () {\r\n var clusterLayerGfx = clusterLayer.graphics.items;\r\n\r\n if (clusterLayerGfx.length > 0 && clusterLayerGfx[0].attributes) {\r\n var xmin = clusterLayerGfx[0].attributes.points[0].degLong;\r\n var ymin = clusterLayerGfx[0].attributes.points[0].degLat;\r\n var xmax = clusterLayerGfx[0].attributes.points[0].degLong;\r\n var ymax = clusterLayerGfx[0].attributes.points[0].degLat;\r\n\r\n for (var i = 0; i < clusterLayerGfx.length; i++) {\r\n if (clusterLayerGfx[i].attributes.points) {\r\n for (var j = 0; j < clusterLayerGfx[i].attributes.points.length; j++) {\r\n var currentPoint = clusterLayerGfx[i].attributes.points[j];\r\n\r\n if (currentPoint.degLong !== 0 && currentPoint.degLat !== 0) {\r\n xmax = currentPoint.degLong > xmax ? currentPoint.degLong : xmax;\r\n xmin = currentPoint.degLong < xmin ? currentPoint.degLong : xmin;\r\n ymax = currentPoint.degLat > ymax ? currentPoint.degLat : ymax;\r\n ymin = currentPoint.degLat < ymin ? currentPoint.degLat : ymin;\r\n }\r\n }\r\n }\r\n }\r\n\r\n var fullExt = new Extent(xmin, ymin, xmax, ymax, new SpatialReference(32632));\r\n mapService.zoomToExtent(fullExt);\r\n }\r\n });\r\n });\r\n });\r\n\r\n mapService.ready().then(function () {\r\n mapService.createMap('map');\r\n\r\n mapService.on('zoom', function () {\r\n if ($scope.menuOptions.close) {\r\n $scope.menuOptions.close();\r\n }\r\n });\r\n mapService.on('center', function () {\r\n if ($scope.menuOptions.close) {\r\n $scope.menuOptions.close();\r\n }\r\n });\r\n mapService.on('click', function () {\r\n if ($scope.menuOptions.close) {\r\n $scope.menuOptions.close();\r\n }\r\n });\r\n\r\n if (!mapService.isInitialized()) {\r\n mapService.addLayerFactory([\r\n baseLayerFactory,\r\n flyFotoLayerFactory,\r\n s2wClusterLayerFactory,\r\n locationLayerFactory,\r\n selectionLayerFactory,\r\n areaLayerFactory,\r\n areaEditLayerFactory,\r\n ]);\r\n } else if ($rootScope.initRequired) {\r\n mapService.reInitialize();\r\n $rootScope.initRequired = false;\r\n }\r\n });\r\n\r\n //Event handlers\r\n function handleZoomToLocation(_, location) {\r\n mapService.ready()\r\n .then(() => mapService.setInitialPosition(location, 17))\r\n .then(mapService.mapCreated)\r\n .then(() => mapService.zoomToLocation(location));\r\n }\r\n\r\n //Private functions\r\n function handleInternetExplorer() {\r\n if (window.document.documentMode) {\r\n $kWindow.open({\r\n options: {\r\n modal: true,\r\n draggable: false,\r\n title: 'Advarsel',\r\n resizable: false,\r\n height: 120,\r\n width: 400,\r\n visible: false,\r\n close: function (e) {\r\n e.preventDefault();\r\n },\r\n actions: []\r\n },\r\n templateUrl: 'app/main/internet-explorer-warning.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html'\r\n });\r\n }\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('areaEditLayerFactory', areaEditLayerFactory);\r\n\r\n areaEditLayerFactory.$inject = [\r\n '$q',\r\n 'esriLoader',\r\n '$timeout',\r\n 'areaUtility',\r\n 'mapTypes',\r\n 'mapUtility',\r\n 'selectionSettings',\r\n 'mapSettings',\r\n ];\r\n\r\n function areaEditLayerFactory(\r\n $q,\r\n esriLoader,\r\n $timeout,\r\n areaUtility,\r\n mapTypes,\r\n mapUtility,\r\n selectionSettings,\r\n mapSettings,\r\n ) {\r\n const layerFactory = this;\r\n const readyDeferred = $q.defer();\r\n\r\n layerFactory.createLayerOnAdd = true;\r\n layerFactory.ready = () => readyDeferred.promise;\r\n\r\n initAreaEditLayer().then(() => readyDeferred.resolve(layerFactory));\r\n return layerFactory;\r\n\r\n /**\r\n * Initialize area editing layer\r\n */\r\n function initAreaEditLayer() {\r\n return esriLoader.require([\r\n 'dojo/_base/declare',\r\n 'esri/Graphic',\r\n 'esri/layers/GraphicsLayer',\r\n 'esri/symbols/SimpleMarkerSymbol',\r\n 'esri/symbols/SimpleLineSymbol',\r\n 'esri/symbols/SimpleFillSymbol',\r\n 'esri/geometry/Circle',\r\n 'esri/geometry/Point',\r\n 'esri/geometry/Polyline',\r\n 'esri/geometry/Polygon',\r\n 'esri/geometry/SpatialReference'\r\n ],\r\n function (\r\n declare,\r\n Graphic,\r\n GraphicsLayer,\r\n SimpleMarkerSymbol,\r\n SimpleLineSymbol,\r\n SimpleFillSymbol,\r\n Circle,\r\n Point,\r\n Polyline,\r\n Polygon,\r\n SpatialReference,\r\n ) {\r\n var edgeSymbol = new SimpleMarkerSymbol(selectionSettings.edgeSymbol),\r\n edgeSelectedSymbol = new SimpleMarkerSymbol(selectionSettings.edgeSelectedSymbol);\r\n\r\n const areaLineStyle = {\r\n style: SimpleLineSymbol.STYLE_SOLID,\r\n color: [227, 139, 79, 0.8],\r\n width: 3\r\n }\r\n\r\n const areaFillColor = [255, 255, 127, 0.025];\r\n const areaFill = new SimpleFillSymbol(\r\n SimpleFillSymbol.STYLE_SOLID,\r\n new SimpleLineSymbol(areaLineStyle.style, areaLineStyle.color, areaLineStyle.width), areaFillColor\r\n );\r\n\r\n layerFactory.createLayer = () => new AreaEditLayer({});\r\n\r\n const AreaEditLayer = declare([GraphicsLayer], {\r\n constructor: function () {\r\n this.name = 'areaEditLayer';\r\n this.isEnabled = false;\r\n\r\n this.currentArea = null;\r\n this.selectedEdgeId = null;\r\n\r\n this.editAreaDeferred = null;\r\n this.points = [];\r\n },\r\n\r\n //Event handlers\r\n onClick: function (evt, mapView, hitResults) {\r\n if (!evt || !mapView) {\r\n return;\r\n }\r\n\r\n var mapPoint = mapView.toMap({\r\n x: evt.offsetX,\r\n y: evt.offsetY\r\n });\r\n\r\n if (hitResults && hitResults.results && hitResults.results.length > 0) {\r\n let edge = hitResults.results.find(r => r.graphic.attributes.type === 'areaEdge');\r\n if (edge && edge.graphic) {\r\n this.selectedEdgeId = edge.graphic.attributes.id;\r\n } else if (this.selectedEdgeId) {\r\n this.moveEdgeToPoint(mapPoint);\r\n }\r\n } else if (this.selectedEdgeId) {\r\n this.moveEdgeToPoint(mapPoint);\r\n }\r\n\r\n this.render();\r\n },\r\n\r\n //Private functions\r\n moveEdgeToPoint(mapPoint) {\r\n let relatedPointIdx = this.points.findIndex(p => p.id === this.selectedEdgeId),\r\n lastIdx = this.points.length - 1;\r\n\r\n //Check if related point is first or last: they need to be moved together\r\n if (relatedPointIdx === 0 || relatedPointIdx === lastIdx) {\r\n this.points[0].X = mapPoint.x;\r\n this.points[0].Y = mapPoint.y;\r\n this.points[lastIdx].X = mapPoint.x;\r\n this.points[lastIdx].Y = mapPoint.y;\r\n } else {\r\n this.points[relatedPointIdx].X = mapPoint.x;\r\n this.points[relatedPointIdx].Y = mapPoint.y;\r\n }\r\n\r\n this.selectedEdgeId = null;\r\n },\r\n\r\n createEdgeGraphic: function (mapPoint, isSelected) {\r\n let edgePoint = this.createEdgePoint(mapPoint, mapSettings.mapType);\r\n\r\n return new Graphic({\r\n geometry: edgePoint,\r\n symbol: isSelected ? edgeSelectedSymbol : edgeSymbol,\r\n attributes: {\r\n id: mapPoint.id,\r\n type: 'areaEdge'\r\n }\r\n });\r\n },\r\n\r\n createEdgePoint: function (mapPoint) {\r\n return new Point(\r\n mapPoint.X,\r\n mapPoint.Y,\r\n new SpatialReference({ wkid: mapSettings.wkid })\r\n );\r\n },\r\n\r\n getPointPolyline: function (point) {\r\n var polyline = new Polyline({\r\n hasZ: false,\r\n hasM: false,\r\n paths: this.getPolygonPaths(point),\r\n spatialReference: { wkid: mapSettings.wkid }\r\n });\r\n return polyline;\r\n },\r\n\r\n /**\r\n * render\r\n * clears the graphics and add rectangle\r\n * @param point map coordinates\r\n */\r\n render: function () {\r\n this.clearGraphics();\r\n\r\n if (this.isEnabled) {\r\n //Render polyline based on area points\r\n let pointCoordinates = this.points.map(point => [point.X, point.Y]);\r\n let areaPolygon = areaUtility.createPolygon(pointCoordinates, areaFill, { id: this.currentArea.id },\r\n Graphic, Point, Polygon, SpatialReference);\r\n this.add(areaPolygon);\r\n\r\n //Render edges based on points\r\n let edgeGraphics = [];\r\n for (var i = 0; i < this.points.length - 1; ++i) {\r\n let isSelected = this.selectedEdgeId === this.points[i].id,\r\n edgeGraphic = this.createEdgeGraphic(this.points[i], isSelected);\r\n\r\n edgeGraphics.push(edgeGraphic, isSelected);\r\n }\r\n\r\n this.addMany(edgeGraphics);\r\n }\r\n },\r\n\r\n /**\r\n * renderRectangle\r\n * @param point map coordinates\r\n * @returns Polyline the rectangle\r\n */\r\n renderAreaLines: function (point) {\r\n var polyline = new Polyline({\r\n hasZ: false,\r\n hasM: false,\r\n paths: this.getPolygonPaths(point),\r\n spatialReference: { wkid: mapSettings.wkid }\r\n });\r\n return polyline;\r\n },\r\n\r\n renderAreaPoints: function () { },\r\n\r\n startEditArea: function (area) {\r\n this.isEnabled = true;\r\n this.currentArea = area;\r\n\r\n //Get current points of area\r\n this.points = area.points\r\n .sort((a, b) => a.order - b.order)\r\n .map((point) => {\r\n const coords = mapUtility.convertToUTM33N(point.latitude, point.longitude);\r\n return { X: coords.X, Y: coords.Y, id: point.id };\r\n });\r\n\r\n this.render();\r\n },\r\n\r\n finishEditArea: function () {\r\n let editedAreaPoints = this.points.map(point => [point.X, point.Y]);\r\n\r\n this.clearGraphics();\r\n\r\n this.isEnabled = false;\r\n this.points = [];\r\n\r\n return editedAreaPoints;\r\n },\r\n\r\n /**\r\n * getSelectionResult\r\n * @returns null|polynom [ [x,y], ..., [m,n] ] \r\n */\r\n getSelectionResult: function () {\r\n if (this.points.length < 2) {\r\n return null;\r\n }\r\n\r\n return this.getPolygonPaths(this.points[this.points.length - 1]);\r\n },\r\n\r\n /**\r\n * getPolygonPaths\r\n */\r\n getPolygonPaths: function () {\r\n var path = [];\r\n for (var cv = 0; cv < this.points.length; cv++) {\r\n path.push([this.points[cv].x, this.points[cv].y]);\r\n }\r\n\r\n return path;\r\n },\r\n\r\n /**\r\n * clearGraphics\r\n * remove all graphics from the layer\r\n */\r\n clearGraphics: function () {\r\n this.removeAll();\r\n },\r\n });\r\n }\r\n );\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('areaLayerFactory', areaLayerFactory);\r\n\r\n areaLayerFactory.$inject = [\r\n '$q',\r\n '$rootScope',\r\n 'esriLoader',\r\n 'authService',\r\n 'sensorApiAreaService',\r\n 'mapService',\r\n 'areaUtility'\r\n ];\r\n\r\n function areaLayerFactory(\r\n $q,\r\n $rootScope,\r\n esriLoader,\r\n authService,\r\n sensorApiAreaService,\r\n mapService,\r\n areaUtility\r\n ) {\r\n var readyDeferred = $q.defer();\r\n\r\n var areaLayerFactory = {\r\n createLayerOnAdd: true,\r\n\r\n ready: () => readyDeferred.promise,\r\n };\r\n\r\n esriLoader.require([\r\n 'dojo/_base/declare',\r\n 'esri/Graphic',\r\n 'esri/geometry/Point',\r\n 'esri/layers/GraphicsLayer',\r\n 'esri/symbols/SimpleLineSymbol',\r\n 'esri/symbols/SimpleFillSymbol',\r\n 'esri/geometry/Polygon',\r\n 'esri/geometry/SpatialReference',\r\n 'esri/symbols/Font',\r\n 'esri/Color',\r\n 'esri/symbols/TextSymbol',\r\n ], function (\r\n declare,\r\n Graphic,\r\n Point,\r\n GraphicsLayer,\r\n SimpleLineSymbol,\r\n SimpleFillSymbol,\r\n Polygon,\r\n SpatialReference,\r\n Font,\r\n Color,\r\n TextSymbol,\r\n ) {\r\n const areaLineStyle = {\r\n style: SimpleLineSymbol.STYLE_SOLID,\r\n color: [227, 139, 79, 0.8],\r\n width: 3\r\n }\r\n\r\n const areaFillColor = [255, 255, 127, 0.025];\r\n\r\n const selectedLineStyle = {\r\n style: SimpleLineSymbol.STYLE_SOLID,\r\n color: [0, 0, 178, 0.8],\r\n width: 3\r\n }\r\n\r\n const selectionFillColor = [100, 100, 255, 0.3];\r\n\r\n const selectionFill = new SimpleFillSymbol(\r\n SimpleFillSymbol.STYLE_SOLID,\r\n new SimpleLineSymbol(selectedLineStyle.style, selectedLineStyle.color, selectedLineStyle.width), selectionFillColor\r\n );\r\n\r\n const areaFill = new SimpleFillSymbol(\r\n SimpleFillSymbol.STYLE_SOLID,\r\n new SimpleLineSymbol(areaLineStyle.style, areaLineStyle.color, areaLineStyle.width), areaFillColor\r\n );\r\n\r\n areaLayerFactory.createLayer = () => new AreaLayer({});\r\n\r\n const AreaLayer = declare([GraphicsLayer], {\r\n constructor: function () {\r\n this.name = 'areaLayer';\r\n this.zIndex = 2;\r\n this.textVisible = false;\r\n this.textZoomTreshold = 9;\r\n this.loadData();\r\n },\r\n\r\n toggleVisibility: function () {\r\n this.visible = !this.visible;\r\n },\r\n\r\n onZoomFinished: function (currentZoomLevel, mapView) {\r\n var newTextVisibility = currentZoomLevel >= this.textZoomTreshold;\r\n if (newTextVisibility === this.textVisible) return;\r\n\r\n this.textVisible = newTextVisibility;\r\n if (this.textVisible) {\r\n this._addTextGraphics();\r\n } else {\r\n this._removeTextGraphics();\r\n }\r\n },\r\n\r\n loadData: function () {\r\n return authService.getAccessRights().then(() => (\r\n $rootScope.isAccessible('Area', 'R')\r\n ? sensorApiAreaService.getAreas()\r\n : $q.resolve([])\r\n )).then((areas) => {\r\n const areaGraphics = areas.filter((area) => area\r\n && area.isActive\r\n && area.points\r\n && area.points.length > 2\r\n ).map((area) => areaUtility.createAreaPolygon(area, areaFill, Graphic, Point, Polygon, SpatialReference));\r\n\r\n this.removeAll();\r\n this.addMany(areaGraphics);\r\n if (this.textVisible) {\r\n this._addTextGraphics();\r\n }\r\n\r\n if (this.selectedAreaId) {\r\n this.selectArea(this.selectedAreaId);\r\n }\r\n });\r\n },\r\n\r\n drawTemporaryArea: function (points) {\r\n this.clearTemporaryArea();\r\n\r\n const polygonGraphic = areaUtility.createPolygon(\r\n points, selectionFill, { isTemporary: true }, Graphic, Point, Polygon, SpatialReference\r\n );\r\n this.add(polygonGraphic);\r\n },\r\n\r\n clearTemporaryArea: function () {\r\n const tempArea = this.graphics\r\n .find((graphic) => graphic.attributes.isTemporary);\r\n\r\n if (tempArea) {\r\n this.remove(tempArea);\r\n }\r\n },\r\n\r\n selectArea: function (id, zoomTo = true) {\r\n if (\r\n id === this.selectedAreaId\r\n && !!this.graphics.find(g => g.attributes.isSelected)\r\n ) {\r\n return;\r\n }\r\n\r\n this.clearSelectedArea();\r\n this.selectedAreaId = id;\r\n\r\n const graphicToSelect = this.graphics.find(a => a.attributes.id === id);\r\n if (!graphicToSelect) return;\r\n\r\n const graphic = this.graphics.find(g => g.attributes.id === id);\r\n\r\n const newGraphic = graphic.clone();\r\n newGraphic.symbol = selectionFill;\r\n newGraphic.attributes.isSelected = true;\r\n this.add(newGraphic);\r\n\r\n if (zoomTo) {\r\n mapService.zoomToGraphics(newGraphic, 1.6);\r\n }\r\n },\r\n\r\n clearSelectedArea: function () {\r\n if (!this.selectedAreaId) return;\r\n\r\n const graphic = this.graphics.find(g => g.attributes.isSelected);\r\n this.remove(graphic);\r\n this.selectedAreaId = null;\r\n },\r\n\r\n showArea: function (id) {\r\n if (this.hiddenGraphic) {\r\n this.add(this.hiddenGraphic);\r\n this.hiddenGraphic = null;\r\n }\r\n },\r\n\r\n hideArea: function (id) {\r\n const graphicToHide = this.graphics.find(a => a.attributes.id === id);\r\n if (!graphicToHide) return;\r\n\r\n this.hiddenGraphic = graphicToHide;\r\n this.remove(graphicToHide);\r\n },\r\n\r\n _removeTextGraphics: function () {\r\n const textGraphics = this.graphics\r\n .filter(g => g.attributes.type === 'text');\r\n\r\n this.removeMany(textGraphics);\r\n },\r\n\r\n _addTextGraphics: function () {\r\n const textGraphics = this.graphics\r\n .filter(g => g.attributes.type === 'area')\r\n .map(graphic => areaUtility.createAreaTextGraphic(graphic, Color, Font, TextSymbol, Point, Graphic));\r\n\r\n this.addMany(textGraphics);\r\n },\r\n });\r\n\r\n function isValidArea(graphic) {\r\n return graphic.attributes\r\n && graphic.attributes.type === 'area'\r\n && graphic.attributes.id\r\n && !graphic.attributes.isTemporary;\r\n }\r\n\r\n function isInPolynom(point, polygon) {\r\n var x = point.x, y = point.y;\r\n\r\n var inside = false;\r\n for (var i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\r\n var xi = polygon[i].x, yi = polygon[i].y;\r\n var xj = polygon[j].x, yj = polygon[j].y;\r\n\r\n var intersect = ((yi > y) !== (yj > y))\r\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\r\n if (intersect) inside = !inside;\r\n }\r\n\r\n return inside;\r\n } \r\n\r\n function getAreaHitResults(point, graphics) {\r\n return graphics.filter((graphic) => {\r\n if (!isValidArea(graphic)) return false;\r\n\r\n const polynom = graphic.geometry.rings[0]\r\n .map((r) => ({ x: r[0], y: r[1] }));\r\n\r\n return isInPolynom(point, polynom);\r\n });\r\n }\r\n\r\n readyDeferred.resolve(areaLayerFactory);\r\n });\r\n\r\n return areaLayerFactory;\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('areaUtility', areaUtility);\r\n\r\n areaUtility.$inject = [\r\n 'mapSettings',\r\n 'mapUtility'\r\n ];\r\n\r\n function areaUtility(\r\n mapSettings,\r\n mapUtility\r\n ) {\r\n return {\r\n createAreaPolygon,\r\n createPolygon,\r\n createAreaTextGraphic\r\n };\r\n\r\n function createAreaPolygon(area, fillSymbol, Graphic, Point, Polygon, SpatialReference) {\r\n let points = area.points\r\n .sort((a, b) => a.order - b.order)\r\n .map((point) => {\r\n const coords = mapUtility.convertToUTM33N(point.latitude, point.longitude);\r\n return [coords.X, coords.Y];\r\n });\r\n\r\n const areaGraphic = createPolygon(points, fillSymbol, { id: area.id }, Graphic, Point, Polygon, SpatialReference);\r\n areaGraphic.name = area.description;\r\n return areaGraphic;\r\n }\r\n\r\n function createPolygon(points, fillSymbol, additionalAttributes, Graphic, Point, Polygon, SpatialReference) {\r\n const pathPoints = points\r\n .map((point) => new Point(point[0], point[1], new SpatialReference({ wkid: mapSettings.wkid })));\r\n\r\n const polygon = new Polygon(new SpatialReference({ wkid: mapSettings.wkid }));\r\n polygon.addRing(pathPoints);\r\n\r\n const attributes = {\r\n type: 'area',\r\n ...additionalAttributes,\r\n };\r\n\r\n return new Graphic(polygon, fillSymbol, attributes);\r\n }\r\n\r\n function createAreaTextGraphic(graphic, Color, Font, TextSymbol, Point, Graphic) {\r\n var centroid = graphic.geometry.centroid;\r\n\r\n //draw text\r\n var font = new Font(\"12px\", Font.STYLE_NORMAL, Font.VARIANT_NORMAL, Font.WEIGHT_BOLDER);\r\n var text = new TextSymbol(graphic.name, font, new Color([0, 0, 0]));\r\n\r\n //fix centroid sign\r\n var firstPoint = graphic.geometry.rings[0][0];\r\n var x = (Math.sign(firstPoint[0]) === Math.sign(centroid.x)) ? centroid.x : -centroid.x;\r\n var y = (Math.sign(firstPoint[1]) === Math.sign(centroid.y)) ? centroid.y : -centroid.y;\r\n\r\n var point = new Point(x, y);\r\n\r\n return new Graphic({\r\n geometry: point,\r\n symbol: text,\r\n attributes: { type: 'text' },\r\n });\r\n }\r\n }\r\n})();\r\n","angular.module('UndergroundWebApp').factory('flyFotoLayerFactory', ['$q', 'esriLoader', function ($q, esriLoader) {\r\n 'ues strict';\r\n\r\n var readyDeferred = null;\r\n\r\n /**\r\n * Initializes the vessel layer ready function.\r\n */\r\n var flyFotoLayer = {\r\n createLayerOnAdd: true,\r\n\r\n ready: function () {\r\n if (readyDeferred === null) {\r\n readyDeferred = $q.defer();\r\n }\r\n\r\n return readyDeferred.promise;\r\n }\r\n }\r\n\r\n esriLoader.require([\r\n 'esri/layers/TileLayer'\r\n ], function (TileLayer) {\r\n if (readyDeferred === null) {\r\n readyDeferred = $q.defer();\r\n }\r\n\r\n flyFotoLayer.createLayer = function () {\r\n var layer = new TileLayer({\r\n url: 'https://services.geodataonline.no/arcgis/rest/services/Geocache_UTM33_WGS84/GeocacheBilder/MapServer',\r\n visible: false\r\n });\r\n layer.name = 'FlyFotoLayer';\r\n layer.zIndex = 2;\r\n\r\n //Define additional functions\r\n layer.toggleVisibility = function () {\r\n layer.visible = !layer.visible;\r\n }\r\n\r\n return layer;\r\n }\r\n\r\n readyDeferred.resolve(flyFotoLayer);\r\n });\r\n\r\n return flyFotoLayer;\r\n}]);\r\n","angular.module('UndergroundWebApp').factory('baseLayerFactory', ['$q', '$rootScope', 'esriLoader', function ($q, $rootScope, esriLoader) {\r\n 'use strict';\r\n\r\n var readyDeferred = null;\r\n\r\n /**\r\n * Initializes the vessel layer ready function.\r\n */\r\n var baseLayerFactory = {\r\n createLayerOnAdd: true,\r\n\r\n ready: function () {\r\n if (readyDeferred === null) {\r\n readyDeferred = $q.defer();\r\n }\r\n\r\n return readyDeferred.promise;\r\n }\r\n }\r\n\r\n esriLoader.require([\r\n 'esri/layers/TileLayer',\r\n 'esri/geometry/ScreenPoint'\r\n ], function (TileLayer, ScreenPoint) {\r\n if (readyDeferred === null) {\r\n readyDeferred = $q.defer();\r\n }\r\n\r\n baseLayerFactory.createLayer = function () {\r\n var layer = new TileLayer({\r\n url: 'https://services.geodataonline.no/arcgis/rest/services/Geocache_UTM33_WGS84/GeocacheBasis/MapServer'\r\n });\r\n layer.name = 'MapLayer';\r\n layer.zIndex = 1;\r\n\r\n //Define additional functions\r\n layer.toggleVisibility = function () {\r\n layer.visible = !layer.visible;\r\n }\r\n\r\n layer.onRightClick = function (evt, mapView, hitResponse) {\r\n if (!hitResponse) {\r\n layer.showContextMenu(evt, mapView);\r\n } else {\r\n var ignoreHitResults = true;\r\n for (var i = 0; i < hitResponse.results.length; ++i) {\r\n var currentResult = hitResponse.results[i];\r\n if (!currentResult || !currentResult.graphic || !currentResult.graphic.attributes\r\n || currentResult.graphic.attributes.type !== 'area') {\r\n ignoreHitResults = false;\r\n }\r\n }\r\n\r\n if (ignoreHitResults) {\r\n layer.showContextMenu(evt, mapView);\r\n }\r\n }\r\n }\r\n\r\n layer.showContextMenu = function (evt, mapView) {\r\n $rootScope.$broadcast('showContextMenu', {\r\n mapPosition: mapView.position,\r\n screenPoint: new ScreenPoint(evt.offsetX, evt.offsetY),\r\n type: 'Map'\r\n });\r\n }\r\n\r\n return layer;\r\n }\r\n\r\n readyDeferred.resolve(baseLayerFactory);\r\n });\r\n\r\n return baseLayerFactory;\r\n}]);\r\n","(function () {\r\n angular.module('UndergroundWebApp').factory('mapService', mapService);\r\n\r\n mapService.$inject = [\r\n '$q',\r\n 'esriLoader',\r\n '$timeout',\r\n '$rootScope',\r\n 'globalEvents'\r\n ];\r\n\r\n function mapService(\r\n $q,\r\n esriLoader,\r\n $timeout,\r\n $rootScope,\r\n globalEvents\r\n ) {\r\n const persistenceRootKey = 'MAP_LAYER_VISIBILITY_LIST';\r\n\r\n const defaultVisibilityList = {\r\n MapLayer: true,\r\n FlyFotoLayer: false,\r\n s2wClusterLayer: true,\r\n locationLayer: false,\r\n areaLayer: false,\r\n };\r\n\r\n let readyDeferred = null,\r\n mapCreatedDeferred = null;\r\n let mapService = {\r\n _factories: [],\r\n _services: [],\r\n _mapView: null,\r\n _targetElement: null,\r\n _initialPosition: null,\r\n _initialZoom: null,\r\n\r\n ctxMenu: null,\r\n\r\n setInitialPosition: function (position, zoom) {\r\n mapService._initialPosition = position;\r\n mapService._initialZoom = zoom;\r\n },\r\n\r\n mapCreated: function () {\r\n if (mapCreatedDeferred === null) {\r\n mapCreatedDeferred = $q.defer();\r\n }\r\n\r\n return mapCreatedDeferred.promise;\r\n },\r\n\r\n ready: function () {\r\n if (readyDeferred === null) {\r\n readyDeferred = $q.defer();\r\n }\r\n\r\n return readyDeferred.promise;\r\n }\r\n };\r\n\r\n esriLoader.require([\r\n 'esri/Map',\r\n 'esri/views/MapView',\r\n 'esri/geometry/ScreenPoint',\r\n 'dojo/on',\r\n 'dijit/Menu'\r\n ], function (Map, MapView, ScreenPoint, on, Menu) {\r\n if (!readyDeferred) {\r\n readyDeferred = $q.defer();\r\n }\r\n\r\n var callbacks = {\r\n 'mousemove': [],\r\n 'click': [],\r\n 'rightclick': [],\r\n 'double-click': [],\r\n 'center': [],\r\n 'mapview-create': [],\r\n 'zoom': [],\r\n 'zoomFinished': [],\r\n };\r\n\r\n function executeCallbacks(eventName, evt, mapView, hitResponse) {\r\n if (callbacks[eventName]) {\r\n for (var i = 0; i < callbacks[eventName].length; ++i) {\r\n const stopPropagation = callbacks[eventName][i](evt, mapView, hitResponse);\r\n if (stopPropagation) break;\r\n }\r\n }\r\n }\r\n\r\n function getScreenPointFromMenuPosition(mapView, box) {\r\n var x = box.x, y = box.y;\r\n switch (box.corner) {\r\n case \"TR\":\r\n x += box.w;\r\n break;\r\n case \"BL\":\r\n y += box.h;\r\n break;\r\n case \"BR\":\r\n x += box.w;\r\n y += box.h;\r\n break;\r\n }\r\n\r\n return new ScreenPoint(x - mapView.position[0], y - mapView.position[1]);\r\n }\r\n\r\n //Internal event handler functions\r\n function onMouseMove(evt) {\r\n //Dispatch only if not dragging\r\n //TODO: don't dispatch if not zooming\r\n if (evt.buttons !== 0) return;\r\n var screenPoint = new ScreenPoint(evt.offsetX, evt.offsetY);\r\n\r\n executeCallbacksWithHitResponse('mousemove', screenPoint);\r\n }\r\n\r\n function onClick(evt) {\r\n if (evt && evt.screenPoint) {\r\n executeCallbacksWithHitResponse('click', evt.screenPoint);\r\n }\r\n }\r\n\r\n function onRightClick(box) {\r\n var screenPoint = getScreenPointFromMenuPosition(mapService._mapView, box);\r\n executeCallbacksWithHitResponse('rightclick', screenPoint);\r\n }\r\n\r\n function executeCallbacksWithHitResponse(eventType, screenPoint) {\r\n var hitTestPromise = mapService._mapView.hitTest(screenPoint);\r\n if (!hitTestPromise) return;\r\n\r\n var evt = {\r\n offsetX: screenPoint.x,\r\n offsetY: screenPoint.y\r\n };\r\n\r\n hitTestPromise.then(function (response) {\r\n if (response.results && response.results.length > 0) {\r\n //TODO: get the graphic with the highest z coordinate\r\n executeCallbacks(eventType, evt, mapService._mapView, response);\r\n } else {\r\n executeCallbacks(eventType, evt, mapService._mapView);\r\n }\r\n });\r\n\r\n }\r\n\r\n function onDoubleClick(evt) {\r\n executeCallbacks('double-click', evt, mapService._mapView);\r\n }\r\n\r\n function onZoom(evt) {\r\n executeCallbacks('zoom', evt, mapService._mapView);\r\n\r\n if (evt % 1 === 0) {\r\n executeCallbacks('zoomFinished', evt, mapService._mapView);\r\n }\r\n }\r\n\r\n function onCenter(evt) {\r\n executeCallbacks('center', evt);\r\n }\r\n\r\n let map = new Map();\r\n mapService.layers = [];\r\n\r\n mapService.createMap = function (mapId) {\r\n if (mapCreatedDeferred === null) {\r\n mapCreatedDeferred = $q.defer();\r\n }\r\n\r\n if (mapService._targetElement && mapService._mapView) {\r\n $('#' + mapId).replaceWith(mapService._targetElement);\r\n\r\n return;\r\n }\r\n\r\n if (!mapService._initialPosition || !mapService._initialZoom) {\r\n mapService.setInitialPosition([15, 63], 4);\r\n }\r\n\r\n mapService._targetElement = $('#' + mapId);\r\n mapService._mapView = new MapView({\r\n container: mapId,\r\n map: map,\r\n zoom: mapService._initialZoom,\r\n center: mapService._initialPosition,\r\n constraints: {\r\n rotationEnabled: false\r\n }\r\n });\r\n\r\n mapService._mapView.then(function () {\r\n mapCreatedDeferred.resolve();\r\n });\r\n\r\n //Set mapView for services\r\n for (var i = 0; i < mapService._services.length; ++i) {\r\n mapService._services[i].ready().then(function (service) {\r\n service.mapView = mapService._mapView;\r\n });\r\n }\r\n\r\n on(mapService._mapView.container, 'mousemove', onMouseMove);\r\n on(mapService._mapView, 'double-click', onDoubleClick);\r\n\r\n mapService._mapView.on('click', onClick);\r\n\r\n mapService._mapView.watch('center', onCenter);\r\n mapService._mapView.watch('zoom', onZoom);\r\n\r\n mapService.ctxMenu = new Menu({ onOpen: onRightClick });\r\n mapService.ctxMenu.startup();\r\n mapService.ctxMenu.bindDomNode(mapService._mapView.container);\r\n\r\n executeCallbacks('mapview-create', null, mapService._mapView);\r\n };\r\n\r\n mapService.isInitialized = function () {\r\n return mapService.layers.length !== 0 || mapService._services.length !== 0;\r\n };\r\n\r\n mapService.reInitialize = function () {\r\n mapService.layers = [];\r\n map.layers.removeAll();\r\n\r\n for (var i = 0; i < mapService._factories.length; ++i) {\r\n map.layers.add(mapService._factories[i].createLayer());\r\n }\r\n }\r\n\r\n mapService.addLayerFactory = function (factories) {\r\n const createLayersPromises = factories.map((factory) => factory.ready().then(function (layerFactory) {\r\n if (layerFactory.createLayerOnAdd) {\r\n var layer = layerFactory.createLayer();\r\n\r\n if (layer.onMouseMove) {\r\n callbacks.mousemove.push(layer.onMouseMove.bind(layer));\r\n }\r\n\r\n if (layer.onRightClick) {\r\n callbacks.rightclick.push(layer.onRightClick.bind(layer));\r\n }\r\n\r\n if (layer.onClick) {\r\n callbacks.click.push(layer.onClick.bind(layer));\r\n }\r\n\r\n if (layer.onDoubleClick) {\r\n callbacks['double-click'].push(layer.onDoubleClick.bind(layer));\r\n }\r\n\r\n if (layer.onZoom) {\r\n callbacks.zoom.push(layer.onZoom.bind(layer));\r\n }\r\n\r\n if (layer.onZoomFinished) {\r\n callbacks.zoomFinished.push(layer.onZoomFinished.bind(layer));\r\n }\r\n\r\n mapService._factories.push(layerFactory);\r\n mapService.layers.push(layer);\r\n if (layer.zIndex) {\r\n map.add(layer, layer.zIndex);\r\n } else {\r\n map.add(layer);\r\n }\r\n }\r\n }));\r\n\r\n $q.all(createLayersPromises).then(() => { updateLayersVisibility(); });\r\n }\r\n\r\n mapService.addLayerService = function (service) {\r\n service.ready().then(function (service) {\r\n service.setup(mapService);\r\n mapService._services.push(service);\r\n });\r\n }\r\n\r\n mapService.getLayer = function (layerName) {\r\n for (var i = 0; i < mapService.layers.length; ++i) {\r\n if (mapService.layers[i].name === layerName) {\r\n return mapService.layers[i];\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n\r\n mapService.toggleLayerVisibility = function (layerName) {\r\n var layer = mapService.getLayer(layerName);\r\n\r\n if (!layer || !layer.toggleVisibility) {\r\n return;\r\n }\r\n\r\n layer.toggleVisibility();\r\n saveLayerVisibilityList();\r\n $rootScope.$broadcast(globalEvents.layerVisibilityChanged, {\r\n [layer.name]: layer.visible,\r\n });\r\n }\r\n\r\n /**\r\n * Registers a callback function for a specific event.\r\n * @param {} eventName \r\n * @param {} callback \r\n * @returns {} \r\n */\r\n mapService.on = function (eventName, callback) {\r\n if (callbacks[eventName]) {\r\n callbacks[eventName].push(callback);\r\n }\r\n }\r\n\r\n mapService.refreshMap = function () {\r\n mapService._mapView.extent = mapService._mapView.extent;\r\n }\r\n\r\n /**\r\n * zooms to a array of graphics\r\n * @param {} graphicsArray\r\n * @param {Number} expansionFactor\r\n * @returns {}\r\n */\r\n mapService.zoomToGraphics = function (graphicsArray, expansionFactor) {\r\n if (!expansionFactor) {\r\n return mapService._mapView.goTo(graphicsArray);\r\n }\r\n\r\n if (!Array.isArray(graphicsArray)) {\r\n graphicsArray = [graphicsArray];\r\n }\r\n if (graphicsArray.length === 0) return;\r\n\r\n const extent = graphicsArray.slice(1).reduce((fullExtent, graphic) => (\r\n fullExtent.union(graphic.geometry.extent)\r\n ), graphicsArray[0].geometry.extent);\r\n\r\n mapService._mapView.goTo(extent.expand(expansionFactor));\r\n }\r\n\r\n /**\r\n * zooms to a extent of the map\r\n * @param {} extent\r\n * @returns {}\r\n */\r\n mapService.zoomToExtent = function (extent) {\r\n mapService._mapView.extent = extent;\r\n }\r\n\r\n mapService.GetLayerGraphics = function (index) {\r\n return mapService._mapView.map.allLayers.items[index];\r\n }\r\n\r\n /**\r\n * Zooms to a given screenPoint.\r\n * @param {} point \r\n * @returns {} \r\n */\r\n mapService.zoomTo = function (point) {\r\n var screenPoint = new ScreenPoint(point.x, point.y);\r\n var locationPoint = mapService._mapView.toMap(screenPoint);\r\n\r\n mapService._mapView.center = locationPoint;\r\n mapService._mapView.zoom = 17;\r\n }\r\n\r\n /**\r\n * Zooms to a given point\r\n * @param {} point \r\n * @returns {} \r\n */\r\n mapService.zoomToLocation = function (point, zoomLevel) {\r\n mapService._mapView.center = point;\r\n mapService._mapView.zoom = zoomLevel || 17;\r\n }\r\n\r\n mapService.zoomOut = function () {\r\n mapService._mapView.zoom = 9;\r\n }\r\n\r\n mapService.zoomRelative = function (zoomLevel) {\r\n mapService._mapView.zoom += zoomLevel;\r\n }\r\n\r\n mapService.getMapPoint = function (point) {\r\n var screenPoint = new ScreenPoint(point.x, point.y);\r\n return mapService._mapView.toMap(screenPoint);\r\n };\r\n\r\n mapService.reloadMap = function (showBusyIndicator = true) {\r\n if (showBusyIndicator) {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'mapBusyIndicator',\r\n destination: '#left-pane',\r\n message: 'Henter data...',\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n }\r\n\r\n const loadDataPromises = mapService.layers\r\n .filter((layer) => !!layer.loadData)\r\n .map((layer) => layer.loadData());\r\n\r\n return $q.all(loadDataPromises).finally(() => {\r\n if (showBusyIndicator) {\r\n $rootScope.$broadcast('hideBusyIndicator', 'mapBusyIndicator');\r\n }\r\n });\r\n }\r\n\r\n function updateLayersVisibility() {\r\n $timeout(() => {\r\n const visibilityList = loadLayerVisibilityList();\r\n\r\n if (visibilityList) {\r\n mapService.layers.forEach((layer) => {\r\n if (visibilityList[layer.name] != null) {\r\n layer.visible = visibilityList[layer.name];\r\n }\r\n });\r\n }\r\n\r\n const newVisibilityList = saveLayerVisibilityList();\r\n $rootScope.$broadcast(globalEvents.layerVisibilityChanged, newVisibilityList);\r\n }, 500);\r\n }\r\n\r\n function loadLayerVisibilityList() {\r\n return JSON.parse(window.localStorage.getItem(persistenceRootKey))\r\n || defaultVisibilityList;\r\n }\r\n\r\n function saveLayerVisibilityList() {\r\n const visibilityList = Object.fromEntries(mapService.layers\r\n .map((layer) => ([\r\n layer.name,\r\n layer.visible,\r\n ]))\r\n );\r\n\r\n window.localStorage.setItem(persistenceRootKey, JSON.stringify(visibilityList));\r\n return visibilityList;\r\n }\r\n\r\n readyDeferred.resolve();\r\n });\r\n\r\n return mapService;\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('selectionLayerFactory', selectionLayerFactory);\r\n\r\n selectionLayerFactory.$inject = [\r\n '$q',\r\n 'esriLoader',\r\n '$timeout',\r\n 'mapTypes',\r\n 'selectionSettings',\r\n 'mapSettings',\r\n ];\r\n\r\n function selectionLayerFactory(\r\n $q,\r\n esriLoader,\r\n $timeout,\r\n mapTypes,\r\n selectionSettings,\r\n mapSettings,\r\n ) {\r\n const layerFactory = this;\r\n const readyDeferred = $q.defer();\r\n\r\n layerFactory.createLayerOnAdd = true;\r\n layerFactory.ready = () => readyDeferred.promise;\r\n\r\n loadResources().then(() => readyDeferred.resolve(layerFactory));\r\n return layerFactory;\r\n\r\n /**\r\n * load ESRI resources and make map logic\r\n */\r\n function loadResources() {\r\n return esriLoader.require([\r\n 'dojo/_base/declare',\r\n 'esri/Graphic',\r\n 'esri/layers/GraphicsLayer',\r\n 'esri/symbols/SimpleMarkerSymbol',\r\n 'esri/symbols/SimpleLineSymbol',\r\n 'esri/geometry/Point',\r\n 'esri/geometry/Polyline',\r\n 'esri/geometry/SpatialReference'\r\n ],\r\n function (\r\n declare,\r\n Graphic,\r\n GraphicsLayer,\r\n SimpleMarkerSymbol,\r\n SimpleLineSymbol,\r\n Point,\r\n Polyline,\r\n SpatialReference,\r\n ) {\r\n var lineSym = new SimpleLineSymbol(selectionSettings.lineSymbol);\r\n var pointSym = new SimpleMarkerSymbol(selectionSettings.pointSymbol);\r\n\r\n layerFactory.createLayer = () => new SelectionLayer({});\r\n\r\n const SelectionLayer = declare([GraphicsLayer], {\r\n constructor: function () {\r\n this.name = 'selectionLayer';\r\n this.enabled = false;\r\n this.selectionDeferred = null;\r\n this.points = [];\r\n },\r\n\r\n createPoint: function (mapPoint, mapType) {\r\n var point;\r\n if (mapType === 'UTM33N') {\r\n point = new Point(mapPoint.x, mapPoint.y, new SpatialReference({ wkid: mapSettings.wkid }));\r\n } else {\r\n point = new Point(mapPoint.longitude, mapPoint.latitude, new SpatialReference({ wkid: mapSettings.wkid }));\r\n }\r\n return point;\r\n },\r\n\r\n onClick: function (evt, mapView) {\r\n if (!this.enabled) {\r\n return;\r\n }\r\n\r\n // convert screen coordinates to map coordinates \r\n var mapPoint = mapView.toMap({\r\n x: evt.offsetX,\r\n y: evt.offsetY\r\n });\r\n\r\n // if the point exists render the actual obj\r\n // if it's the first point save it.\r\n if (mapPoint) {\r\n let point = this.createPoint(mapPoint, mapSettings.mapType);\r\n\r\n if (this._isPointNearStartPoint(point, mapView)) {\r\n point = this.points[0];\r\n $timeout(this.onSelectionComplete.bind(this), 150);\r\n }\r\n\r\n this.points.push(point);\r\n this.render(point, mapView);\r\n return true;\r\n }\r\n },\r\n\r\n /**\r\n * onDoubleClick\r\n * @param evt click event\r\n * @param mapView \r\n */\r\n onDoubleClick: function (evt, mapView) {\r\n if (!this.enabled) {\r\n return;\r\n }\r\n\r\n // disable zooming the map\r\n mapView.goTo({\r\n target: mapView.center,\r\n zoom: mapView.zoom\r\n });\r\n\r\n // convert screen coordinates to map coordinates \r\n var mapPoint = mapView.toMap({\r\n x: evt.x,\r\n y: evt.y\r\n });\r\n\r\n // Removing last (double) point\r\n this.points.pop();\r\n\r\n // Polygon must consist of at least 3 points\r\n if (this.points.length <= 3) {\r\n return;\r\n }\r\n\r\n // if the point exists render the actual obj\r\n // if its the first point save it.\r\n if (mapPoint) {\r\n this.points.pop();\r\n this.points.push(this.points[0]);\r\n\r\n this.render(this.points[0], mapView);\r\n\r\n $timeout(this.onSelectionComplete.bind(this), 150);\r\n }\r\n },\r\n\r\n /**\r\n * render\r\n * clears the graphics and add rectangle\r\n * @param point map coordinates\r\n */\r\n render: function (point, mapView) {\r\n this.clearGraphics();\r\n\r\n pointSym.size = (this._isPointNearStartPoint(point, mapView)) ? selectionSettings.pointerSize : selectionSettings.pointerSizeDefault;\r\n\r\n this.add(new Graphic({\r\n geometry: this.points[0],\r\n symbol: pointSym\r\n }));\r\n\r\n this.add(new Graphic({\r\n geometry: this.renderGeometry(point),\r\n symbol: lineSym\r\n }));\r\n },\r\n\r\n /**\r\n * renderRectangle\r\n * @param point map coordinates\r\n * @returns Polyline the rectangle\r\n */\r\n renderGeometry: function (point) {\r\n var polyline = new Polyline({\r\n hasZ: false,\r\n hasM: false,\r\n paths: this.getPolygonPaths(point),\r\n spatialReference: { wkid: mapSettings.wkid }\r\n });\r\n return polyline;\r\n },\r\n\r\n cancelSelection: function () {\r\n this.clearGraphics();\r\n\r\n this.enabled = false;\r\n this.points = [];\r\n this.selectionDeferred = null;\r\n },\r\n\r\n startSelection: function () {\r\n this.enabled = true;\r\n this.selectionDeferred = $q.defer();\r\n\r\n return this.selectionDeferred.promise;\r\n },\r\n\r\n onSelectionComplete: function () {\r\n this.selectionDeferred.resolve(this.getSelectionResult());\r\n this.cancelSelection();\r\n },\r\n\r\n /**\r\n * getSelectionResult\r\n * @returns null|polynom [ [x,y], ..., [m,n] ] \r\n */\r\n getSelectionResult: function () {\r\n if (this.points.length < 2) {\r\n return null;\r\n }\r\n\r\n return this.getPolygonPaths(this.points[this.points.length - 1]);\r\n },\r\n\r\n /**\r\n * getPolygonPaths\r\n */\r\n getPolygonPaths: function () {\r\n var path = [];\r\n for (var cv = 0; cv < this.points.length; cv++) {\r\n path.push([this.points[cv].x, this.points[cv].y]);\r\n }\r\n\r\n return path;\r\n },\r\n\r\n /**\r\n * clearGraphics\r\n * remove all graphics from the layer\r\n */\r\n clearGraphics: function () {\r\n this.removeAll();\r\n },\r\n\r\n _isPointNearStartPoint: function (point, mapView) {\r\n if (this.points.length < 2) {\r\n return false;\r\n }\r\n\r\n var screenPoint = mapView.toScreen(point),\r\n firstScreenPoint = mapView.toScreen(this.points[0]),\r\n distanceTreshold = mapSettings.mapType === mapTypes.UTM33N ? 5 : 5e-5;\r\n\r\n var xDiff = Math.abs(screenPoint.x - firstScreenPoint.x),\r\n yDiff = Math.abs(screenPoint.y - firstScreenPoint.y);\r\n\r\n var distance = Math.sqrt(xDiff * xDiff + yDiff * yDiff);\r\n\r\n if (distance < distanceTreshold) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n },\r\n });\r\n }\r\n );\r\n };\r\n };\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('externalReportsService', externalReportsService);\r\n\r\n externalReportsService.$inject = ['$http'];\r\n\r\n function externalReportsService($http) {\r\n return {\r\n getAllExternalReports,\r\n };\r\n\r\n function getAllExternalReports() {\r\n return $http.get('/api/externalReports')\r\n .then(result => result.data);\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ReportsController', ReportsController);\r\n\r\n ReportsController.$inject = [\r\n '$rootScope',\r\n '$scope',\r\n '$state',\r\n 'tabstripUtility',\r\n '$translate'\r\n ];\r\n\r\n function ReportsController(\r\n $rootScope,\r\n $scope,\r\n $state,\r\n tabstripUtility,\r\n $translate\r\n ) {\r\n $scope.tabStripOptions = {\r\n animation: false,\r\n select: tabstripUtility.handleTabSelected,\r\n dataTextField: 'name',\r\n dataContentUrlField: 'contentUrl',\r\n dataSource: [\r\n {\r\n name: $translate.instant(\"REPORTS_VIEW_TAB_LOG\"),\r\n contentUrl: 'app/reports/containerLogs/container-logs-view.html',\r\n state: 'main.reports.containerlogs',\r\n },\r\n {\r\n name: $translate.instant(\"REPORTS_VIEW_TAB_ERROR\"),\r\n contentUrl: 'app/reports/errorStatus/error-status-view.html',\r\n state: 'main.reports.errorStatus',\r\n },\r\n {\r\n name: $translate.instant(\"REPORTS_VIEW_TAB_BATTERY\"),\r\n contentUrl: 'app/reports/batteryVoltage/battery-voltage-view.html',\r\n state: 'main.reports.batteryVoltage',\r\n },\r\n {\r\n name: $translate.instant(\"REPORTS_VIEW_TAB_GENERIC\"),\r\n contentUrl: 'app/reports/genericReports/generic-reports-tab-view.html',\r\n state: 'main.reports.genericReports',\r\n },\r\n ],\r\n };\r\n \r\n initController();\r\n\r\n function initController() {\r\n $scope.$watch(() => $state.current.name, (state) => {\r\n tabstripUtility.changeTabByState($scope.reportsTab, state);\r\n });\r\n };\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('SensorOverviewController', SensorOverviewController);\r\n\r\n SensorOverviewController.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n '$kWindow',\r\n 'deviceService',\r\n 'filterStateService',\r\n 'formTypes',\r\n 'deviceTypes',\r\n '$translate',\r\n '$state'\r\n\r\n ];\r\n\r\n function SensorOverviewController(\r\n $scope,\r\n $rootScope,\r\n $kWindow,\r\n deviceService,\r\n filterStateService,\r\n formTypes,\r\n deviceTypes,\r\n $translate,\r\n $state\r\n ) {\r\n let devices = [];\r\n\r\n $scope.openUpdateSensor = openUpdateSensor;\r\n $scope.moveToLocationDetails = moveToLocationDetails;\r\n\r\n $scope.sensorOverviewGridOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readSensors,\r\n },\r\n pageSize: 70,\r\n sort: filterStateService.getSortFromQueryString(),\r\n filter: filterStateService.getFilterFromQueryString(),\r\n },\r\n columns: [\r\n {\r\n field: 'externalSystem',\r\n title: $translate.instant(\"SENSOR_OVERVIEW_CONTROLLER_HEADER_SYSTEM\"),\r\n width: 140,\r\n },\r\n {\r\n field: 'externalId',\r\n title: $translate.instant(\"SENSOR_OVERVIEW_CONTROLLER_HEADER_EXTERNAL_ID\"),\r\n width: 90,\r\n }, \r\n {\r\n field: 'container',\r\n title: $translate.instant(\"SENSOR_OVERVIEW_CONTROLLER_HEADER_DEVICE_CONTAINER\"),\r\n template: getContainer,\r\n width: 100,\r\n },\r\n {\r\n field: 'deviceType',\r\n title: $translate.instant(\"SENSOR_OVERVIEW_CONTROLLER_HEADER_DEVICE_TYPE\"),\r\n template: getDeviceTypeText,\r\n },\r\n {\r\n field: 'modifiedAt',\r\n title: $translate.instant(\"SENSOR_OVERVIEW_CONTROLLER_HEADER_MODIFIED_AT\"),\r\n format: $translate.instant(\"SENSOR_OVERVIEW_CONTROLLER_HEADER_MODIFIED_AT_FORMAT\"),\r\n },\r\n {\r\n field: 'isActive',\r\n title: $translate.instant(\"SENSOR_OVERVIEW_CONTROLLER_HEADER_IS_ACTIVE\"),\r\n template: '',\r\n width: 100,\r\n },\r\n {\r\n field: 'isPriority',\r\n title: $translate.instant(\"SENSOR_OVERVIEW_CONTROLLER_HEADER_IS_PRIORITY\"),\r\n template: '',\r\n width: 100,\r\n },\r\n {\r\n field: 'edit',\r\n filterable: false,\r\n sortable: false,\r\n groupable: false,\r\n title: ' ',\r\n width: 80,\r\n template: '',\r\n }\r\n ],\r\n scrollable: {\r\n virtual: true\r\n },\r\n sortable: true,\r\n filterable: true,\r\n noRecords: true,\r\n selectable: false,\r\n sort: filterStateService.storeGridSortInQueryString,\r\n filter: filterStateService.storeGridFilterInQueryString,\r\n };\r\n\r\n function readSensors(e) {\r\n showBusyIndicator();\r\n\r\n deviceService.getDevices().then((result) => {\r\n devices = result.map(extendDevice);\r\n\r\n hideBusyIndicator();\r\n e.success(devices);\r\n });\r\n }\r\n\r\n function openUpdateSensor(device) {\r\n $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant(\"SENSOR_OVERVIEW_CONTROLLER_OPEN_UPDATE_SENSOR\"),\r\n resizable: false,\r\n height: 525,\r\n width: 450,\r\n visible: false\r\n },\r\n templateUrl: 'app/device/device-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'DeviceDetailsModalController',\r\n resolve: {\r\n currentFormType: () => formTypes.edit,\r\n containerId: () => device.containerId,\r\n updateCallbacks: () => ({ updateDeviceToGrid }),\r\n device: () => device,\r\n }\r\n });\r\n }\r\n\r\n function updateDeviceToGrid(device) {\r\n const index = devices.findIndex(d => d.id === device.id);\r\n if (index === -1) return;\r\n\r\n devices[index] = device;\r\n $scope.sensorOverviewGrid.dataSource.data(devices);\r\n }\r\n\r\n function extendDevice(device) {\r\n let modifiedAt = '';\r\n if (device.lastModified) {\r\n modifiedAt = new Date(device.lastModified);\r\n } else if (device.createdAt) {\r\n modifiedAt = new Date(device.createdAt);\r\n }\r\n\r\n return {\r\n ...device,\r\n externalSystem: device.externalSystem ? device.externalSystem.name : '',\r\n modifiedAt: modifiedAt\r\n }\r\n }\r\n\r\n function getDeviceTypeText(device) {\r\n const type = deviceTypes.find(t => t.id === device.deviceType);\r\n return type ? type.name : '';\r\n }\r\n\r\n function getContainer(device) {\r\n if(device.container && device.container.location){\r\n return `${device.container.containerNumber}`;\r\n }else{\r\n return \"\";\r\n } \r\n }\r\n\r\n function moveToLocationDetails(dataItem){\r\n if (dataItem.container && dataItem.container.location) {\r\n let locationId = dataItem.container.location.id ;\r\n let param = {\r\n locationId: locationId,\r\n };\r\n\r\n $state.go('main.locationDetails.info', param);\r\n }\r\n }\r\n\r\n function showBusyIndicator() {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'sensorOverviewIndicator',\r\n destination: '.sensor-overview',\r\n message: $translate.instant(\"G_BUSY_INDICATOR\"),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n }\r\n\r\n function hideBusyIndicator() {\r\n $rootScope.$broadcast('hideBusyIndicator', 'sensorOverviewIndicator');\r\n }\r\n }\r\n})();\r\n","(function() {\r\n\r\n angular.module('UndergroundWebApp').factory('serverInfoService', serverInfoService);\r\n\r\n serverInfoService.$inject = [\r\n '$http'\r\n ];\r\n\r\n function serverInfoService(\r\n $http\r\n ) {\r\n return {\r\n getServers\r\n };\r\n\r\n function getServers() {\r\n return $http.get('api/server')\r\n .then(result => result.data);\r\n }\r\n }\r\n}());\r\n","angular.module('UndergroundWebApp').factory('focus', ['$timeout', '$window', function ($timeout, $window) {\r\n return function (id) {\r\n // timeout makes sure that is invoked after any other event has been triggered.\r\n // e.g. click events that need to run before the focus or\r\n // inputs elements that are in a disabled state but are enabled when those events\r\n // are triggered.\r\n $timeout(function () {\r\n var element = $window.document.getElementById(id);\r\n if (element)\r\n element.focus();\r\n });\r\n };\r\n}]);\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('mapUtility', mapUtility);\r\n\r\n mapUtility.$inject = [];\r\n\r\n var utm33N = '+proj=utm +zone=33 +ellps=WGS84 +datum=WGS84 +units=m +no_defs',\r\n wgs84 = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs';\r\n\r\n function mapUtility() {\r\n var service = {\r\n convertToUTM33N: convertToUTM33N,\r\n convertToWGS84: convertToWGS84,\r\n getCenterFromDegrees: getCenterFromDegrees,\r\n distanceToLineSegment: distanceToLineSegment\r\n };\r\n\r\n return service;\r\n\r\n function convertToUTM33N(lat, lng) {\r\n var projectedCoords = proj4(utm33N, [lng, lat]);\r\n return {\r\n X: projectedCoords[0],\r\n Y: projectedCoords[1]\r\n };\r\n }\r\n\r\n function convertToWGS84(x, y) {\r\n var projectedCoords = proj4(utm33N, wgs84, [x, y]);\r\n\r\n return {\r\n lat: projectedCoords[1],\r\n lng: projectedCoords[0]\r\n }\r\n }\r\n\r\n /**\r\n * Get a center latitude,longitude from an array of like geopoints\r\n *\r\n * @param array data 2 dimensional array of latitudes and longitudes\r\n * For Example:\r\n * $data = array\r\n * (\r\n * 0 = > array(45.849382, 76.322333),\r\n * 1 = > array(45.843543, 75.324143),\r\n * 2 = > array(45.765744, 76.543223),\r\n * 3 = > array(45.784234, 74.542335)\r\n * );\r\n */\r\n function getCenterFromDegrees(data) {\r\n if (!(data.length > 0)) {\r\n return false;\r\n }\r\n\r\n var num_coords = data.length;\r\n\r\n var X = 0.0;\r\n var Y = 0.0;\r\n var Z = 0.0;\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n var lat = data[i][0] * Math.PI / 180;\r\n var lon = data[i][1] * Math.PI / 180;\r\n\r\n var a = Math.cos(lat) * Math.cos(lon);\r\n var b = Math.cos(lat) * Math.sin(lon);\r\n var c = Math.sin(lat);\r\n\r\n X += a;\r\n Y += b;\r\n Z += c;\r\n }\r\n\r\n X /= num_coords;\r\n Y /= num_coords;\r\n Z /= num_coords;\r\n\r\n var lon = Math.atan2(Y, X);\r\n var hyp = Math.sqrt(X * X + Y * Y);\r\n var lat = Math.atan2(Z, hyp);\r\n\r\n var newX = (lat * 180 / Math.PI);\r\n var newY = (lon * 180 / Math.PI);\r\n\r\n return new Array(newX, newY);\r\n }\r\n\r\n function distanceToLineSegment(lx1, ly1, lx2, ly2, px, py) {\r\n return Math.sqrt(distanceSquaredToLineSegment(lx1, ly1, lx2, ly2, px, py));\r\n }\r\n\r\n function distanceSquaredToLineSegment(lx1, ly1, lx2, ly2, px, py) {\r\n var ldx = lx2 - lx1,\r\n ldy = ly2 - ly1,\r\n lineLengthSquared = ldx * ldx + ldy * ldy;\r\n return distanceSquaredToLineSegment2(lx1, ly1, ldx, ldy, lineLengthSquared, px, py);\r\n }\r\n\r\n function distanceSquaredToLineSegment2(lx1, ly1, ldx, ldy, lineLengthSquared, px, py) {\r\n var t; // t===0 at line pt 1 and t ===1 at line pt 2\r\n if (!lineLengthSquared) {\r\n // 0-length line segment. Any t will return same result\r\n t = 0;\r\n }\r\n else {\r\n t = ((px - lx1) * ldx + (py - ly1) * ldy) / lineLengthSquared;\r\n\r\n if (t < 0)\r\n t = 0;\r\n else if (t > 1)\r\n t = 1;\r\n }\r\n\r\n var lx = lx1 + t * ldx,\r\n ly = ly1 + t * ldy,\r\n dx = px - lx,\r\n dy = py - ly;\r\n return dx * dx + dy * dy;\r\n }\r\n }\r\n})();\r\n","angular.module('UndergroundWebApp').factory('setAttribute', ['$timeout', '$window', function ($timeout, $window) {\r\n return function (id, attribute, value) {\r\n // timeout makes sure that is invoked after any other event has been triggered.\r\n // e.g. click events that need to run before the focus or\r\n // inputs elements that are in a disabled state but are enabled when those events\r\n // are triggered.\r\n $timeout(function () {\r\n var element = $window.document.getElementById(id);\r\n if (element)\r\n element.setAttribute(attribute, value);\r\n });\r\n };\r\n}]);\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('StatisticsController', StatisticsController);\r\n\r\n StatisticsController.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n '$stateParams',\r\n 'containerService',\r\n 'chartOptionsService',\r\n '$translate'\r\n ];\r\n\r\n function StatisticsController(\r\n $scope,\r\n $rootScope,\r\n $stateParams,\r\n containerService,\r\n chartOptionsService,\r\n $translate\r\n ) {\r\n $scope.locationId = null;\r\n $scope.dateRange = {};\r\n\r\n $scope.charts = [];\r\n $scope.getChartData = getChartData;\r\n\r\n initController();\r\n\r\n function initController() {\r\n loadContainer();\r\n }\r\n\r\n function loadContainer() {\r\n containerService.getContainerByRelatedDevice($stateParams.deviceId)\r\n .then(function (container) {\r\n if (container) {\r\n $scope.locationId = container.locationId;\r\n $scope.title = getPageTitle(container);\r\n }\r\n });\r\n }\r\n\r\n function getPageTitle(container) {\r\n var titleParts = [];\r\n if (container.location && container.location.name) {\r\n titleParts.push(container.location.name);\r\n }\r\n if (container.containerNumber) {\r\n titleParts.push(container.containerNumber);\r\n }\r\n if (container.fraction && container.fraction.name) {\r\n titleParts.push(container.fraction.name);\r\n }\r\n\r\n return titleParts.join(' - ');\r\n }\r\n\r\n function getChartData() {\r\n containerService.getContainerStatistics(\r\n $stateParams.deviceId,\r\n moment($scope.dateRange.from).format('YYYY-MM-DD'),\r\n moment($scope.dateRange.to).format('YYYY-MM-DD'),\r\n ).then(function (statistics) {\r\n var charts = [];\r\n\r\n charts.push(chartOptionsService.createChart(statistics, 'fill', $translate.instant('STATISTICS_CONTROLLER_CHART_FILL'), 'blue', {\r\n valueAxis: {\r\n min: 0,\r\n max: 100,\r\n },\r\n }));\r\n\r\n if ($rootScope.isAccessible('SignalStrengthReport', 'R')) {\r\n charts.push(chartOptionsService.createChart(statistics, 'rssi', $translate.instant('STATISTICS_CONTROLLER_CHART_SIGNAL_STRENGTH'), 'red'));\r\n }\r\n\r\n charts.push(chartOptionsService.createChart(statistics, 'volt', $translate.instant('STATISTICS_CONTROLLER_CHART_BATTERY'), 'green'));\r\n charts.push(chartOptionsService.createChart(statistics, 'temperature', $translate.instant('STATISTICS_CONTROLLER_CHART_TEMPERATURE'), 'orange'));\r\n\r\n if (\r\n $rootScope.isAccessible('ContainerUsageForPeriodeReport', 'R')\r\n || $rootScope.isAccessible('ContainerUsageReport', 'R')\r\n ) {\r\n charts.push(chartOptionsService.createChart(statistics, 'usageCount', $translate.instant('STATISTICS_CONTROLLER_CHART_USAGE_COUNT'), 'purple'));\r\n }\r\n\r\n $scope.charts = charts;\r\n });\r\n }\r\n }\r\n})();\r\n","(function () {\r\n angular.module('UndergroundWebApp').factory('s2wClusterLayerFactory', s2wClusterLayerFactory);\r\n\r\n s2wClusterLayerFactory.$inject = [\r\n '$q',\r\n '$rootScope',\r\n 'globalEvents',\r\n 'authService',\r\n 'mapUtility',\r\n 'esriLoader',\r\n 'undergroundAPIService',\r\n 'locationsService'\r\n ]\r\n\r\n function s2wClusterLayerFactory(\r\n $q,\r\n $rootScope,\r\n globalEvents,\r\n authService,\r\n mapUtility,\r\n esriLoader,\r\n undergroundAPIService,\r\n locationsService\r\n ) {\r\n var readyDeferred = null,\r\n initDeferred = null;\r\n\r\n let locations = [];\r\n\r\n var s2wClusterLayerFactory = {\r\n createLayerOnAdd: true,\r\n\r\n ready: function () {\r\n if (readyDeferred === null) {\r\n readyDeferred = $q.defer();\r\n }\r\n locationsService.getLocations(true, false, false, true).then(function (locs) {\r\n locations = locs;\r\n });\r\n return readyDeferred.promise;\r\n },\r\n\r\n initialized: function () {\r\n if (initDeferred === null) {\r\n initDeferred = $q.defer();\r\n }\r\n\r\n return initDeferred.promise;\r\n }\r\n };\r\n\r\n esriLoader.require([\r\n 'esri/geometry/Point',\r\n 'mcl/MarkerClusterLayer'\r\n ], function (Point, MarkerClusterLayer) {\r\n if (readyDeferred === null) {\r\n readyDeferred = $q.defer();\r\n }\r\n if (initDeferred === null) {\r\n initDeferred = $q.defer();\r\n }\r\n\r\n s2wClusterLayerFactory.createLayer = function () {\r\n var s2wClusterLayer = new MarkerClusterLayer({});\r\n s2wClusterLayer.name = 's2wClusterLayer';\r\n s2wClusterLayer.zIndex = 15;\r\n s2wClusterLayer.popupVisible = false;\r\n\r\n s2wClusterLayer.toggleVisibility = function () {\r\n s2wClusterLayer.visible = !s2wClusterLayer.visible;\r\n }\r\n\r\n s2wClusterLayer.onMouseMove = function (evt, mapView, hitResponse) {\r\n const hitResult = hitResponse && hitResponse.results\r\n .find(r => r.graphic.layer && r.graphic.layer.name === s2wClusterLayer.name);\r\n if (\r\n !hitResult\r\n || hitResult.graphic.attributes.isCluster\r\n ) {\r\n if (s2wClusterLayer.popupVisible) {\r\n $rootScope.$broadcast('hides2wOverviewPopup');\r\n s2wClusterLayer.popupVisible = false;\r\n }\r\n return;\r\n }\r\n\r\n const graphic = hitResult.graphic;\r\n const point = new Point(graphic.geometry.x, graphic.geometry.y);\r\n const graphicScreenPoint = mapView.toScreen(point);\r\n\r\n s2wClusterLayer.popupVisible = true;\r\n $rootScope.$broadcast('shows2wOverviewPopup', {\r\n left: graphicScreenPoint.x + mapView.position[0] + 20,\r\n top: graphicScreenPoint.y + mapView.position[1] + 10,\r\n displayText: graphic.attributes.displayText || '',\r\n fraction: graphic.attributes.fraction || '',\r\n place: graphic.attributes.place || '',\r\n containerType: graphic.attributes.containerType || '',\r\n fill: graphic.attributes.fill || '',\r\n volt: graphic.attributes.volt || ''\r\n });\r\n };\r\n\r\n s2wClusterLayer.onRightClick = function (evt, mapView, hitResponse) {\r\n if (hitResponse) {\r\n var graphic = hitResponse.results[hitResponse.results.length - 1].graphic;\r\n\r\n if (graphic.layer && graphic.layer.name === s2wClusterLayer.name) {\r\n var point = new Point(graphic.geometry.x, graphic.geometry.y);\r\n var screenPoint = mapView.toScreen(point);\r\n const location = locations.filter(loc => loc.externalWMPlaceNr === graphic.attributes.placeNr)[0];\r\n if (!graphic.attributes || (!graphic.attributes.isCluster && !(graphic.attributes.type === 'sublocation'))) {\r\n const item = graphic.attributes.point;\r\n if (location) {\r\n item.location = location;\r\n }\r\n $rootScope.$broadcast('showContextMenu', {\r\n item: item,\r\n mapPosition: mapView.position,\r\n screenPoint: screenPoint,\r\n type: 'Vessel'\r\n });\r\n\r\n } else if (graphic.attributes && graphic.attributes.type === 'sublocation') {\r\n \r\n var item = graphic.attributes.point;\r\n item.locationNumber = graphic.attributes.id;\r\n item.commune = graphic.attributes.commune;\r\n item.containerId = graphic.attributes.containerId;\r\n item.displayText = graphic.attributes.displayText;\r\n item.fraction = graphic.attributes.fraction;\r\n item.containerType = graphic.attributes.containerType;\r\n item.degLat = graphic.attributes.lat;\r\n item.degLong = graphic.attributes.lon;\r\n item.fill = graphic.attributes.fill;\r\n item.hasPosition = graphic.attributes.hasPosition;\r\n item.poiId = graphic.attributes.poiId;\r\n item.place = graphic.attributes.place;\r\n item.placeNr = graphic.attributes.placeNr;\r\n item.time = graphic.attributes.time;\r\n item.volt = graphic.attributes.volt;\r\n if (location) {\r\n item.location = location;\r\n }\r\n $rootScope.$broadcast('showContextMenu', {\r\n item: item,\r\n mapPosition: mapView.position,\r\n screenPoint: screenPoint,\r\n focusPoint: mapView.toScreen(graphic.attributes.point),\r\n type: 'Vessel'\r\n });\r\n } else if (graphic.attributes && graphic.attributes.isCluster) {\r\n let clusterPoints = graphic.attributes.points;\r\n const radialMenuOptions = {\r\n mapPosition: mapView.position,\r\n screenPoint: screenPoint,\r\n clusterPoints: clusterPoints,\r\n type: 'Cluster'\r\n };\r\n if (clusterPoints.every(cp => cp.placeNr === clusterPoints[0].placeNr)) {\r\n radialMenuOptions.location = locations.filter(loc => loc.externalWMPlaceNr === clusterPoints[0].placeNr)[0]\r\n }\r\n $rootScope.$broadcast('showContextMenu', radialMenuOptions);\r\n }\r\n }\r\n }\r\n };\r\n\r\n $rootScope.$on(globalEvents.redrawCluster, function () {\r\n s2wClusterLayer.redrawData();\r\n });\r\n\r\n s2wClusterLayer.upsertLocationData = function (locations) {\r\n s2wClusterLayer.updateData(locations);\r\n };\r\n\r\n s2wClusterLayer.loadData = function () {\r\n return undergroundAPIService.getS2WOverviewExpress(true).then(function (locations) {\r\n var validLocations = _.filter(locations, function (loc) {\r\n return loc.degLat !== 0 && loc.degLong !== 0;\r\n });\r\n\r\n var locationsToLoad = [];\r\n\r\n for (var i = 0; i < validLocations.length; ++i) {\r\n const coords = mapUtility.convertToUTM33N(validLocations[i].degLat, validLocations[i].degLong);\r\n\r\n locationsToLoad.push({\r\n ...validLocations[i],\r\n degLat: coords.Y,\r\n degLong: coords.X\r\n });\r\n }\r\n\r\n s2wClusterLayer._locations = locationsToLoad;\r\n s2wClusterLayer.upsertLocationData(locationsToLoad);\r\n });\r\n }\r\n\r\n /**\r\n * Filters the displayed locations with the provided deviceExternalId\r\n * @param deviceExternalIds The list of deviceExternalIds used to filter the locations by `location.containerId`. \r\n * Leave empty to reset the filtering.\r\n */\r\n s2wClusterLayer.setLocationFilter = function (deviceExternalIds) {\r\n s2wClusterLayerFactory.initialized().then(function () {\r\n if (!deviceExternalIds) {\r\n s2wClusterLayer.upsertLocationData(s2wClusterLayer._locations);\r\n return;\r\n }\r\n\r\n if (deviceExternalIds.length === 0) {\r\n s2wClusterLayer.upsertLocationData([]);\r\n return;\r\n }\r\n\r\n // location.containerId is a number so the filter values have to be casted\r\n var deviceIdNumbers = _.chain(deviceExternalIds)\r\n .map(function (id) { return Number(id); })\r\n .filter(function (id) { return !isNaN(id); })\r\n .value();\r\n var filteredLocations = _.filter(s2wClusterLayer._locations, function (location) {\r\n return _.includes(deviceIdNumbers, location.containerId);\r\n });\r\n s2wClusterLayer.upsertLocationData(filteredLocations);\r\n });\r\n }\r\n\r\n s2wClusterLayer.loadData().then((locations) => {\r\n $rootScope.$broadcast('ContainerLayerLoaded', {\r\n locations\r\n });\r\n\r\n initDeferred.resolve();\r\n });\r\n\r\n return s2wClusterLayer;\r\n };\r\n\r\n readyDeferred.resolve(s2wClusterLayerFactory);\r\n });\r\n\r\n return s2wClusterLayerFactory;\r\n }\r\n})();\r\n","(function () {\r\n\r\n angular.module('UndergroundWebApp').factory('undergroundAPIService', undergroundAPIService);\r\n\r\n undergroundAPIService.$inject = [\r\n '$http',\r\n 'qPool'\r\n ];\r\n\r\n function undergroundAPIService(\r\n $http,\r\n qPool\r\n ) {\r\n return {\r\n getS2WOverviewExpress: getS2WOverviewExpress\r\n };\r\n\r\n function getS2WOverviewExpress() {\r\n let deferred = qPool.defer('undergroundAPIService.getS2WOverviewExpress');\r\n\r\n if (!deferred.hasCompleted() && deferred.isFirst) {\r\n $http.get('api/containersv2/express').then(function (result) {\r\n deferred.resolve(result.data);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ContainerTypeDetailsModalController', ContainerTypeDetailsModalController);\r\n\r\n ContainerTypeDetailsModalController.$inject = [\r\n '$q',\r\n '$scope',\r\n '$rootScope',\r\n '$windowInstance',\r\n 'containerTypesService',\r\n 'formTypes',\r\n 'currentFormType',\r\n 'containerType',\r\n 'containerTypeUnits',\r\n '$translate'\r\n ];\r\n\r\n function ContainerTypeDetailsModalController(\r\n $q,\r\n $scope,\r\n $rootScope,\r\n $windowInstance,\r\n containerTypesService,\r\n formTypes,\r\n currentFormType,\r\n containerType,\r\n containerTypeUnits,\r\n $translate\r\n ) {\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.closeWindow = closeWindow;\r\n\r\n $scope.containerTypeUnitOptions = {\r\n dataSource: containerTypeUnits,\r\n dataTextField: 'LocalizedName',\r\n dataValueField: 'Id',\r\n optionLabel: $translate.instant('ADMINISTRATION_CONTAINERTYPE_MODAL_CHOOSE_UNIT')\r\n };\r\n\r\n $scope.containerType = containerType != null ? { ...containerType } : { unit: 0 };\r\n\r\n //Event handlers\r\n function saveAndClose(event) {\r\n event.preventDefault();\r\n\r\n if ($scope.validator.validate()) {\r\n save().then(function (result) {\r\n $windowInstance.close(result);\r\n $('#container-types-grid').getKendoGrid().dataSource.read();\r\n });\r\n }\r\n }\r\n\r\n function closeWindow(result) {\r\n $windowInstance.close(result);\r\n }\r\n\r\n //Private functions\r\n function getSaveFunction(currentFormType) {\r\n if (currentFormType === formTypes.edit) {\r\n return containerTypesService.updateContainerType.bind(containerTypesService);\r\n }\r\n\r\n return containerTypesService.addContainerType.bind(containerTypesService);\r\n }\r\n\r\n function save() {\r\n var deferred = $q.defer();\r\n\r\n $rootScope.$broadcast('showGlobalBusyIndicator', 'containerTypeIndicator');\r\n\r\n var saveFunction = getSaveFunction(currentFormType);\r\n\r\n saveFunction($scope.containerType)\r\n .then(result => deferred.resolve(result),\r\n () => deferred.reject())\r\n .finally(() => $rootScope.$broadcast('hideBusyIndicator', 'containerTypeIndicator'));\r\n\r\n return deferred.promise;\r\n }\r\n\r\n }\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ContainerTypesController', ContainerTypesController);\r\n\r\n ContainerTypesController.$inject = [\r\n '$scope',\r\n '$kWindow',\r\n 'containerTypesService',\r\n 'formTypes',\r\n 'containerTypeUnits',\r\n '$filter',\r\n 'containerTypeStatuses',\r\n 'filterStateService',\r\n '$translate'\r\n ];\r\n\r\n function ContainerTypesController(\r\n $scope,\r\n $kWindow,\r\n containerTypesService,\r\n formTypes,\r\n containerTypeUnits,\r\n $filter,\r\n containerTypeStatuses,\r\n filterStateService,\r\n $translate\r\n ) {\r\n $scope.sortedContainerTypes = [];\r\n\r\n $scope.openNewContainerType = openNewContainerType;\r\n $scope.openUpdateContainerType = openUpdateContainerType;\r\n $scope.deleteContainerType = deleteContainerType;\r\n\r\n $scope.containerTypeOverviewGridOptions = {\r\n dataSource: new kendo.data.DataSource({\r\n transport: {\r\n read: readContainerTypes\r\n },\r\n pageSize: 70,\r\n sort: filterStateService.getSortFromQueryString(),\r\n filter: filterStateService.getFilterFromQueryString(),\r\n }),\r\n columns: [\r\n {\r\n field: 'name',\r\n title: $translate.instant('G_NAME')\r\n },\r\n {\r\n field: 'size',\r\n title: $translate.instant('ADMINISTRATION_CONTAINERTYPE_TABLE_HEADER_VOLUME'),\r\n template: dataItem => $filter('decimalWithComma')(dataItem.size)\r\n },\r\n {\r\n field: 'unit',\r\n title: $translate.instant('ADMINISTRATION_CONTAINERTYPE_TABLE_HEADER_UNIT'),\r\n template: dataItem => containerTypeUnits[dataItem.unit].LocalizedName\r\n },\r\n {\r\n field: 'edit',\r\n filterable: false,\r\n sortable: false,\r\n groupable: false,\r\n title: ' ',\r\n width: '80px',\r\n template: '' +\r\n ''\r\n }\r\n ],\r\n scrollable: {\r\n virtual: true\r\n },\r\n sortable: true,\r\n filterable: true,\r\n noRecords: true,\r\n selectable: false,\r\n sort: filterStateService.storeGridSortInQueryString,\r\n filter: filterStateService.storeGridFilterInQueryString,\r\n };\r\n\r\n function readContainerTypes(e) {\r\n $scope.showBusyIndicator();\r\n containerTypesService\r\n .getContainerTypes()\r\n .then(\r\n containerTypes => {\r\n $scope.sortedContainerTypes = _.chain(containerTypes)\r\n .filter(f => f.status === containerTypeStatuses.active.Id)\r\n .sortBy(f => f.name)\r\n .value();\r\n e.success($scope.sortedContainerTypes);\r\n },\r\n () => e.success([])\r\n )\r\n .finally(() => $scope.hideBusyIndicator());\r\n }\r\n\r\n function openNewContainerType() {\r\n openContainerTypeModal($translate.instant('ADMINISTRATION_CONTAINERTYPE_NEW_CONTAINERTYPE'), formTypes.add)\r\n .result.then(() => { });\r\n }\r\n\r\n function openUpdateContainerType(dataItem) {\r\n openContainerTypeModal($translate.instant('ADMINISTRATION_CONTAINERTYPE'), formTypes.edit, dataItem)\r\n .result.then(() => { });\r\n }\r\n\r\n function deleteContainerType(dataItem) {\r\n let confirmText = $translate.instant('ADMINISTRATION_CONTAINERTYPE_DIALOG_CONFIRM_DELETE');\r\n\r\n if (confirm(`${confirmText} ${dataItem.name}?`)) {\r\n dataItem.status = containerTypeStatuses.deleted.Id;\r\n containerTypesService.updateContainerType(dataItem).then(() => {\r\n $('#container-types-grid').getKendoGrid().dataSource.read();\r\n });\r\n }\r\n }\r\n\r\n function openContainerTypeModal(title, formType, containerType) {\r\n return $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: title,\r\n resizable: false,\r\n height: 284,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/administration/containerType/container-type-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'ContainerTypeDetailsModalController',\r\n resolve: {\r\n currentFormType: () => formType,\r\n containerType: () => containerType,\r\n containerTypeUnits: () => containerTypeUnits\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('containerTypesService', containerTypesService);\r\n\r\n containerTypesService.$inject = ['$http'];\r\n\r\n function containerTypesService($http) {\r\n return {\r\n addContainerType,\r\n getContainerTypes,\r\n updateContainerType,\r\n };\r\n\r\n function addContainerType(containerType) {\r\n return $http.post(\"api/containerType\", containerType)\r\n .then(result => result.data);\r\n }\r\n\r\n function getContainerTypes() {\r\n return $http.get('api/containerType')\r\n .then(result => result.data);\r\n }\r\n\r\n function updateContainerType(containerType) {\r\n return $http.put(\"api/containerType\", containerType)\r\n .then(result => result.data);\r\n }\r\n }\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('DeviationReportController', DeviationReportController);\r\n\r\n DeviationReportController.$inject = [\r\n '$q',\r\n '$scope',\r\n '$rootScope',\r\n '$kWindow',\r\n 'deviationReportService',\r\n 'formTypes',\r\n 'deviationStatuses',\r\n 'filterStateService',\r\n '$translate',\r\n 'deviationAlertRecurrenceTypes'\r\n ];\r\n\r\n function DeviationReportController(\r\n $q,\r\n $scope,\r\n $rootScope,\r\n $kWindow,\r\n deviationReportService,\r\n formTypes,\r\n deviationStatuses,\r\n filterStateService,\r\n $translate,\r\n deviationAlertRecurrenceTypes\r\n ) {\r\n $scope.sortedJobs = [];\r\n $scope.reportQueries = [];\r\n $scope.deviations = [];\r\n\r\n $scope.openNewDeviationReport = openNewDeviationReport;\r\n $scope.deleteDeviationReport = deleteDeviationReport;\r\n $scope.openUpdateDeviationReport = openUpdateDeviationReport;\r\n $scope.getDaysOfWeekLocalizedString = getDaysOfWeekLocalizedString;\r\n $scope.getIntervalMinutesLocalizedString = getIntervalMinutesLocalizedString;\r\n $scope.getLocalizedDateString = getLocalizedDateString;\r\n $scope.getRecurrenceTypeLocalizedString = getRecurrenceTypeLocalizedString;\r\n $scope.getEmailParticipantsCount = getEmailParticipantsCount;\r\n $scope.getStatusCheckboxByStatusId = getStatusCheckboxByStatusId;\r\n\r\n $scope.findDeviationAlertType = findDeviationAlertType;\r\n\r\n $scope.deviationReportGridOptions = {\r\n dataSource: new kendo.data.DataSource({\r\n transport: {\r\n read: readJobs\r\n },\r\n pageSize: 70,\r\n sort: filterStateService.getSortFromQueryString(),\r\n filter: filterStateService.getFilterFromQueryString(),\r\n }),\r\n columns: [\r\n {\r\n field: 'name',\r\n title: $translate.instant('G_NAME')\r\n },\r\n {\r\n field: 'recurrence',\r\n title: $translate.instant('ADMINISTRATION_DEVIATION_RECURRENCE_TYPE'),\r\n template: '{{getRecurrenceTypeLocalizedString(dataItem.recurrence)}}'\r\n },\r\n {\r\n field: 'queryId',\r\n title: $translate.instant('G_TYPE'),\r\n template: '{{findDeviationAlertType(dataItem.queryId).name}}'\r\n },\r\n {\r\n field: 'daysOfWeek',\r\n title: $translate.instant('G_DAYS_CAPITAL'),\r\n template: '{{getDaysOfWeekLocalizedString(dataItem)}}'\r\n },\r\n {\r\n field: 'intervalInMinutes',\r\n title: $translate.instant('ADMINISTRATION_DEVIATION_INTERVAL_MINUTES'),\r\n template: '{{getIntervalMinutesLocalizedString(dataItem)}}'\r\n },\r\n {\r\n field: 'lastSuccessfullRun',\r\n title: $translate.instant('ADMINISTRATION_DEVIATION_LAST_SUCCESSFULL_RUN'),\r\n template: '{{getLocalizedDateString(dataItem.lastSuccessfullRun)}}'\r\n },\r\n {\r\n field: 'emailAddresses',\r\n title: $translate.instant('ADMINISTRATION_DEVIATION_RECEPIENTS_NO'),\r\n template: '{{getEmailParticipantsCount(dataItem.emailAddresses)}}',\r\n },\r\n {\r\n field: 'status',\r\n title: deviationStatuses.active.LocalizedName,\r\n template: '',\r\n width: '70px',\r\n attributes: {\"class\": \"status-col\" },\r\n },\r\n {\r\n field: 'edit',\r\n filterable: false,\r\n sortable: false,\r\n groupable: false,\r\n title: ' ',\r\n width: '80px',\r\n template: '' +\r\n ''\r\n }\r\n ],\r\n scrollable: {\r\n virtual: true\r\n },\r\n messages: {\r\n noRecords: $translate.instant(\"G_NO_DATA\")\r\n },\r\n sortable: true,\r\n filterable: true,\r\n noRecords: true,\r\n selectable: false,\r\n change: onDeviationReportRowSelected,\r\n sort: filterStateService.storeGridSortInQueryString,\r\n filter: filterStateService.storeGridFilterInQueryString,\r\n };\r\n\r\n function findDeviationAlertType(id) {\r\n return _.find($scope.reportQueries, { id: id });\r\n }\r\n\r\n function readJobs(e) {\r\n $scope.showBusyIndicator();\r\n\r\n $q.all([\r\n deviationReportService.getDeviationReports(),\r\n deviationReportService.getDeviationReportQueries(),\r\n deviationReportService.getDeviations()\r\n ]).then(([jobs, reportQueries, deviations]) => {\r\n const filteredJobs = jobs.filter(job => job.status !== deviationStatuses.invisible.Id);\r\n $scope.sortedJobs = _.chain(filteredJobs)\r\n .sortBy(f => f.name.toLowerCase())\r\n .value();\r\n\r\n $scope.reportQueries = reportQueries;\r\n $scope.deviations = deviations;\r\n\r\n $scope.hideBusyIndicator();\r\n e.success($scope.sortedJobs);\r\n }).catch(() => {\r\n $scope.hideBusyIndicator();\r\n e.success([]);\r\n });\r\n }\r\n\r\n function openNewDeviationReport() {\r\n openDeviationDetailsModal($translate.instant('ADMINISTRATION_DEVIATION_NEW'), formTypes.add, $scope.reportQueries, null, $scope.deviations)\r\n .result.then(function () { });\r\n }\r\n\r\n function openUpdateDeviationReport(deviationReportId) {\r\n const deviationAlert = _.find($scope.sortedJobs, { id: deviationReportId });\r\n openDeviationDetailsModal(deviationAlert.name, formTypes.edit, $scope.reportQueries, deviationAlert, $scope.deviations)\r\n .result.then(function () { });\r\n }\r\n\r\n function deleteDeviationReport(deviationReportId) {\r\n const confirmText = $translate.instant('ADMINISTRATION_DEVIATION_DIALOG_CONFIRM_DELETE');\r\n const deviationReport = _.find($scope.sortedJobs, { id: deviationReportId });\r\n\r\n if (confirm(`${confirmText} ${deviationReport.name}?`)) {\r\n deviationReportService.deleteDeviationReport(deviationReportId).then(isSuccessful => {\r\n if (isSuccessful) {\r\n $('#deviationReportsGrid').getKendoGrid().dataSource.read();\r\n }\r\n });\r\n }\r\n }\r\n\r\n function onDeviationReportRowSelected() {\r\n const selectedRows = this.select();\r\n $rootScope.selectedContainerId = this.dataItem(selectedRows[0]).id;\r\n }\r\n\r\n function openDeviationDetailsModal(title, formType, reportQueries, deviationAlert, deviations) {\r\n return $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: title,\r\n resizable: false,\r\n height: 870,\r\n width: 800,\r\n visible: false\r\n },\r\n templateUrl: 'app/administration/deviationReport/deviation-report-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'DeviationReportModalController',\r\n resolve: {\r\n currentFormType: () => formType,\r\n deviationAlert: () => deviationAlert,\r\n deviations: () => deviations,\r\n reportQueries: () => reportQueries\r\n }\r\n });\r\n }\r\n\r\n function getDaysOfWeekLocalizedString(deviationAlert) {\r\n const daysOfWeekBinaryArray = deviationAlert.daysOfWeek;\r\n if (!deviationAlert || !daysOfWeekBinaryArray || deviationAlert.recurrence == 0) return '';\r\n const daysOfWeekEnglish = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];\r\n const localizedDaysOfWeek = daysOfWeekBinaryArray.map((day, index) => {\r\n return day === 1 ? $translate.instant(('ADMINISTRATION_DEVIATION_DAYS_OF_WEEK_' + daysOfWeekEnglish[index].toUpperCase())) : null;\r\n }).filter(day => day !== null);\r\n return localizedDaysOfWeek.length ? localizedDaysOfWeek.join(', ') : '';\r\n }\r\n\r\n function getIntervalMinutesLocalizedString(deviationAlert) {\r\n if (!deviationAlert || !deviationAlert.intervalInMinutes || deviationAlert.recurrence == 1) return '';\r\n return String(deviationAlert.intervalInMinutes);\r\n }\r\n\r\n function getLocalizedDateString(date) {\r\n if (!date) return '';\r\n return moment(date).format('DD.MM.YYYY');\r\n }\r\n\r\n function getRecurrenceTypeLocalizedString(recurrenceTypeBinary) {\r\n if (!recurrenceTypeBinary && recurrenceTypeBinary != 0 && recurrenceTypeBinary != 1) return '';\r\n\r\n return deviationAlertRecurrenceTypes[Number(recurrenceTypeBinary)].LocalizedName;\r\n }\r\n\r\n function getEmailParticipantsCount(emailAddresses) {\r\n if (!emailAddresses) return '0';\r\n const arr = emailAddresses.split(';');\r\n return arr.length;\r\n }\r\n\r\n function getStatusCheckboxByStatusId(statusId) {\r\n switch (statusId) {\r\n case deviationStatuses.active.Id:\r\n return true;\r\n case deviationStatuses.inactive.Id:\r\n return false;\r\n default:\r\n return false;\r\n }\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('DeviationReportModalController', DeviationReportModalController);\r\n\r\n DeviationReportModalController.$inject = [\r\n '$q',\r\n '$scope',\r\n '$rootScope',\r\n '$windowInstance',\r\n '$translate',\r\n 'deviationReportService',\r\n 'formTypes',\r\n 'currentFormType',\r\n 'deviationAlert',\r\n 'deviations',\r\n 'deviationStatuses',\r\n 'deviationAlertRecurrenceTypes',\r\n 'userService',\r\n 'reportQueries',\r\n 'daysOfTheWeek'\r\n ];\r\n\r\n function DeviationReportModalController(\r\n $q,\r\n $scope,\r\n $rootScope,\r\n $windowInstance,\r\n $translate,\r\n deviationReportService,\r\n formTypes,\r\n currentFormType,\r\n deviationAlert,\r\n deviations,\r\n deviationStatuses,\r\n deviationAlertRecurrenceTypes,\r\n userService,\r\n reportQueries,\r\n daysOfTheWeek\r\n ) {\r\n $scope.init = init;\r\n $scope.typeChanged = typeChanged;\r\n $scope.reportQueryTypeChanged = reportQueryTypeChanged;\r\n $scope.operatorChanged = operatorChanged;\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.deleteAndClose = deleteAndClose;\r\n $scope.closeWindow = closeWindow;\r\n $scope.addEmail = addEmail;\r\n $scope.removeEmail = removeEmail;\r\n $scope.addDeviation = addDeviation;\r\n $scope.removeDeviation = removeDeviation;\r\n $scope.toggleScheduledDay = toggleScheduledDay;\r\n $scope.togglExceptionDay = togglExceptionDay;\r\n $scope.handleShowEmailAddressesSearchBox = handleShowEmailAddressesSearchBox;\r\n $scope.handleShowDeviationsSearchBox = handleShowDeviationsSearchBox;\r\n $scope.validateForm = validateForm;\r\n\r\n $scope.statuses = Object.keys(deviationStatuses)\r\n .filter(status => status !== 'invisible' && status !== 'deleted')\r\n .map(key => deviationStatuses[key]);\r\n\r\n $scope.reportTypes = [\r\n { name: $translate.instant('ADMINISTRATION_DEVIATION_DEAVIATION_BASED'), value: 0 },\r\n { name: $translate.instant('ADMINISTRATION_DEVIATION_PARAMETER_BASED'), value: 1 }\r\n ];\r\n\r\n $scope.reportStatusField = [\r\n { name: $translate.instant('REPORTS_BATTERY_VOLTAGE_CONTROLLER_TABLE_HEADER_VOLT'), value: 0 },\r\n { name: $translate.instant('STATISTICS_CONTROLLER_CHART_TEMPERATURE'), value: 1 },\r\n { name: 'Rssi', value: 2 },\r\n { name: $translate.instant('ADMINISTRATION_DEVIATION_FILL'), value: 3 },\r\n { name: 'Solenoid', value: 4 },\r\n { name: $translate.instant('ADMINISTRATION_DEVIATION_USAGE_COUNT'), value: 5 }\r\n ];\r\n\r\n $scope.reportStatusOperator = [\r\n { name: 'LessThan', value: 0, operator: '<' },\r\n { name: 'GreaterThan', value: 1, operator: '>' },\r\n { name: 'EqualTo', value: 2, operator: '=' },\r\n { name: 'NotEqualTo', value: 3, operator: '<>' },\r\n { name: 'LessThanOrEqualTo', value: 4, operator: '<=' },\r\n { name: 'GreaterThanOrEqualTo', value: 5, operator: '>=' },\r\n { name: 'IsNull', value: 6, operator: 'IS NULL' },\r\n { name: 'IsNotNull', value: 7, operator: 'IS NOT NULL' }\r\n ];\r\n\r\n \r\n $scope.recurrenceTypes = deviationAlertRecurrenceTypes;\r\n $scope.daysOfTheWeek = daysOfTheWeek;\r\n \r\n $scope.deviations = formatDeviationsForInit(deviations);\r\n $scope.deviationAlert = deviationAlert != null ? formatForInit(deviationAlert) : getAnEmptyJob();\r\n $scope.isEditMode = deviationAlert != null;\r\n\r\n $scope.deviationAlert.selectedReportType = $scope.deviationAlert.selectedReportType ? $scope.deviationAlert.selectedReportType : $scope.reportTypes[0].value\r\n \r\n $scope.getUsersPromise = userService.getUsers();\r\n $scope.emailAddresses = [];\r\n\r\n $scope.reportQueries = reportQueries;\r\n $scope.selectedType = reportQueries.find(t => t.id === $scope.deviationAlert.queryId)\r\n ?? ($scope.deviationAlert.queryId ? reportQueries[0] : null);\r\n $scope.addedDeviations = [];\r\n\r\n $scope.isPeriodRangeVisible = ($scope.deviationAlert.startDate || $scope.deviationAlert.endDate) ? true : false;\r\n\r\n $scope.validation = {\r\n name: true,\r\n status: true,\r\n queryId: true,\r\n emailAddresses: true,\r\n deviations: true,\r\n recurrence: true,\r\n startDate: true,\r\n endDate: true,\r\n\r\n //Continuous\r\n firstDailyRun: true,\r\n lastDailyRun: true,\r\n exceptions: true,\r\n\r\n //Scheduled\r\n daysOfWeek: true,\r\n runOnceADayAtTime: true,\r\n\r\n //Parameters\r\n attribute: true,\r\n operator: true,\r\n statusValue: true\r\n };\r\n\r\n $scope.emailAddressesSearchBoxOptions = {\r\n noDataTemplate: $translate.instant(\"G_NO_DATA\"),\r\n filter: 'contains',\r\n highlightFirst: true,\r\n clearButton: false,\r\n dataSource: new kendo.data.DataSource({\r\n transport: {\r\n read: readEmailAddresses\r\n }\r\n })\r\n }\r\n\r\n $scope.deviationsSearchBoxOptions = {\r\n noDataTemplate: $translate.instant(\"G_NO_DATA\"),\r\n filter: 'contains',\r\n highlightFirst: true,\r\n clearButton: false,\r\n dataTextField: 'textField',\r\n placeholder: $translate.instant('ADMINISTRATION_DEVIATION_SELECT_DEVIATION'),\r\n dataSource: new kendo.data.DataSource({\r\n transport: {\r\n read: (e) => e.success($scope.deviations)\r\n }\r\n })\r\n }\r\n\r\n //Event handlers\r\n function init() {\r\n\r\n if ($scope.deviationAlert.deviations.length) {\r\n $scope.addedDeviations = $scope.deviations.filter(deviation => deviationAlert.deviations.includes(deviation.id));\r\n }\r\n\r\n reportQueryTypeChanged($scope.deviationAlert.selectedReportType);\r\n\r\n const formEl = document.getElementById('deviation-alert-modal-form');\r\n if (formEl) {\r\n formEl.addEventListener('keydown', preventSubmittingOnEnterKey);\r\n }\r\n }\r\n\r\n function typeChanged(deviationAlertTypeId) {\r\n $scope.validation.queryId = true;\r\n $scope.selectedType = reportQueries.find(t => t.id === deviationAlertTypeId);\r\n }\r\n\r\n function operatorChanged() {\r\n $scope.validation.operator = true\r\n if ($scope.deviationAlert.selectedReportStatusOperator === 6 || $scope.deviationAlert.selectedReportStatusOperator === 7) {\r\n $scope.deviationAlert.statusValue = null;\r\n }\r\n console.log($scope.deviationAlert)\r\n }\r\n\r\n function reportQueryTypeChanged(selectedReportType) {\r\n $scope.reportQueries = reportQueries.filter(t => t.deviationReportType === selectedReportType);\r\n }\r\n\r\n function toggleScheduledDay(dayIndex) {\r\n $scope.validation.daysOfWeek = true;\r\n $scope.deviationAlert.daysOfWeek[dayIndex] = Number($scope.deviationAlert.daysOfWeek[dayIndex]) === 0 ? 1 : 0;\r\n }\r\n\r\n function togglExceptionDay(dayIndex) {\r\n $scope.validation.exceptions = true;\r\n $scope.deviationAlert.exceptions[dayIndex] = Number($scope.deviationAlert.exceptions[dayIndex]) === 0 ? 1 : 0;\r\n }\r\n\r\n function addEmail(isParametered) {\r\n const input = !isParametered ? $scope.emailAddressesSearchBox : $scope.emailAddressesSearchBox1;\r\n\r\n\r\n if (!input) return;\r\n\r\n const inputValue = input.value() ?? '';\r\n\r\n if (!inputValue.length || !input || !validateEmail(inputValue)) {\r\n input.value('');\r\n return;\r\n }\r\n if (!$scope.deviationAlert.emailAddresses) {\r\n $scope.deviationAlert.emailAddresses = [];\r\n }\r\n if (!$scope.deviationAlert.emailAddresses.includes(inputValue)) {\r\n $scope.deviationAlert.emailAddresses.push(inputValue);\r\n }\r\n\r\n $scope.validation.emailAddresses = true;\r\n\r\n input.value('');\r\n }\r\n\r\n function addDeviation() {\r\n\r\n const input = $scope.deviationsSearchBox;\r\n\r\n if (!input) return;\r\n\r\n const inputValue = input.value() ?? '';\r\n\r\n if (!inputValue.length || !input) {\r\n input.value('');\r\n return;\r\n }\r\n\r\n const deviation = $scope.deviations.find(d => d.textField === inputValue);\r\n\r\n if (!deviation) return;\r\n\r\n input.value('');\r\n\r\n const isAlreadyAdded = $scope.deviationAlert.deviations.find(d => d.id === deviation.id);\r\n\r\n if (!isAlreadyAdded && deviation) {\r\n $scope.addedDeviations.push(deviation);\r\n $scope.deviationAlert.deviations.push(deviation);\r\n $scope.validation.deviations = true;\r\n }\r\n }\r\n\r\n function removeEmail(email) {\r\n $scope.deviationAlert.emailAddresses = $scope.deviationAlert.emailAddresses.filter(e => e !== email);\r\n }\r\n\r\n function removeDeviation(deviation) {\r\n $scope.deviationAlert.deviations = $scope.deviationAlert.deviations.filter(d => d.id !== deviation.id);\r\n $scope.addedDeviations = $scope.addedDeviations.filter(d => d.id !== deviation.id);\r\n }\r\n\r\n function handleShowEmailAddressesSearchBox(isParametered) {\r\n const input = !isParametered ? $scope.emailAddressesSearchBox : $scope.emailAddressesSearchBox1;\r\n\r\n if (!input) return;\r\n\r\n input.search();\r\n }\r\n\r\n function handleShowDeviationsSearchBox() {\r\n const input = $scope.deviationsSearchBox;\r\n\r\n if (!input) return;\r\n\r\n input.search();\r\n }\r\n\r\n function deleteAndClose(event) {\r\n event.preventDefault();\r\n\r\n const confirmText = $translate.instant('ADMINISTRATION_DEVIATION_DIALOG_CONFIRM_DELETE');\r\n\r\n if (confirm(`${confirmText} ${$scope.deviationAlert.name}?`)) {\r\n deviationReportService.deleteDeviationReport($scope.deviationAlert.id)\r\n .finally(function () {\r\n $windowInstance.close();\r\n $('#deviationReportsGrid').getKendoGrid().dataSource.read();\r\n });\r\n }\r\n }\r\n\r\n function saveAndClose(event) {\r\n event.preventDefault();\r\n\r\n const isFormValidated = validateForm();\r\n\r\n if (isFormValidated) {\r\n save().finally(function (result) {\r\n $windowInstance.close(result);\r\n $('#deviationReportsGrid').getKendoGrid().dataSource.read();\r\n });\r\n }\r\n }\r\n\r\n function closeWindow(result) {\r\n const formDeviation = formatForInit(formatBeforeSave($scope.deviationAlert));\r\n const parameterDeviation = formatForInit(deviationAlert);\r\n const newDeviation = formatForInit(formatBeforeSave(getAnEmptyJob()));\r\n const editChanges = deviationAlert && !_.isEqual(formDeviation, parameterDeviation);\r\n const modificationsToNewDeviation = !deviationAlert && !_.isEqual(formDeviation, newDeviation);\r\n\r\n if (editChanges || modificationsToNewDeviation) {\r\n if (window.confirm($translate.instant('G_EXIT_CONFIRMATION'))) {\r\n $windowInstance.close(result);\r\n }\r\n } else {\r\n $windowInstance.close(result);\r\n }\r\n }\r\n\r\n //Private functions\r\n function getAnEmptyJob() {\r\n return {\r\n name: '',\r\n queryId: null,\r\n lastSuccessfullRun: null,\r\n status: ($scope.statuses && $scope.statuses[0] && $scope.statuses[0].id) || 0,\r\n emailAddresses: [],\r\n deviations: [],\r\n subject: '',\r\n body: '',\r\n sendEmptyReport: false,\r\n recurrence: null,\r\n startDate: null,\r\n endDate: null,\r\n intervalInMinutes: 15,\r\n firstDailyRun: new Date('2000-01-01T08:00:00'),\r\n lastDailyRun: new Date('2000-01-01T17:00:00'),\r\n exceptions: [0, 0, 0, 0, 0, 1, 1],\r\n daysOfWeek: [1, 1, 1, 1, 1, 0, 0],\r\n runOnceADayAtTime: new Date('2000-01-01T06:00:00'),\r\n };\r\n }\r\n\r\n function validateForm() {\r\n const dateCorrectedFirstDailyRun = new Date(`2000-01-01T${moment($scope.deviationAlert.firstDailyRun).format('HH:mm:00')}`);\r\n const dateCorrectedLastDailyRun = new Date(`2000-01-01T${moment($scope.deviationAlert.lastDailyRun).format('HH:mm:00')}`);\r\n\r\n //Values should be true if fields are valid\r\n $scope.validation = {\r\n name: !!$scope.deviationAlert.name,\r\n status:\r\n !!Number($scope.deviationAlert.status) ||\r\n Number($scope.deviationAlert.status) === 0,\r\n queryId:\r\n !!$scope.deviationAlert.queryId ||\r\n $scope.deviationAlert.queryId == 0,\r\n emailAddresses: !!$scope.deviationAlert.emailAddresses.length,\r\n deviations:\r\n !!$scope.deviationAlert.deviations.length ||\r\n $scope.deviationAlert.selectedReportType == 1,\r\n recurrence: !!$scope.deviationAlert.recurrence,\r\n startDate:\r\n (!$scope.deviationAlert.startDate &&\r\n !$scope.deviationAlert.endDate) ||\r\n ($scope.deviationAlert.startDate &&\r\n $scope.deviationAlert.endDate),\r\n endDate:\r\n (!$scope.deviationAlert.startDate &&\r\n !$scope.deviationAlert.endDate) ||\r\n ($scope.deviationAlert.startDate &&\r\n $scope.deviationAlert.endDate &&\r\n $scope.deviationAlert.startDate <\r\n $scope.deviationAlert.endDate),\r\n\r\n //Continuous\r\n firstDailyRun:\r\n $scope.deviationAlert.recurrence != 0\r\n ? true\r\n : !!$scope.deviationAlert.firstDailyRun,\r\n lastDailyRun:\r\n $scope.deviationAlert.recurrence != 0\r\n ? true\r\n : $scope.deviationAlert.lastDailyRun &&\r\n dateCorrectedLastDailyRun >\r\n dateCorrectedFirstDailyRun,\r\n exceptions:\r\n $scope.deviationAlert.recurrence != 0\r\n ? true\r\n : $scope.deviationAlert.exceptions.some(\r\n (day) => day == 0\r\n ),\r\n\r\n //Scheduled\r\n daysOfWeek:\r\n $scope.deviationAlert.recurrence != 1\r\n ? true\r\n : $scope.deviationAlert.daysOfWeek.some(\r\n (day) => day == 1\r\n ),\r\n runOnceADayAtTime:\r\n $scope.deviationAlert.recurrence != 1\r\n ? true\r\n : !!$scope.deviationAlert.runOnceADayAtTime,\r\n\r\n // Parametered\r\n attribute:\r\n !!$scope.deviationAlert.selectedReportStatusField ||\r\n $scope.deviationAlert.selectedReportStatusField >= 0 ||\r\n $scope.deviationAlert.selectedReportType == 0,\r\n operator:\r\n !!$scope.deviationAlert.selectedReportStatusOperator ||\r\n $scope.deviationAlert.selectedReportStatusOperator == 0 ||\r\n $scope.deviationAlert.selectedReportType == 0,\r\n statusValue:\r\n !!$scope.deviationAlert.statusValue ||\r\n $scope.deviationAlert.statusValue == 0 ||\r\n $scope.deviationAlert.selectedReportStatusOperator == 6 ||\r\n $scope.deviationAlert.selectedReportStatusOperatorr == 7 ||\r\n $scope.deviationAlert.selectedReportType == 0,\r\n };\r\n\r\n const result = Object.values($scope.validation).every(value => value);\r\n return result;\r\n }\r\n\r\n function readEmailAddresses(e) {\r\n $scope.getUsersPromise\r\n .then(function (users) {\r\n const emails = users.map(user => user.userName);\r\n const sortedEmails = emails.sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));\r\n e.success(sortedEmails);\r\n })\r\n .catch(function () {\r\n e.success([]);\r\n });\r\n }\r\n\r\n function preventSubmittingOnEnterKey(event) {\r\n if (event.keyCode === 13 && event.target.nodeName !== 'TEXTAREA' && event.target.nodeName !== 'BUTTON') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n function getSaveFunction(currentFormType) {\r\n if (currentFormType === formTypes.edit) {\r\n return deviationReportService.updateDeviationReport.bind(deviationReportService);\r\n }\r\n\r\n return deviationReportService.addDeviationReport.bind(deviationReportService);\r\n }\r\n\r\n function formatDeviationsForInit(deviations) {\r\n if (!deviations || !deviations.length) return [];\r\n\r\n const sortedDeviations = deviations.sort((a, b) => a.description.localeCompare(b.description));\r\n const textFieldAddedDeviations = sortedDeviations.map(deviation => ({ ...deviation, textField: `${deviation.description} (${deviation.externalId})` }));\r\n\r\n return textFieldAddedDeviations;\r\n }\r\n\r\n function formatForInit(deviationAlert) {\r\n if (!deviationAlert) return getAnEmptyJob();\r\n\r\n let statusFieldValue = deviationAlert.deviationReportParameters[0]?.field;\r\n let statusOperatorValue = deviationAlert.deviationReportParameters[0]?.operator;\r\n let statusValue = deviationAlert.deviationReportParameters[0]?.value;\r\n\r\n const formattedDeviation = {\r\n ...deviationAlert,\r\n deviations: deviationAlert.deviations\r\n ? $scope.deviations.filter((d) =>\r\n deviationAlert.deviations.includes(d.id)\r\n )\r\n : [],\r\n emailAddresses: Array.isArray(deviationAlert.emailAddresses)\r\n ? [...new Set(deviationAlert.emailAddresses)]\r\n : deviationAlert.emailAddresses.split(\";\") || [],\r\n recurrence: String(deviationAlert.recurrence),\r\n firstDailyRun: new Date(\r\n `2000-01-01T${deviationAlert.firstDailyRun}`\r\n ),\r\n lastDailyRun: new Date(\r\n `2000-01-01T${deviationAlert.lastDailyRun}`\r\n ),\r\n runOnceADayAtTime: new Date(\r\n `2000-01-01T${deviationAlert.runOnceADayAtTime}`\r\n ),\r\n daysOfWeek:\r\n deviationAlert.recurrence == 1\r\n ? deviationAlert.daysOfWeek\r\n : [1, 1, 1, 1, 1, 0, 0],\r\n exceptions:\r\n deviationAlert.recurrence == 0\r\n ? deviationAlert.exceptions\r\n : [0, 0, 0, 0, 0, 1, 1],\r\n sendEmptyReport: deviationAlert.sendEmptyReport ?? false,\r\n startDate: deviationAlert.startDate\r\n ? new Date(deviationAlert.startDate)\r\n : null,\r\n endDate: deviationAlert.endDate\r\n ? new Date(deviationAlert.endDate)\r\n : null,\r\n };\r\n\r\n if (deviationAlert.deviationReportParameters?.length > 0) {\r\n formattedDeviation.selectedReportType =\r\n deviationAlert.deviationReportParameters?.length > 0\r\n ? $scope.reportTypes[1].value\r\n : $scope.reportTypes[0].value;\r\n formattedDeviation.selectedReportStatusField = (statusFieldValue === 0 || statusFieldValue) ? statusFieldValue : null;\r\n formattedDeviation.selectedReportStatusOperator = (statusOperatorValue === 0 || statusOperatorValue) ? statusOperatorValue : null;\r\n formattedDeviation.statusValue = (statusValue === 0 || statusValue) ? statusValue : null;\r\n } \r\n\r\n return formattedDeviation;\r\n }\r\n\r\n function formatBeforeSave(deviationAlert) {\r\n const formattedDeviation = {\r\n ...deviationAlert,\r\n deviations: deviationAlert.deviations.map((d) => d.id),\r\n recurrence: Number(deviationAlert.recurrence),\r\n status: Number(deviationAlert.status),\r\n emailAddresses: deviationAlert.emailAddresses.join(\";\"),\r\n firstDailyRun:\r\n deviationAlert.firstDailyRun &&\r\n moment(deviationAlert.firstDailyRun).format(\"HH:mm:00\"),\r\n lastDailyRun:\r\n deviationAlert.lastDailyRun &&\r\n moment(deviationAlert.lastDailyRun).format(\"HH:mm:00\"),\r\n intervalInMinutes: Number(deviationAlert.intervalInMinutes),\r\n runOnceADayAtTime:\r\n deviationAlert.runOnceADayAtTime &&\r\n moment(deviationAlert.runOnceADayAtTime).format(\"HH:mm:00\"), \r\n deviationReportParameters: [],\r\n };\r\n if (deviationAlert.selectedReportType) {\r\n formattedDeviation.deviationReportParameters = [\r\n {\r\n field: deviationAlert.selectedReportStatusField,\r\n operator: deviationAlert.selectedReportStatusOperator,\r\n value: deviationAlert.statusValue,\r\n },\r\n ];\r\n }\r\n\r\n return formattedDeviation;\r\n }\r\n\r\n function save() {\r\n const deferred = $q.defer();\r\n\r\n $rootScope.$broadcast('showGlobalBusyIndicator', 'deviationIndicator');\r\n\r\n const saveFunction = getSaveFunction(currentFormType);\r\n const formattedDeviation = formatBeforeSave($scope.deviationAlert);\r\n\r\n saveFunction(formattedDeviation)\r\n .then(result => deferred.resolve(result),\r\n () => deferred.reject())\r\n .finally(() => $rootScope.$broadcast('hideBusyIndicator', 'deviationIndicator'));\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function validateEmail(email) {\r\n return String(email)\r\n .toLowerCase()\r\n .match(\r\n /^(([^<>()[\\]\\\\.,;:\\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,}))$/\r\n );\r\n };\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('deviationReportService', deviationReportService);\r\n\r\n deviationReportService.$inject = ['$http'];\r\n\r\n function deviationReportService($http) {\r\n return {\r\n getDeviationReports,\r\n getDeviations,\r\n getDeviationReportQueries,\r\n addDeviationReport,\r\n updateDeviationReport,\r\n deleteDeviationReport\r\n };\r\n\r\n function getDeviations() {\r\n return $http.get(\"api/deviations\")\r\n .then(result => result.data);\r\n }\r\n\r\n function getDeviationReportQueries() {\r\n return $http.get(\"api/deviation-reports/queries\")\r\n .then(result => result.data);\r\n }\r\n\r\n function getDeviationReports() {\r\n return $http.get(\"api/deviation-reports\")\r\n .then(result => result.data);\r\n }\r\n\r\n function addDeviationReport(deviationReport) {\r\n return $http.post(\"api/deviation-reports\", deviationReport)\r\n .then(result => result.data);\r\n }\r\n\r\n function updateDeviationReport(deviationReport) {\r\n return $http.put(\"api/deviation-reports\", deviationReport)\r\n .then(result => result.data);\r\n }\r\n\r\n function deleteDeviationReport(deviationReportId) {\r\n return $http.delete(\"api/deviation-reports/\" + deviationReportId)\r\n .then(result => result.data);\r\n }\r\n }\r\n})();\r\n","angular\r\n .module('UndergroundWebApp')\r\n\r\n /**\r\n * @ngdoc directive\r\n * @name app.directive:numbersOnly\r\n * @restrict 'A'\r\n * @element ANY\r\n * @description\r\n * directive to only allows numbers\r\n */\r\n .directive('isDecimal', function ($window) {\r\n return {\r\n require: 'ngModel',\r\n link: function (scope, element, attr, ngModelCtrl) {\r\n function fromUser(text) {\r\n if (text) {\r\n var transformedInput = text.replace(/[^0-9.]/g, '');\r\n if(transformedInput){\r\n var lst = transformedInput.split('.');\r\n var isDecimal;\r\n var number, numberDigits;\r\n var decimal, decimalDigits;\r\n\r\n if(lst.length === 2){\r\n isDecimal = true;\r\n number = lst[0]\r\n numberDigits = number.length;\r\n decimal = lst[1];\r\n decimalDigits = decimal.length;\r\n }else if(lst.length === 1){\r\n isDecimal = false;\r\n number = lst[0]\r\n numberDigits = number.length;\r\n }\r\n }\r\n \r\n if (transformedInput !== text) {\r\n ngModelCtrl.$setViewValue(transformedInput);\r\n ngModelCtrl.$render();\r\n }\r\n\r\n return transformedInput;\r\n }\r\n return undefined;\r\n } \r\n ngModelCtrl.$parsers.push(fromUser);\r\n }\r\n };\r\n });","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ExternalLinksController', ExternalLinksController);\r\n\r\n ExternalLinksController.$inject = [\r\n '$rootScope',\r\n '$scope',\r\n '$kWindow',\r\n 'externalLinkService',\r\n 'formTypes',\r\n '$translate'\r\n ];\r\n\r\n function ExternalLinksController(\r\n $rootScope,\r\n $scope,\r\n $kWindow,\r\n externalLinkService,\r\n formTypes,\r\n $translate,\r\n ) {\r\n $scope.openNewExternalLink = openNewExternalLink;\r\n $scope.openUpdateExternalLink = openUpdateExternalLink;\r\n $scope.deleteExternalLink = deleteExternalLink;\r\n\r\n $scope.externalLinksGridOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readExternalLinks\r\n },\r\n sort: { field: 'description', dir: 'asc' },\r\n pageSize: 70,\r\n },\r\n sortable: true,\r\n filterable: true,\r\n resizable: true,\r\n noRecords: true,\r\n messages: {\r\n noRecords: 'Ingen treff'\r\n },\r\n scrollable: {\r\n virtual: true\r\n },\r\n columns: [\r\n {\r\n field: 'description',\r\n title: $translate.instant('G_NAME'),\r\n width: 140,\r\n },\r\n {\r\n field: 'externalLinkUrl',\r\n title: $translate.instant('ADMINISTRATION_EXTERNAL_LINKS_TABLE_HEADER_URL'),\r\n },\r\n {\r\n field: 'fontAwesomeCode',\r\n title: $translate.instant('ADMINISTRATION_EXTERNAL_LINKS_TABLE_HEADER_ICON'),\r\n width: 120,\r\n },\r\n {\r\n field: 'edit',\r\n filterable: false,\r\n sortable: false,\r\n groupable: false,\r\n title: ' ',\r\n width: 80,\r\n template: `` +\r\n ``\r\n }\r\n ],\r\n };\r\n\r\n //Event handlers\r\n function openNewExternalLink() {\r\n openExternalLinkModal($translate.instant(\"ADMINISTRATION_EXTERNAL_LINKS_NEW_EXTERNAL_LINK\"), formTypes.add)\r\n .result.then((result) => {\r\n if (result) {\r\n $scope.externalLinksGrid.dataSource.add(result);\r\n $rootScope.externalLinks = $scope.externalLinksGrid.dataSource.data();\r\n }\r\n });\r\n }\r\n\r\n function openUpdateExternalLink(externalLink) {\r\n openExternalLinkModal($translate.instant(\"ADMINISTRATION_EXTERNAL_LINKS_EDIT_LINK\"), formTypes.edit, externalLink)\r\n .result.then((result) => {\r\n if (result) {\r\n removeExternalLinkFromGrid(result.id);\r\n $scope.externalLinksGrid.dataSource.add(result);\r\n $rootScope.externalLinks = $scope.externalLinksGrid.dataSource.data();\r\n }\r\n });\r\n }\r\n\r\n function deleteExternalLink(externalLink) {\r\n let confirmText = $translate.instant(\"ADMINISTRATION_EXTERNAL_LINKS_DIALOG_CONFIRM_DELETE\");\r\n\r\n if (confirm(`${confirmText} ${externalLink.description}?`)) {\r\n externalLinkService.deleteExternalLink(externalLink.id).then((deletedLink) => {\r\n if (deletedLink) {\r\n removeExternalLinkFromGrid(deletedLink.id);\r\n $rootScope.externalLinks = $scope.externalLinksGrid.dataSource.data();\r\n }\r\n });\r\n }\r\n }\r\n\r\n //Data loading\r\n function readExternalLinks(e) {\r\n $scope.showBusyIndicator();\r\n externalLinkService.getExternalLinks().then((externalLinks) => {\r\n $rootScope.externalLinks = externalLinks;\r\n e.success(externalLinks);\r\n }).finally(() => {\r\n $scope.hideBusyIndicator();\r\n });\r\n }\r\n\r\n //Private functions\r\n function removeExternalLinkFromGrid(idToDelete) {\r\n const links = $scope.externalLinksGrid.dataSource.data();\r\n const linkToDelete = links.find(l => l.id === idToDelete);\r\n $scope.externalLinksGrid.dataSource.remove(linkToDelete);\r\n }\r\n\r\n function openExternalLinkModal(title, formType, externalLink) {\r\n return $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: title,\r\n resizable: false,\r\n height: 300,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/administration/externalLinks/external-link-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base-allow-overflow.html',\r\n controller: 'ExternalLinkDetailsModalController',\r\n resolve: {\r\n currentFormType: () => formType,\r\n externalLink: () => externalLink,\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ExternalLinkDetailsModalController', ExternalLinkDetailsModalController);\r\n\r\n ExternalLinkDetailsModalController.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n '$windowInstance',\r\n 'externalLinkService',\r\n 'formTypes',\r\n 'currentFormType',\r\n 'externalLink',\r\n ];\r\n\r\n function ExternalLinkDetailsModalController(\r\n $scope,\r\n $rootScope,\r\n $windowInstance,\r\n externalLinkService,\r\n formTypes,\r\n currentFormType,\r\n externalLink,\r\n ) {\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.closeWindow = closeWindow;\r\n\r\n $scope.externalLink = externalLink != null\r\n ? { ...externalLink }\r\n : {};\r\n\r\n function saveAndClose(event) {\r\n event.preventDefault();\r\n\r\n if ($scope.validator.validate()) {\r\n save().then((result) => {\r\n $windowInstance.close(result);\r\n });\r\n }\r\n }\r\n\r\n function closeWindow(event) {\r\n event.preventDefault();\r\n $windowInstance.close(false);\r\n }\r\n\r\n function save() {\r\n $rootScope.$broadcast('showGlobalBusyIndicator', 'externalLinkIndicator');\r\n\r\n const savePromise = currentFormType === formTypes.edit\r\n ? externalLinkService.updateExternalLink($scope.externalLink)\r\n : externalLinkService.createExternalLink($scope.externalLink);\r\n\r\n return savePromise\r\n .finally(() => $rootScope.$broadcast('hideBusyIndicator', 'externalLinkIndicator'));\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('externalLinkService', externalLinkService);\r\n\r\n externalLinkService.$inject = ['$http'];\r\n\r\n function externalLinkService($http) {\r\n return {\r\n getExternalLinks,\r\n updateExternalLink,\r\n createExternalLink,\r\n deleteExternalLink,\r\n };\r\n\r\n function getExternalLinks() {\r\n return $http.get('/api/externalLink')\r\n .then(result => result.data);\r\n }\r\n\r\n function updateExternalLink(externalLink) {\r\n return $http.put('/api/externalLink', externalLink)\r\n .then(result => result.data);\r\n }\r\n\r\n function createExternalLink(externalLink) {\r\n return $http.post('/api/externalLink', externalLink)\r\n .then(result => result.data);\r\n }\r\n\r\n function deleteExternalLink(externalLinkId) {\r\n return $http.delete(`/api/externalLink/${externalLinkId}`)\r\n .then(result => result.data);\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('FractionDetailsModalController', FractionDetailsModalController);\r\n\r\n FractionDetailsModalController.$inject = [\r\n '$q',\r\n '$scope',\r\n '$rootScope',\r\n '$windowInstance',\r\n 'fractionsService',\r\n 'formTypes',\r\n 'currentFormType',\r\n 'fraction'\r\n ];\r\n\r\n function FractionDetailsModalController(\r\n $q,\r\n $scope,\r\n $rootScope,\r\n $windowInstance,\r\n fractionsService,\r\n formTypes,\r\n currentFormType,\r\n fraction\r\n ) {\r\n\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.closeWindow = closeWindow;\r\n\r\n $scope.fraction = fraction != null ? { ...fraction } : {};\r\n\r\n //Event handlers\r\n function saveAndClose(event) {\r\n event.preventDefault();\r\n\r\n if ($scope.validator.validate()) {\r\n save().then(function (result) {\r\n $windowInstance.close(result);\r\n $('#fractionsGrid').getKendoGrid().dataSource.read();\r\n });\r\n }\r\n }\r\n\r\n function closeWindow(result) {\r\n $windowInstance.close(result);\r\n }\r\n\r\n //Private functions\r\n function getSaveFunction(currentFormType) {\r\n if (currentFormType === formTypes.edit) {\r\n return fractionsService.updateFraction.bind(fractionsService);\r\n }\r\n\r\n return fractionsService.addFraction.bind(fractionsService);\r\n }\r\n\r\n function save() {\r\n var deferred = $q.defer();\r\n \r\n $rootScope.$broadcast('showGlobalBusyIndicator', 'fractionIndicator');\r\n\r\n var saveFunction = getSaveFunction(currentFormType);\r\n\r\n saveFunction($scope.fraction)\r\n .then(result => deferred.resolve(result),\r\n () => deferred.reject())\r\n .finally(() => $rootScope.$broadcast('hideBusyIndicator', 'fractionIndicator'));\r\n\r\n return deferred.promise;\r\n }\r\n\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('FractionsController', FractionsController);\r\n\r\n FractionsController.$inject = ['$scope', '$rootScope', '$kWindow', 'fractionsService', 'formTypes', 'fractionStatuses', 'filterStateService', '$translate'];\r\n\r\n function FractionsController($scope, $rootScope, $kWindow, fractionsService, formTypes, fractionStatuses, filterStateService, $translate) {\r\n $scope.sortedFractions = [];\r\n $scope.openNewFraction = openNewFraction;\r\n $scope.deleteFraction = deleteFraction;\r\n $scope.openUpdateFraction = openUpdateFraction;\r\n\r\n $scope.fractionOverviewGridOptions = {\r\n dataSource: new kendo.data.DataSource({\r\n transport: {\r\n read: readFractions\r\n },\r\n pageSize: 70,\r\n sort: filterStateService.getSortFromQueryString(),\r\n filter: filterStateService.getFilterFromQueryString(),\r\n }),\r\n columns: [\r\n { \r\n field: 'externalIdNumber', \r\n title: $translate.instant('G_NUMBER'),\r\n width: '120px' \r\n },\r\n { \r\n field: 'name', \r\n title: $translate.instant('G_NAME')\r\n },\r\n {\r\n field: 'edit',\r\n filterable: false,\r\n sortable: false,\r\n groupable: false,\r\n title: ' ',\r\n width: '80px',\r\n template: '' +\r\n ''\r\n }\r\n ],\r\n scrollable: {\r\n virtual: true\r\n },\r\n sortable: true,\r\n filterable: true,\r\n noRecords: true,\r\n selectable: false,\r\n change: onFractionRowSelected,\r\n sort: filterStateService.storeGridSortInQueryString,\r\n filter: filterStateService.storeGridFilterInQueryString,\r\n };\r\n\r\n function readFractions(e) {\r\n $scope.showBusyIndicator();\r\n fractionsService.getFractions().then(function (fractions) {\r\n extFractions(fractions);\r\n $scope.sortedFractions = _.chain(fractions)\r\n .filter(f => f.status === fractionStatuses.active.Id)\r\n .sortBy(f => f.name.toLowerCase())\r\n .value();\r\n $scope.hideBusyIndicator();\r\n e.success($scope.sortedFractions);\r\n }, function () {\r\n $scope.hideBusyIndicator();\r\n e.success([]);\r\n });\r\n }\r\n function extFractions(fractions) {\r\n _.forEach(fractions, f => f.externalIdNumber = Number(f.externalId));\r\n }\r\n function openNewFraction() {\r\n openFractionModal($translate.instant('ADMINISTRATION_FRACTION_NEW_FRACTION'), formTypes.add)\r\n .result.then(function () { });\r\n }\r\n\r\n function openUpdateFraction(dataItem) {\r\n openFractionModal($translate.instant('ADMINISTRATION_FRACTION_FRACTION'), formTypes.edit, dataItem)\r\n .result.then(function () { });\r\n }\r\n\r\n function deleteFraction(dataItem) {\r\n let confirmText = $translate.instant('ADMINISTRATION_FRACTION_DIALOG_CONFIRM_DELETE');\r\n\r\n if (confirm(`${confirmText} ${dataItem.name}?`)) {\r\n dataItem.status = fractionStatuses.deleted.Id;\r\n fractionsService.updateFraction(dataItem).then(() => {\r\n $('#fractionsGrid').getKendoGrid().dataSource.read();\r\n });\r\n }\r\n }\r\n\r\n function onFractionRowSelected() {\r\n var selectedRows = this.select();\r\n $rootScope.selectedContainerId = this.dataItem(selectedRows[0]).id;\r\n }\r\n\r\n function openFractionModal(title, formType, fraction) {\r\n return $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: title,\r\n resizable: false,\r\n height: 210,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/administration/fraction/fraction-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'FractionDetailsModalController',\r\n resolve: {\r\n currentFormType: () => formType,\r\n fraction: () => fraction\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('fractionsService', fractionsService);\r\n\r\n fractionsService.$inject = ['$http'];\r\n\r\n function fractionsService($http) {\r\n return {\r\n getFractions,\r\n addFraction,\r\n updateFraction,\r\n };\r\n\r\n function getFractions() {\r\n return $http.get(\"api/fractions\")\r\n .then(result => result.data);\r\n }\r\n\r\n function addFraction(fraction) {\r\n return $http.post(\"api/fractions\", fraction)\r\n .then(result => result.data);\r\n }\r\n\r\n function updateFraction(fraction) {\r\n return $http.put(\"api/fractions\", fraction)\r\n .then(result => result.data);\r\n }\r\n }\r\n})();\r\n","(function() {\r\n\r\n angular.module('UndergroundWebApp').factory('areaService', areaService);\r\n\r\n areaService.$inject = ['$http'];\r\n\r\n function areaService($http) {\r\n return {\r\n getAreas\r\n };\r\n\r\n function getAreas() {\r\n return $http.get('api/area')\r\n .then(result => result.data);\r\n }\r\n }\r\n\r\n\r\n}());\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('UserAdministrationController', UserAdministrationController);\r\n\r\n UserAdministrationController.$inject = [\r\n '$rootScope',\r\n '$scope',\r\n '$kWindow',\r\n 'userService',\r\n 'formTypes',\r\n 'filterStateService',\r\n '$translate'\r\n ];\r\n\r\n function UserAdministrationController(\r\n $rootScope,\r\n $scope,\r\n $kWindow,\r\n userService,\r\n formTypes,\r\n filterStateService,\r\n $translate\r\n ) {\r\n $scope.userDetailsModalHeight = $scope.isShop2WinModuleEnabled ? 600 : 300;\r\n $scope.sortedUsers = [];\r\n $scope.openNewUser = openNewUser;\r\n $scope.openUpdateUser = openUpdateUser;\r\n\r\n $scope.userOverviewGridOptions = {\r\n dataSource: new kendo.data.DataSource({\r\n transport: {\r\n read: readUsers\r\n },\r\n pageSize: 70,\r\n sort: filterStateService.getSortFromQueryString(),\r\n filter: filterStateService.getFilterFromQueryString(),\r\n }),\r\n columns: [\r\n { \r\n field: 'userName', \r\n title: $translate.instant(\"ADMINISTRATION_USERS_USERNAME\")\r\n },\r\n { \r\n field: 'groupsText', \r\n title: $translate.instant(\"ADMINISTRATION_USERS_GROUPS\")\r\n },\r\n {\r\n field: 'edit',\r\n filterable: false,\r\n sortable: false,\r\n groupable: false,\r\n title: ' ',\r\n width: '50px',\r\n template: ''\r\n }\r\n ],\r\n scrollable: {\r\n virtual: true\r\n },\r\n sortable: true,\r\n filterable: true,\r\n noRecords: true,\r\n groupable: true,\r\n selectable: false,\r\n change: onUserRowSelected,\r\n sort: filterStateService.storeGridSortInQueryString,\r\n filter: filterStateService.storeGridFilterInQueryString,\r\n };\r\n\r\n function readUsers(e) {\r\n $scope.showBusyIndicator();\r\n userService.getUsers().then(function (users) {\r\n var unsortedUsers = _.forEach(users, extendUser);\r\n $scope.sortedUsers = unsortedUsers.sort(function (a, b) {\r\n return (a.userName.toLowerCase() < b.userName.toLowerCase() ? -1 : (a.userName.toLowerCase() > b.userName.toLowerCase() ? 1 : 0));\r\n });\r\n e.success($scope.sortedUsers);\r\n //add empty array on failure\r\n $scope.hideBusyIndicator();\r\n }, function () {\r\n $scope.hideBusyIndicator();\r\n e.success([]);\r\n });\r\n }\r\n\r\n //Event handlers\r\n function openNewUser() {\r\n $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant(\"ADMINISTRATION_USERS_NEW_USER\"),\r\n resizable: false,\r\n height: $scope.userDetailsModalHeight,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/administration/user/user-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'UserDetailsModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.add;\r\n },\r\n user: function () {\r\n return null;\r\n },\r\n allUsers: function () {\r\n return $scope.sortedUsers;\r\n }\r\n\r\n }\r\n });\r\n }\r\n\r\n function openUpdateUser(dataItem) {\r\n $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant(\"ADMINISTRATION_USERS_USER\"),\r\n resizable: false,\r\n height: $scope.userDetailsModalHeight,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/administration/user/user-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'UserDetailsModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.edit;\r\n },\r\n user: function () {\r\n return dataItem;\r\n },\r\n allUsers: function () {\r\n return $scope.sortedUsers;\r\n }\r\n }\r\n });\r\n }\r\n\r\n function onUserRowSelected() {\r\n var selectedRows = this.select();\r\n $rootScope.selectedContainerId = this.dataItem(selectedRows[0]).id;\r\n }\r\n\r\n //Private functions\r\n function extendUser(user) {\r\n user.groupsText = _.join(_.map(user.authTypes, 'groupName'), ', ');\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('UserDetailsModalController', UserDetailsModalController);\r\n\r\n UserDetailsModalController.$inject = [\r\n '$q',\r\n '$scope',\r\n '$rootScope',\r\n '$timeout',\r\n '$windowInstance',\r\n 'userService',\r\n 'authService',\r\n 'areaService',\r\n 'formTypes',\r\n 'currentFormType',\r\n 'user',\r\n 'allUsers',\r\n 'fallbackErrorMessageText',\r\n '$translate'\r\n ];\r\n\r\n function UserDetailsModalController($q,\r\n $scope,\r\n $rootScope,\r\n $timeout,\r\n $windowInstance,\r\n userService,\r\n authService,\r\n areaService,\r\n formTypes,\r\n currentFormType,\r\n user,\r\n allUsers,\r\n fallbackErrorMessageText,\r\n $translate\r\n ) {\r\n $scope.isEdit = currentFormType === formTypes.edit;\r\n $scope.auth0UserId = null;\r\n $scope.userName = '';\r\n $scope.sendPasswordChange = false;\r\n $scope.area = '';\r\n\r\n $scope.userNameValid = true;\r\n $scope.isEmailFormatValid = true;\r\n\r\n $scope.authTypes = [];\r\n $scope.selectedAuthTypes = [];\r\n $scope.addedAreas = [];\r\n\r\n $scope.areaOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readAreas\r\n }\r\n },\r\n dataTextField: 'areaName',\r\n dataValueField: 'areaName'\r\n };\r\n\r\n //Public functions\r\n $scope.addArea = addArea;\r\n $scope.removeArea = removeArea;\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.closeWindow = closeWindow;\r\n\r\n $timeout(250).then(initController);\r\n\r\n function initController() {\r\n readAuthTypes();\r\n\r\n if ($scope.isEdit) {\r\n $scope.auth0UserId = user.auth0UserId;\r\n $scope.userId = user.userId;\r\n $scope.userName = user.userName;\r\n $scope.selectedAuthTypes = user.authTypes;\r\n $scope.addedAreas = _.map(user.areas, 'areaName');\r\n }\r\n }\r\n\r\n //Public functions\r\n function addArea() {\r\n event.preventDefault();\r\n var p = _.indexOf($scope.addedAreas, $scope.area);\r\n if (p < 0) {\r\n $scope.addedAreas.push($scope.area);\r\n }\r\n }\r\n\r\n function removeArea(a) {\r\n var index = $scope.addedAreas.indexOf(a);\r\n if (index > -1) {\r\n $scope.addedAreas.splice(index, 1);\r\n }\r\n }\r\n\r\n function saveAndClose() {\r\n save().then(function (result) {\r\n $windowInstance.close(result);\r\n $('#userOverviewGrid').getKendoGrid().dataSource.read();\r\n });\r\n }\r\n\r\n function closeWindow(result) {\r\n event.preventDefault();\r\n $windowInstance.close(result);\r\n }\r\n\r\n function save() {\r\n event.preventDefault();\r\n\r\n let deferred = $q.defer();\r\n let areasValid = validateAtLeastOneArea();\r\n\r\n $scope.userNameValid = validateUserName();\r\n $scope.isEmailFormatValid = validateEmailFormat($scope.userName);\r\n\r\n if ($scope.validator.validate()\r\n && (!$scope.isShop2WinModuleEnabled || areasValid)\r\n && $scope.userNameValid\r\n && $scope.isEmailFormatValid) {\r\n\r\n $rootScope.$broadcast('showGlobalBusyIndicator', 'userIndicator');\r\n\r\n var user = getUserData();\r\n if (currentFormType === formTypes.edit) {\r\n userService.updateUser(user).then(function (result) {\r\n deferred.resolve(result);\r\n $rootScope.$broadcast('hideBusyIndicator', 'userIndicator');\r\n }, function () {\r\n deferred.reject();\r\n $rootScope.$broadcast('hideBusyIndicator', 'userIndicator');\r\n });\r\n }\r\n else {\r\n userService.addUser(user).then(function (result) {\r\n deferred.resolve(result);\r\n $rootScope.$broadcast('hideBusyIndicator', 'userIndicator');\r\n }, function () {\r\n deferred.reject();\r\n $rootScope.$broadcast('hideBusyIndicator', 'userIndicator');\r\n });\r\n }\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n //Data retrieval\r\n function readAuthTypes(e) {\r\n authService.getAuthGroups().then(function (authTypes) {\r\n $scope.authTypes = authTypes;\r\n //filter the list of areas for the ones the user has\r\n if ($scope.authTypes && currentFormType === formTypes.edit) {\r\n $scope.selectedAuthTypes = _.filter($scope.authTypes, function (type) {\r\n return _.find($scope.selectedAuthTypes, ['groupId', type.groupId]);\r\n });\r\n }\r\n });\r\n }\r\n\r\n function readAreas(e) {\r\n if (!$scope.isShop2WinModuleEnabled) return [];\r\n\r\n areaService.getAreas().then(function (areas) {\r\n $scope.AllAreas = areas;\r\n e.success(areas);\r\n }, function () {\r\n e.success([]);\r\n });\r\n }\r\n\r\n //Helper functions\r\n function getUserData() {\r\n var selectedAreas = _.filter($scope.AllAreas, function (area) {\r\n return _.indexOf($scope.addedAreas, area.areaName) > -1;\r\n });\r\n\r\n var userData = {\r\n UserId: $scope.userId,\r\n Auth0UserId: $scope.auth0UserId,\r\n UserName: $scope.isEdit ? $scope.userName : $scope.userName.toLowerCase(),\r\n SendPasswordChange: $scope.sendPasswordChange,\r\n AuthTypes: $scope.selectedAuthTypes,\r\n Areas: selectedAreas\r\n };\r\n\r\n return userData;\r\n }\r\n\r\n function validateUserName() {\r\n var matchUsers;\r\n if (currentFormType === formTypes.edit) {\r\n //can edit own name\r\n matchUsers = _.filter(allUsers, ['userName', $scope.userName]);\r\n if (matchUsers) {\r\n if (matchUsers.length === 1 && matchUsers[0].userId == user.userId) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return true;\r\n } else {\r\n //only can add user once\r\n matchUsers = _.filter(allUsers, ['userName', $scope.userName]);\r\n if (matchUsers.length) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n }\r\n\r\n function validateAtLeastOneArea() {\r\n if ($scope.addedAreas.length > 0) {\r\n $scope.showAtleastOneAreaWarn = false;\r\n return true;\r\n }\r\n else {\r\n $scope.showAtleastOneAreaWarn = true;\r\n return false;\r\n }\r\n }\r\n\r\n function validateEmailFormat(email) {\r\n let emailRegexp = /^(([^<>()\\[\\]\\\\.,;:\\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,}))$/;\r\n return emailRegexp.test(email);\r\n }\r\n }\r\n})();\r\n","(function () {\r\n\r\n angular.module('UndergroundWebApp').factory('userService', userService);\r\n\r\n userService.$inject = ['$http'];\r\n\r\n function userService($http) {\r\n return {\r\n addUser,\r\n getUsers,\r\n updateUser\r\n };\r\n\r\n function addUser(user) {\r\n return $http.post('api/user/', user)\r\n .then(result => result.data);\r\n }\r\n\r\n function getUsers() {\r\n return $http.get('api/user')\r\n .then(result => result.data);\r\n }\r\n\r\n function updateUser(user) {\r\n return $http.put('api/user/', user)\r\n .then(result => result.data);\r\n }\r\n }\r\n}());\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('VehicleDetailsModalController', VehicleDetailsModalController);\r\n\r\n VehicleDetailsModalController.$inject = [\r\n '$q',\r\n '$scope',\r\n '$rootScope',\r\n '$windowInstance',\r\n 'vehicleService',\r\n 'formTypes',\r\n 'currentFormType',\r\n 'vehicle',\r\n 'fuelTypes',\r\n ];\r\n\r\n function VehicleDetailsModalController(\r\n $q,\r\n $scope,\r\n $rootScope,\r\n $windowInstance,\r\n vehicleService,\r\n formTypes,\r\n currentFormType,\r\n vehicle,\r\n fuelTypes,\r\n ) {\r\n $scope.fuelTypes = fuelTypes;\r\n\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.closeWindow = closeWindow;\r\n\r\n $scope.vehicle = vehicle != null\r\n ? { ...vehicle }\r\n : { fuelType: 0 };\r\n\r\n function saveAndClose(event) {\r\n event.preventDefault();\r\n\r\n if ($scope.validator.validate()) {\r\n save().then((result) => {\r\n $windowInstance.close(result);\r\n });\r\n }\r\n }\r\n\r\n function closeWindow(event) {\r\n event.preventDefault();\r\n $windowInstance.close(false);\r\n }\r\n\r\n function save() {\r\n $rootScope.$broadcast('showGlobalBusyIndicator', 'vehicleIndicator');\r\n\r\n const vehiclePromise = currentFormType === formTypes.edit\r\n ? vehicleService.updateVehicle($scope.vehicle)\r\n : vehicleService.createVehicle($scope.vehicle);\r\n let savePromise = vehiclePromise;\r\n\r\n if ($scope.vehicleImage != null) {\r\n const imagePromise = vehiclePromise.then((vehicle) => {\r\n return vehicleService.addImage(vehicle.id, $scope.vehicleImage);\r\n });\r\n savePromise = $q.all([vehiclePromise, imagePromise])\r\n .then(([vehicle]) => vehicle);\r\n }\r\n\r\n return savePromise\r\n .finally(() => $rootScope.$broadcast('hideBusyIndicator', 'vehicleIndicator'));\r\n }\r\n\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('VehiclesController', VehiclesController);\r\n\r\n VehiclesController.$inject = [\r\n '$scope',\r\n '$kWindow',\r\n 'vehicleService',\r\n 'formTypes',\r\n 'fuelTypes',\r\n 'filterStateService',\r\n 'kendoGridUtility',\r\n 'mediaUtility',\r\n '$translate'\r\n ];\r\n\r\n function VehiclesController(\r\n $scope,\r\n $kWindow,\r\n vehicleService,\r\n formTypes,\r\n fuelTypes,\r\n filterStateService,\r\n kendoGridUtility,\r\n mediaUtility,\r\n $translate,\r\n ) {\r\n $scope.sortedVehicles = [];\r\n $scope.openNewVehicle = openNewVehicle;\r\n $scope.deleteVehicle = deleteVehicle;\r\n $scope.openUpdateVehicle = openUpdateVehicle;\r\n $scope.openMediaModal = openMediaModal,\r\n\r\n $scope.vehicleOverviewGridOptions = {\r\n dataSource: new kendo.data.DataSource({\r\n transport: {\r\n read: readVehicles\r\n },\r\n pageSize: 70,\r\n sort: filterStateService.getSortFromQueryString({\r\n field: 'name',\r\n dir: 'asc'\r\n }),\r\n filter: filterStateService.getFilterFromQueryString(),\r\n }),\r\n columns: [\r\n { \r\n field: 'name', \r\n title: $translate.instant('G_NAME'),\r\n width: 140 \r\n },\r\n { \r\n field: 'externalId', \r\n title: $translate.instant('ADMINISTRATION_VEHICLE_TABLE_HEADER_EXTERNAL_ID'),\r\n width: 100 \r\n },\r\n { \r\n field: 'brand', \r\n title: $translate.instant('ADMINISTRATION_VEHICLE_TABLE_HEADER_BRAND'),\r\n width: 90\r\n },\r\n { \r\n field: 'maxLoadTons', \r\n title: $translate.instant('ADMINISTRATION_VEHICLE_TABLE_HEADER_MAX_LOAD_TONS'),\r\n width: 146 \r\n },\r\n { \r\n field: 'compressionRate', \r\n title: $translate.instant('ADMINISTRATION_VEHICLE_TABLE_HEADER_COMPRESSION_RATE'),\r\n width: 120 \r\n },\r\n { \r\n field: 'fuelType', \r\n title: $translate.instant('ADMINISTRATION_VEHICLE_TABLE_HEADER_FUEL_TYPE'),\r\n template: getFuelType, \r\n width: 120 \r\n },\r\n { \r\n field: \r\n 'hasWeight', \r\n title: $translate.instant('ADMINISTRATION_VEHICLE_TABLE_HEADER_HAS_WEIGHT'),\r\n template: kendoGridUtility.checkBoxColumnTemplate('hasWeight'), \r\n width: 100 \r\n },\r\n {\r\n field: 'edit',\r\n filterable: false,\r\n sortable: false,\r\n groupable: false,\r\n title: ' ',\r\n width: 120,\r\n template: `` +\r\n `` +\r\n ``\r\n }\r\n ],\r\n scrollable: {\r\n virtual: true\r\n },\r\n sortable: true,\r\n filterable: true, noRecords: {\r\n template: $translate.instant('ADMINISTRATION_VEHICLE_NO_VEHICLE'),\r\n },\r\n selectable: false,\r\n sort: filterStateService.storeGridSortInQueryString,\r\n filter: filterStateService.storeGridFilterInQueryString\r\n };\r\n\r\n function getFuelType(vehicle) {\r\n const fuelType = fuelTypes.find(f => f.id === vehicle.fuelType);\r\n return fuelType && fuelType.name;\r\n }\r\n\r\n function readVehicles(e) {\r\n $scope.showBusyIndicator();\r\n vehicleService.getVehicles().then((vehicles) => {\r\n e.success(vehicles);\r\n }).finally(() => {\r\n $scope.hideBusyIndicator();\r\n });\r\n }\r\n\r\n function openNewVehicle() {\r\n openVehicleModal($translate.instant('ADMINISTRATION_VEHICLE_NEW_VEHICLE'), formTypes.add)\r\n .result.then((result) => {\r\n if (result) {\r\n $scope.vehicleOverviewGrid.dataSource.read();\r\n }\r\n });\r\n }\r\n\r\n function openUpdateVehicle(dataItem) {\r\n openVehicleModal($translate.instant('ADMINISTRATION_VEHICLE_VEHICLE'), formTypes.edit, dataItem)\r\n .result.then((result) => {\r\n if (result) {\r\n $scope.vehicleOverviewGrid.dataSource.read();\r\n }\r\n });\r\n }\r\n\r\n function deleteVehicle(dataItem) {\r\n let confirmText = $translate.instant('ADMINISTRATION_VEHICLE_DIALOG_CONFIRM_DELETE');\r\n\r\n if (confirm(`${confirmText} ${dataItem.name}?`)) {\r\n vehicleService.deleteVehicle(dataItem.id).then(() => {\r\n $scope.vehicleOverviewGrid.dataSource.read();\r\n });\r\n }\r\n }\r\n\r\n function openVehicleModal(title, formType, vehicle) {\r\n return $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: title,\r\n resizable: false,\r\n height: 540,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/administration/vehicle/vehicle-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'VehicleDetailsModalController',\r\n resolve: {\r\n currentFormType: () => formType,\r\n vehicle: () => vehicle\r\n }\r\n });\r\n }\r\n\r\n function openMediaModal(vehicle) {\r\n const pictureUrl = mediaUtility.getMediaUrl(vehicle.imageId);\r\n $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant('G_IMAGE'),\r\n resizable: false,\r\n width: \"30%\",\r\n position: {\r\n top: \"5%\",\r\n left: \"35%\"\r\n },\r\n visible: false\r\n },\r\n templateUrl: 'app/shared/pictureCarouselModal/picture-carousel.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'PictureCarouselController',\r\n resolve: {\r\n pictureUrls: () => [pictureUrl],\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('vehicleService', vehicleService);\r\n\r\n vehicleService.$inject = ['$http'];\r\n\r\n function vehicleService($http) {\r\n var service = {\r\n getVehicles,\r\n getVehicle,\r\n updateVehicle,\r\n createVehicle,\r\n deleteVehicle,\r\n addImage,\r\n };\r\n\r\n function getVehicles() {\r\n return $http.get('/api/vehicle')\r\n .then((result) => result.data);\r\n }\r\n\r\n function getVehicle(vehicleId) {\r\n return $http.get(`/api/vehicle/${vehicleId}`)\r\n .then((result) => result.data);\r\n }\r\n\r\n function updateVehicle(vehicle) {\r\n return $http.put('/api/vehicle', vehicle)\r\n .then((result) => result.data);\r\n }\r\n\r\n function createVehicle(vehicle) {\r\n return $http.post('/api/vehicle', vehicle)\r\n .then((result) => result.data);\r\n }\r\n\r\n function deleteVehicle(vehicleId) {\r\n return $http.delete(`/api/vehicle/${vehicleId}`)\r\n .then((result) => result.data);\r\n }\r\n\r\n function addImage(vehicleId, file) {\r\n const imageModel = {\r\n mediaType: file.mediaType,\r\n mediaContent: { content: file.data },\r\n };\r\n return $http.put(`/api/vehicle/${vehicleId}/image`, imageModel)\r\n .then((result) => result.data);\r\n }\r\n\r\n return service;\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ContainerDetailsModalController', ContainerDetailsModalController);\r\n\r\n ContainerDetailsModalController.$inject = [\r\n '$q',\r\n '$rootScope',\r\n '$scope',\r\n '$stateParams',\r\n '$windowInstance',\r\n 's2wExternalSystemId',\r\n 'containerService',\r\n 'groupService',\r\n 'keycardService',\r\n 'formTypes',\r\n 'currentFormType',\r\n 'container',\r\n 'allContainers',\r\n 'fallbackErrorMessageText',\r\n 'confirmModal',\r\n 'deviceService',\r\n '$translate'\r\n ];\r\n\r\n function ContainerDetailsModalController(\r\n $q,\r\n $rootScope,\r\n $scope,\r\n $stateParams,\r\n $windowInstance,\r\n s2wExternalSystemId,\r\n containerService,\r\n groupService,\r\n keycardService,\r\n formTypes,\r\n currentFormType,\r\n container,\r\n allContainers,\r\n fallbackErrorMessageText,\r\n confirmModal,\r\n deviceService,\r\n $translate,\r\n ) {\r\n\r\n $scope.isEdit = currentFormType === formTypes.edit;\r\n\r\n $scope.containerId = $stateParams.containerId;\r\n $scope.containerId = { Value: '' };\r\n $scope.selectedContainerType = { Value: '' };\r\n $scope.address = { Value: '' };\r\n $scope.selectedGroup = { Value: '' };\r\n $scope.selectedUser = { Value: '' };\r\n $scope.users = [];\r\n $scope.groups = [];\r\n $scope.containerTypes = [];\r\n\r\n $scope.close = close;\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.addGroup = addGroup;\r\n $scope.removeGroup = removeGroup;\r\n $scope.containerIdValid = true;\r\n $scope.showAtLeastOneGroupWarn = false;\r\n $scope.containers = allContainers;\r\n\r\n $scope.usersOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readUsers\r\n }\r\n },\r\n dataTextField: 'userName',\r\n dataValueField: 'userId',\r\n optionLabel: $translate.instant(\"CONTAINER_DETAILS_MODAL_CONTROLLER_USERS_OPTIONS_LABEL\")\r\n };\r\n\r\n $scope.containerTypesOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readContainerTypes\r\n }\r\n },\r\n dataTextField: 'name',\r\n dataValueField: 'nummer',\r\n optionLabel: $translate.instant(\"CONTAINER_DETAILS_MODAL_CONTROLLER_CONTAINER_TYPES_OPTIONS_LABEL\")\r\n };\r\n\r\n $scope.groupsOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readGroups\r\n },\r\n serverFiltering: false\r\n },\r\n filter: 'contains',\r\n dataTextField: 'name',\r\n dataValueField: 'nummer'\r\n };\r\n\r\n initController();\r\n\r\n function initController() {\r\n if (currentFormType === formTypes.edit) {\r\n $scope.isActive = !container.status;\r\n $scope.address.Value = container.address;\r\n $scope.containerId = { Value: container.id };\r\n $scope.selectedContainerType = { Value: { name: container.containerType, nummer: container.containerTypeId } };\r\n $scope.selectedUser = { Value: { userName: container.userName, userId: container.userId } };\r\n }\r\n }\r\n\r\n function addGroup(){\r\n event.preventDefault();\r\n var isAdded = _.map($scope.addedGroups, g => g.Value.nummer).includes($scope.selectedGroup.Value.nummer);\r\n if (!isAdded) {\r\n $scope.addedGroups.push(_.cloneDeep($scope.selectedGroup));\r\n }\r\n updateGroupValidationText();\r\n }\r\n\r\n function removeGroup(g) {\r\n var index = $scope.addedGroups.indexOf(g);\r\n if (index > -1) {\r\n $scope.addedGroups.splice(index, 1);\r\n }\r\n }\r\n\r\n function close(result) {\r\n $windowInstance.close(result);\r\n }\r\n\r\n function updateGroupValidationText(){\r\n if (!$scope.addedGroups || !$scope.addedGroups.length){\r\n $scope.showAtLeastOneGroupWarn = true;\r\n }else{\r\n $scope.showAtLeastOneGroupWarn = false;\r\n }\r\n }\r\n\r\n function saveAndClose() {\r\n save().then(function (result) {\r\n $windowInstance.close(result);\r\n });\r\n }\r\n\r\n function save() {\r\n var deferred = $q.defer();\r\n\r\n event.preventDefault();\r\n $scope.containerIdValid = validateContainerId();\r\n if ($scope.validator.validate() && $scope.containerIdValid && $scope.addedGroups.length) {\r\n\r\n var containerToSave = createContainer();\r\n if (currentFormType === formTypes.edit) {\r\n let shouldDisconnectPromise;\r\n const wasActive = container.status === 0;\r\n if (wasActive && !$scope.isActive) {\r\n shouldDisconnectPromise = confirmModal.confirm({\r\n title: $translate.instant(\"CONTAINER_DETAILS_MODAL_CONTROLLER_SHOULD_DISCONNECT_CONFIRM_TITLE\"),\r\n content: $translate.instant(\"CONTAINER_DETAILS_MODAL_CONTROLLER_SHOULD_DISCONNECT_CONFIRM_CONTENT\"),\r\n messages: {\r\n okText: $translate.instant(\"G_YES\"),\r\n cancel: $translate.instant(\"G_NO\")\r\n },\r\n }).then(function (shouldDisconnectDevice) {\r\n if (shouldDisconnectDevice) {\r\n return deviceService.disconnectDevice(container.id, s2wExternalSystemId);\r\n }\r\n });\r\n } else {\r\n shouldDisconnectPromise = $q.resolve();\r\n }\r\n\r\n shouldDisconnectPromise.then(function () {\r\n $rootScope.$broadcast('showGlobalBusyIndicator', 'containerIndicator');\r\n return containerService.updateContainer(containerToSave)\r\n }).then(function (result) {\r\n resetWindow();\r\n deferred.resolve(result);\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerIndicator');\r\n }, function () {\r\n deferred.reject();\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerIndicator');\r\n });\r\n }\r\n else {\r\n containerService.addContainer(containerToSave).then(function (result) {\r\n resetWindow();\r\n deferred.resolve(result);\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerIndicator');\r\n }, function () {\r\n deferred.reject();\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerIndicator');\r\n });\r\n }\r\n }else{\r\n updateGroupValidationText();\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function readUsers(e) {\r\n keycardService.getUsers().then(function (users) {\r\n if (users) {\r\n _.each(users, function (item) {\r\n $scope.users.push(item);\r\n });\r\n }\r\n $scope.usersDdlServerErrorText = null;\r\n e.success($scope.users);\r\n }).catch(function (error) {\r\n $scope.usersDdlServerErrorText = error.localizedMessage || fallbackErrorMessageText;\r\n e.error();\r\n });\r\n }\r\n\r\n function readContainerTypes(e) {\r\n containerService.getContainerTypes().then(function (containerTypes) {\r\n if (containerTypes) {\r\n _.each(containerTypes, function (item) {\r\n $scope.containerTypes.push(item);\r\n });\r\n }\r\n $scope.containerTypesDdlServerErrorText = null;\r\n e.success($scope.containerTypes);\r\n }).catch(function (error) {\r\n $scope.containerTypesDdlServerErrorText = error.localizedMessage || fallbackErrorMessageText;\r\n e.error();\r\n });\r\n }\r\n\r\n function readGroups(e) {\r\n groupService.getGroups().then(function (groups) {\r\n if (groups) {\r\n _.each(groups, function (item) {\r\n $scope.groups.push(item);\r\n });\r\n }\r\n $scope.groupsDdlServerErrorText = null;\r\n e.success($scope.groups);\r\n $scope.addedGroups = container && container.groupIds \r\n ? _.map(_.filter($scope.groups, g => Array.from(container.groupIds).includes(g.nummer)), fg => {return { Value: fg }})\r\n : [];\r\n\r\n if (container)//edit\r\n {\r\n var groupOfContainer = _.find($scope.groups, g => g.nummer === container.groupId)\r\n }\r\n $scope.selectedGroup = groupOfContainer \r\n ? { Value: { name: groupOfContainer.name, nummer: container.groupId } } \r\n : { Value: { name: $scope.groups[0].name, nummer: $scope.groups[0].nummer } }\r\n }).catch(function (error) {\r\n $scope.groupsDdlServerErrorText = error.localizedMessage || fallbackErrorMessageText;\r\n e.error();\r\n });\r\n }\r\n\r\n function resetWindow() {\r\n $scope.containerId.Value = '';\r\n $scope.selectedContainerType.Value = '';\r\n $scope.address.Value = '';\r\n $scope.selectedGroup.Value = '';\r\n $scope.selectedUser.Value = '';\r\n $scope.externalSystem = '';\r\n }\r\n\r\n function createContainer() {\r\n return {\r\n 'groupId': $scope.selectedGroup.Value.nummer,\r\n 'containerId': $scope.containerId.Value,\r\n 'address': $scope.address.Value,\r\n 'communeId': $scope.selectedUser.Value.userId,\r\n 'containerType': $scope.selectedContainerType.Value.nummer,\r\n 'isActive': $scope.isActive,\r\n 'groupIds': _.map($scope.addedGroups, g=>g.Value.nummer),\r\n 'externalSystemId': s2wExternalSystemId\r\n };\r\n }\r\n\r\n function validateContainerId() {\r\n var matchContainers;\r\n if (currentFormType === formTypes.add) {\r\n matchContainers = _.filter($scope.containers, function (c) { return c.id.toString() === $scope.containerId.Value });\r\n if (matchContainers.length) {\r\n return false;\r\n }\r\n return true;\r\n } else {\r\n //cannot change id on edit.\r\n return true;\r\n }\r\n }\r\n\r\n }\r\n})();\r\n","(function () {\r\n 'use strict'\r\n\r\n angular.module('UndergroundWebApp').controller('ContainerEventsController', ContainerEventsController);\r\n\r\n ContainerEventsController.$inject = [\r\n '$scope',\r\n '$stateParams',\r\n 'containerService',\r\n '$kWindow',\r\n '$translate'\r\n ];\r\n\r\n function ContainerEventsController(\r\n $scope,\r\n $stateParams,\r\n containerService,\r\n $kWindow,\r\n $translate\r\n ) {\r\n $scope.deviceLogs = [];\r\n $scope.openMediaModal = openMediaModal;\r\n\r\n var media = {};\r\n\r\n initController();\r\n\r\n function initController() {\r\n containerService.getLogsByExtDeviceIdAndSystem($stateParams.containerId)\r\n .then(function (response) {\r\n $scope.deviceLogs = response;\r\n $scope.containerEventsGridOptions = {\r\n dataSource: {\r\n data: $scope.deviceLogs,\r\n sort: { field: 'time', dir: 'desc' },\r\n },\r\n sortable: true,\r\n filterable: true,\r\n noRecords: true,\r\n messages: {\r\n noRecords: $translate.instant(\"G_NO_DATA\")\r\n },\r\n pageable: {\r\n pageSize: 100\r\n },\r\n columns: [\r\n {\r\n field: 'time',\r\n title: $translate.instant(\"CONTAINER_DETAILS_MODAL_CONTROLLER_TABLE_HEADER_TIME\"),\r\n template: '#= kendo.toString(kendo.parseDate(time), \"dd.MM.yyyy HH:mm:ss\") #',\r\n filterable: false,\r\n },\r\n {\r\n field: 'logAction',\r\n title: $translate.instant(\"CONTAINER_DETAILS_MODAL_CONTROLLER_TABLE_HEADER_LOG_ACTION\")\r\n },\r\n {\r\n field: 'comment',\r\n title: $translate.instant(\"CONTAINER_DETAILS_MODAL_CONTROLLER_TABLE_HEADER_COMMENT\")\r\n },\r\n {\r\n field: 'extUser',\r\n title: $translate.instant(\"CONTAINER_DETAILS_MODAL_CONTROLLER_TABLE_HEADER_EXT_USER\")\r\n },\r\n {\r\n field: 'image',\r\n title: $translate.instant(\"G_IMAGE\"),\r\n width: 70,\r\n sortable: false,\r\n filterable: false,\r\n template: function (dataItem) {\r\n if (dataItem.media.length) {\r\n return ''\r\n }\r\n return '';\r\n }\r\n }\r\n ],\r\n };\r\n }).catch(function (error) {\r\n console.error(error);\r\n })\r\n }\r\n\r\n function openMediaModal(media) {\r\n var pictureUrls = media.map(m => m.pictureUrl);\r\n $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant(\"G_IMAGE\"),\r\n resizable: false,\r\n width: \"30%\",\r\n position: {\r\n top: \"5%\",\r\n left: \"35%\"\r\n },\r\n visible: false\r\n },\r\n templateUrl: 'app/containerOverview/views/container-events-picture-carousel.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'ContainerEventsPictureCarouselController',\r\n resolve: {\r\n pictureUrls: function () {\r\n return pictureUrls;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n","(function () {\r\n angular.module('UndergroundWebApp').controller('ContainerEventsPictureCarouselController', ContainerEventsPictureCarouselController);\r\n\r\n ContainerEventsPictureCarouselController.$inject = [\r\n '$scope',\r\n 'pictureUrls'\r\n ];\r\n\r\n function ContainerEventsPictureCarouselController(\r\n $scope,\r\n pictureUrls\r\n ) {\r\n $scope.source = {};\r\n\r\n initController();\r\n\r\n function initController() {\r\n $scope.source = new kendo.data.DataSource({\r\n data: pictureUrls,\r\n pageSize: 1\r\n });\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ContainerInfoController', ContainerInfoController);\r\n\r\n ContainerInfoController.$inject = [\r\n '$rootScope',\r\n '$scope',\r\n '$state',\r\n '$stateParams',\r\n '$kWindow',\r\n 'globalEvents',\r\n 'authService',\r\n 's2wClusterLayerFactory',\r\n 'formTypes',\r\n 'mapUtility',\r\n 'mapService',\r\n 'undergroundAPIService',\r\n 'containerService',\r\n 'groupService',\r\n 'externalSystemsService',\r\n 'deviceService',\r\n '$translate'\r\n ];\r\n\r\n function ContainerInfoController(\r\n $rootScope,\r\n $scope,\r\n $state,\r\n $stateParams,\r\n $kWindow,\r\n globalEvents,\r\n authService,\r\n s2wClusterLayerFactory,\r\n formTypes,\r\n mapUtility,\r\n mapService,\r\n undergroundAPIService,\r\n containerService,\r\n groupService,\r\n externalSystemsService,\r\n deviceService,\r\n $translate\r\n ) {\r\n\r\n $scope.containerId = $stateParams.containerId;\r\n $scope.showInactive = $stateParams.showInactive;\r\n $scope.startTab = $stateParams.startTab;\r\n\r\n $scope.showEditGroupButton = false;\r\n $scope.hideNavBar = true;\r\n $scope.containerData = {};\r\n $scope.activate = $translate.instant(\"CONTAINER_SETTINGS_VIEW_ACTIVATE\");\r\n $scope.deactivate = $translate.instant(\"CONTAINER_SETTINGS_VIEW_DEACTIVATE\");\r\n\r\n $scope.tabStripOptions = {\r\n animation: false,\r\n scrollable: false,\r\n dataTextField: 'name',\r\n dataContentUrlField: 'contentUrl',\r\n dataSource: getTabs(),\r\n };\r\n\r\n $scope.frequenceList = [\r\n { text: ' ', value: null },\r\n { text: '4', value: 4 },\r\n { text: '8', value: 8 },\r\n { text: '12', value: 12 },\r\n { text: '24', value: 24 }\r\n ];\r\n\r\n $scope.frequenceListOptions = {\r\n dataSource: $scope.frequenceList,\r\n dataTextField: 'text',\r\n dataValueField: 'value'\r\n };\r\n\r\n $scope.saveContainerSetting = saveContainerSetting;\r\n $scope.openEditGroup = openEditGroup;\r\n $scope.toggleClearCounter = toggleClearCounter;\r\n $scope.toggleTriggerUpdate = toggleTriggerUpdate;\r\n\r\n var externalSystems = [];\r\n externalSystemsService.getExternalSystems()\r\n .then(function (systems) {\r\n externalSystems = systems\r\n })\r\n .finally(function () {\r\n initController();\r\n });\r\n\r\n function initController() {\r\n if (!$stateParams.containerId) {\r\n $state.go('main.containerOverview');\r\n return;\r\n }\r\n\r\n authService.getAccessRights().then(() => {\r\n $scope.containeroverviewdetailstab.dataSource.data(getTabs());\r\n selectStartTab();\r\n });\r\n\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'containerInfoIndicator',\r\n destination: '.container-overview-details-view',\r\n message: $translate.instant(\"G_BUSY_INDICATOR\"),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n\r\n if ($scope.containerId) {\r\n getContainer().then(function (container) {\r\n if (!container) {\r\n return;\r\n }\r\n\r\n //Avoid bookmarkerded / saved links usage that does not have the externalSystemId state param\r\n let externalSystemId = container.externalSystemId || $stateParams.externalSystemId;\r\n if (!externalSystemId) {\r\n $state.go('main.containerOverview');\r\n return;\r\n }\r\n\r\n let degLat = null,\r\n degLong = null;\r\n\r\n if (container.degLong && container.degLat) {\r\n const coords = mapUtility.convertToUTM33N(container.degLat, container.degLong);\r\n\r\n degLat = coords.Y;\r\n degLong = coords.X;\r\n }\r\n\r\n $scope.containerData = {\r\n containerId: container.id || container.containerId,\r\n place: container.address || container.place,\r\n groups: container.groups,\r\n commune: container.commune || 'n/a',\r\n containerType: container.containerType,\r\n status: container.status,\r\n cardsActive: container.cardsActive,\r\n cardsActiveChangeIsPending: container.cardsActiveChangeIsPending,\r\n cardsActiveText: boolToText(container.cardsActive),\r\n soundActive: container.soundActive,\r\n soundActiveText: boolToText(container.soundActive),\r\n clearCounter: container.clearCounter,\r\n fill: container.fill,\r\n fillingHeight: container.fillingHeight,\r\n fillText: container.fill ? container.fill : 'n/a',\r\n frequence: container.frequence,\r\n frequenceText: container.frequence ? container.frequence : 'n/a',\r\n triggerCards: container.triggerCards,\r\n triggerSound: container.triggerSound,\r\n triggerUpdate: container.triggerUpdate,\r\n updateTime: container.updateTime ? kendo.toString(kendo.parseDate(container.updateTime), \"dd.MM.yyyy HH:mm:ss\") : ' ',\r\n usageCounter: container.usageCounter ? container.usageCounter : 'n/a',\r\n version: container.version ? container.version : 'n/a',\r\n magnetTime: container.magnetTime,\r\n volt: container.battery,\r\n degLong: degLong,\r\n degLat: degLat,\r\n hasPosition: container.degLong && container.degLat,\r\n externalSystemId: externalSystemId,\r\n externalSystem: getExternalSystem(externalSystemId)\r\n };\r\n\r\n deviceService.getDevice($scope.containerData.externalSystemId, $scope.containerData.containerId)\r\n .then(function (device) {\r\n if (device.container && device.container.locationId) {\r\n $scope.locationId = device.container.locationId;\r\n }\r\n });\r\n\r\n $scope.containerData.time = container.time ?\r\n kendo.toString(kendo.parseDate(container.time), \"dd.MM.yyyy HH:mm:ss\") : \r\n kendo.toString(kendo.parseDate(container.time), \"dd.MM.yyyy HH:mm:ss\");\r\n\r\n if ($scope.containerData.frequence) {\r\n $scope.selectedFrequence = _.find($scope.frequenceList, f => f.value === container.frequence);\r\n }\r\n\r\n $scope.showEditGroupButton = container.groupId != undefined\r\n && $rootScope.isAccessible('NewGroup', 'W');\r\n\r\n return s2wClusterLayerFactory.initialized().then(function () {\r\n if ($scope.containerData && $scope.containerData.hasPosition) {\r\n mapService.zoomToLocation({\r\n x: $scope.containerData.degLong,\r\n y: $scope.containerData.degLat\r\n }, 15);\r\n $rootScope.$broadcast(globalEvents.redrawCluster);\r\n }\r\n else if (mapService._mapView.zoom > 4) {\r\n mapService.zoomOut();\r\n }\r\n });\r\n }).finally(() => {\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerInfoIndicator');\r\n $scope.hideNavBar = false;\r\n });\r\n }\r\n }\r\n\r\n function getTabs() {\r\n const tabs = [{ name: $translate.instant(\"CONTAINER_INFO_CONTROLLER_TABS_INFO\"), contentUrl: 'app/containerOverview/views/container-info-view.html' }];\r\n if ($scope.authData.isAuth) {\r\n if ($scope.isAccessible('Containers', 'R')) {\r\n tabs.push({ name: $translate.instant(\"CONTAINER_INFO_CONTROLLER_TABS_SETTINGS\"), contentUrl: 'app/containerOverview/views/container-settings-view.html' });\r\n }\r\n tabs.push({ name: $translate.instant(\"CONTAINER_INFO_CONTROLLER_TABS_STATUS\"), contentUrl: 'app/containerOverview/views/container-status-view.html' });\r\n if ($scope.isAccessible('NewKeyCard', 'R')) {\r\n tabs.push({ name: $translate.instant(\"CONTAINER_INFO_CONTROLLER_TABS_KEYCARDS\"), contentUrl: 'app/keycards/views/keycards-overview-view.html' });\r\n }\r\n if ($scope.isAccessible('LogLine', 'R')) {\r\n tabs.push({ name: $translate.instant(\"CONTAINER_INFO_CONTROLLER_TABS_LOGLINE\"), contentUrl: 'app/containerOverview/views/container-events-view.html' });\r\n }\r\n }\r\n return tabs;\r\n }\r\n\r\n function selectStartTab() {\r\n switch ($scope.startTab) {\r\n case 'Info':\r\n $scope.containeroverviewdetailstab.select('li:contains(\"Info\")');\r\n break;\r\n case 'KeyCard':\r\n $scope.containeroverviewdetailstab.select('li:contains(\"Nøkkelkort\")');\r\n break;\r\n default:\r\n $scope.containeroverviewdetailstab.select(0);\r\n break;\r\n }\r\n }\r\n\r\n function getExternalSystem(externalSystemId) {\r\n if (externalSystems && externalSystemId) {\r\n var system = _.find(externalSystems, { 'id': externalSystemId });\r\n return system ? system.name : \"\";\r\n }\r\n return \"\";\r\n }\r\n\r\n function openEditGroup(groupId) {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant(\"G_EDIT\"),\r\n resizable: false,\r\n height: 400,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/containerOverview/views/group-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'GroupDetailsModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.edit;\r\n },\r\n groupId: function () {\r\n return groupId;\r\n }\r\n }\r\n });\r\n\r\n //Reload group\r\n windowInstance.result.then(function (result) {\r\n if (result) {\r\n if (result.groupId && result.groupName) {\r\n groupService.getGroups().then(function (groups) {\r\n var currentGroup = _.find(groups, function (group) {\r\n return group.nummer === result.groupId;\r\n });\r\n\r\n if (currentGroup) {\r\n var groupDisplayText = currentGroup.nummer + ' - ' + currentGroup.name;\r\n var groupInGroups = _.find($scope.containerData.groups, g => g.groupId === currentGroup.nummer);\r\n if (groupInGroups) {\r\n groupInGroups.group = groupDisplayText;\r\n $rootScope.$broadcast('groupUpdated', currentGroup);\r\n }\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n function saveContainerSetting() {\r\n if ($scope.containerData) {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'containerInfoIndicator',\r\n destination: '#right-pane',\r\n message: $translate.instant(\"G_BUSY_INDICATOR\"),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n\r\n containerService.updateContainerSettings({\r\n containerId: $scope.containerData.containerId,\r\n magnetTime: $scope.containerData.magnetTime,\r\n fillValue: $scope.containerData.fillingHeight,\r\n frequence: $scope.selectedFrequence ? $scope.selectedFrequence.value : null,\r\n cardsActive: $scope.containerData.cardsActive,\r\n soundActive: $scope.containerData.soundActive,\r\n clearCounter: $scope.containerData.clearCounter,\r\n triggerUpdate: $scope.containerData.triggerUpdate\r\n }).then(function () {\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerInfoIndicator');\r\n }, function () {\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerInfoIndicator');\r\n });\r\n }\r\n }\r\n\r\n function toggleClearCounter() {\r\n $scope.containerData.clearCounter = !$scope.containerData.clearCounter;\r\n }\r\n\r\n function toggleTriggerUpdate() {\r\n $scope.containerData.triggerUpdate = !$scope.containerData.triggerUpdate;\r\n }\r\n\r\n function boolToText(item) {\r\n return item === true ? \r\n $translate.instant(\"G_TRUE\") \r\n : $translate.instant(\"G_FALSE\");\r\n }\r\n\r\n function getContainer() {\r\n if ($scope.authData && $scope.authData.isAuth) {\r\n return containerService.getContainerById($scope.containerId);\r\n }\r\n\r\n const containerId = Number($scope.containerId);\r\n return undergroundAPIService.getS2WOverviewExpress().then((result) => {\r\n var container = result && result.find(result, (item) => item.containerId === containerId);\r\n if (container && container.degLat && container.degLong) {\r\n const coords = mapUtility.convertToUTM33N(container.degLat, container.degLong);\r\n\r\n container.degLong = coords.X;\r\n container.degLat = coords.Y;\r\n }\r\n\r\n return container;\r\n });\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ContainerOverviewController', ContainerOverviewController);\r\n\r\n ContainerOverviewController.$inject = [\r\n '$q',\r\n '$rootScope',\r\n '$scope',\r\n '$state',\r\n '$stateParams',\r\n '$kWindow',\r\n 'globalEvents',\r\n 'formTypes',\r\n 'containerService',\r\n 'externalSystemsService',\r\n 'locationsService',\r\n 'filterStateService',\r\n '$translate'\r\n ];\r\n\r\n function ContainerOverviewController(\r\n $q,\r\n $rootScope,\r\n $scope,\r\n $state,\r\n $stateParams,\r\n $kWindow,\r\n globalEvents,\r\n formTypes,\r\n containerService,\r\n externalSystemsService,\r\n locationsService,\r\n filterStateService,\r\n $translate\r\n ) {\r\n $scope.allContainers = [];\r\n $scope.containerOverviewGridData = [];\r\n $scope.noCache = $stateParams.noCache;\r\n $scope.yes = $translate.instant(\"G_YES\"),\r\n $scope.no = $translate.instant(\"G_NO\"),\r\n $scope.excelFileName = 'Shop2WinContaineroversikt.xlsx';\r\n\r\n $scope.isEditVisible = isEditVisible;\r\n $scope.showInactive = $stateParams.showInactive === 'true';\r\n\r\n //Public functions\r\n $scope.exportToExcel = exportToExcel;\r\n $scope.openNewContainerModal = openNewContainerModal;\r\n $scope.openNewGroupModal = openNewGroupModal;\r\n $scope.openUpdateContainerModal = openUpdateContainerModal;\r\n $scope.toggleInactive = toggleInactive;\r\n\r\n $scope.containerOverviewGridOptions = {\r\n dataSource: {\r\n data: $scope.containerOverviewGridData,\r\n schema: {\r\n model: {\r\n fields: {\r\n id: { type: 'number' },\r\n address: {},\r\n containerType: {},\r\n battery: { type: 'number' },\r\n version: { type: 'number' },\r\n fill: { type: 'number' },\r\n signal: { type: 'number' },\r\n group: {},\r\n hasPosition: { type: 'boolean' },\r\n groupIds: { type: 'array' },\r\n updateTime: { type: 'date' },\r\n cardsActive: { type: 'boolean' },\r\n }\r\n }\r\n },\r\n group: { field: 'group' },\r\n pageSize: 70,\r\n sort: filterStateService.getSortFromQueryString({\r\n field: 'id',\r\n dir: 'asc'\r\n }),\r\n filter: filterStateService.getFilterFromQueryString(),\r\n },\r\n sortable: true,\r\n filterable: true,\r\n noRecords: true,\r\n messages: {\r\n noRecords: $translate.instant(\"G_NO_DATA\")\r\n },\r\n scrollable: {\r\n virtual: true\r\n },\r\n selectable: 'row',\r\n columns: [\r\n {\r\n field: 'actions',\r\n title: ' ',\r\n width: '60px',\r\n template: '' +\r\n '
',\r\n filterable: false,\r\n sortable: false,\r\n groupable: false\r\n },\r\n { field: 'id', title: 'Id', width: '56px' },\r\n {\r\n field: 'locationName',\r\n title: $translate.instant(\"CONTAINER_OVERVIEW_CONTROLLER_TABLE_HEADER_LOCATION_NAME\"),\r\n template: '#= locationName#',\r\n width: '120px'\r\n },\r\n { field: 'address', title: $translate.instant(\"CONTAINER_OVERVIEW_CONTROLLER_TABLE_HEADER_ADDRESS\") },\r\n {\r\n field: 'containerType',\r\n title: $translate.instant(\"CONTAINER_OVERVIEW_CONTROLLER_TABLE_HEADER_CONTAINER_TYPE\"),\r\n width: '90px',\r\n filterable: {\r\n multi: true,\r\n }\r\n },\r\n { field: 'battery', title: $translate.instant(\"CONTAINER_OVERVIEW_CONTROLLER_TABLE_HEADER_BATTERY\"), width: '70px' },\r\n { field: 'fill', title: $translate.instant(\"CONTAINER_OVERVIEW_CONTROLLER_TABLE_FILL_PERCENT\"), width: '65px' },\r\n { field: 'signal', title: $translate.instant(\"CONTAINER_OVERVIEW_CONTROLLER_TABLE_SIGNAL\"), template: '#: signal#', width: '70px' },\r\n {\r\n field: 'cardsActive',\r\n template: `#= cardsActive ? \"${$translate.instant(\"G_TRUE\")}\" : \"${$translate.instant(\"G_FALSE\")}\" #`,\r\n title: $translate.instant(\"CONTAINER_OVERVIEW_CONTROLLER_TABLE_CARDS_ACTIVE\"),\r\n filterable: {\r\n messages: {\r\n isTrue: $translate.instant(\"G_TRUE\"),\r\n isFalse: $translate.instant(\"G_FALSE\"),\r\n info: '',\r\n }\r\n },\r\n width: 60\r\n },\r\n {\r\n field: 'version',\r\n title: $translate.instant(\"CONTAINER_OVERVIEW_CONTROLLER_TABLE_VERSION\"),\r\n width: '70px'\r\n },\r\n {\r\n title: $translate.instant(\"CONTAINER_OVERVIEW_CONTROLLER_TABLE_UPDATE_TIME\"),\r\n field: 'updateTime',\r\n width: '100px',\r\n template: '#= updateTimeDisplay #',\r\n filterable: {\r\n ui: 'datetimepicker',\r\n },\r\n },\r\n { field: 'group', title: $translate.instant(\"CONTAINER_OVERVIEW_CONTROLLER_TABLE_GROUP\") },\r\n ],\r\n excel: {\r\n fileName: $scope.excelFileName,\r\n filterable: true,\r\n allPages: true\r\n },\r\n excelExport: containerOverviewGridExcelExport,\r\n change: onRowSelected,\r\n sort: filterStateService.storeGridSortInQueryString,\r\n filter: filterStateService.storeGridFilterInQueryString,\r\n };\r\n\r\n initController();\r\n \r\n function initController() {\r\n externalSystemsService.getExternalSystems()\r\n .then(function(systems) {\r\n $scope.externalSystems = systems;\r\n getContainerOverviewGridData();\r\n });\r\n }\r\n\r\n function isEditVisible() {\r\n return $rootScope.isAccessible && $rootScope.isAccessible(\"NewContainer\", \"W\");\r\n }\r\n\r\n function openNewContainerModal() {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: 'Ny elektronikk',\r\n resizable: false,\r\n height: 570,\r\n width: 450,\r\n visible: false\r\n },\r\n templateUrl: 'app/containerOverview/views/container-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'ContainerDetailsModalController',\r\n resolve: {\r\n currentFormType: function() {\r\n return formTypes.add;\r\n },\r\n container: function () {\r\n return null;\r\n },\r\n allContainers: function () {\r\n return $scope.allContainers;\r\n }\r\n }\r\n });\r\n\r\n windowInstance.result.then(function (result) {\r\n if (result) {\r\n getContainerOverviewGridData();\r\n }\r\n });\r\n }\r\n\r\n function openUpdateContainerModal(dataItem) {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant(\"CONTAINER_OVERVIEW_CONTAINER\"),\r\n resizable: false,\r\n height: 600,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/containerOverview/views/container-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'ContainerDetailsModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.edit;\r\n },\r\n container: function() {\r\n return dataItem;\r\n },\r\n allContainers: function () {\r\n return $scope.allContainers;\r\n }\r\n }\r\n });\r\n\r\n windowInstance.result.then(function (result) {\r\n if (result) {\r\n getContainerOverviewGridData();\r\n }\r\n });\r\n }\r\n\r\n function toggleInactive(timeout) {\r\n if ($scope.showInactive) {\r\n $scope.containerOverviewGridData = $scope.allContainers.filter(c => c.status !== 0);\r\n } else {\r\n $scope.containerOverviewGridData = $scope.allContainers.filter(c => c.status === 0);\r\n }\r\n\r\n if (!timeout) {\r\n $state.transitionTo('main.containerOverview',\r\n {\r\n showInactive: $scope.showInactive\r\n },\r\n {\r\n location: true,\r\n inherit: true,\r\n relative: $state.$current,\r\n notify: false\r\n });\r\n timeout = 300;\r\n }\r\n\r\n setTimeout(function() {\r\n $scope.containerOverviewGrid.dataSource.data($scope.containerOverviewGridData);\r\n $scope.containerOverviewGrid.refresh();\r\n\r\n $rootScope.$broadcast(globalEvents.overviewContainersChanged, $scope.containerOverviewGridData);\r\n }, timeout);\r\n }\r\n\r\n function openNewGroupModal() {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant(\"CONTAINER_OVERVIEW_CONTROLLER_NEW_GROUP\"),\r\n resizable: false,\r\n height: 400,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/containerOverview/views/group-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'GroupDetailsModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.add;\r\n },\r\n groupId: function () {\r\n return null;\r\n },\r\n externalSystems: function (){\r\n return $scope.externalSystems;\r\n }\r\n }\r\n });\r\n\r\n windowInstance.result.then(function (result) {\r\n if (result) {\r\n getContainerOverviewGridData();\r\n }\r\n });\r\n }\r\n\r\n function exportToExcel() {\r\n $scope.containerOverviewGrid.saveAsExcel();\r\n }\r\n\r\n //Private functions\r\n function getContainerOverviewGridData() {\r\n showBusyIndicator();\r\n\r\n $scope.containerOverviewGridData = [];\r\n\r\n $q.all([\r\n containerService.getContainers($stateParams.noCache),\r\n locationsService.getLocations(false)\r\n ]).then(data => {\r\n let containers = data[0],\r\n locations = data[1];\r\n\r\n loadContainerOverviewGridData(containers, locations);\r\n }).finally(hideBusyIndicator);\r\n }\r\n\r\n function loadContainerOverviewGridData(containers, locations) {\r\n if (containers) {\r\n $scope.allContainers = [];\r\n\r\n _.each(containers, function (item) {\r\n let relatedLocation = item.placeNumber && locations.find(l => l.externalWMPlaceNr === item.placeNumber);\r\n\r\n extendGridData(item, relatedLocation);\r\n\r\n $scope.allContainers.push(item);\r\n if (item.status === 0) {\r\n $scope.containerOverviewGridData.push(item);\r\n }\r\n });\r\n\r\n toggleInactive(0);\r\n }\r\n }\r\n\r\n function extendGridData(item, relatedLocation) {\r\n item.signal = item.signal === null ? ' ' : item.signal;\r\n item.hasPosition = item.hasPosition === true;\r\n item.SignalClass = getSignalStrength(item.signal);\r\n item.PositionClass = item.hasPosition ? 'hasPosition' : 'noPosition';\r\n item.updateTime = item.updateTime == null ? '' : new Date(item.updateTime);\r\n\r\n if (item.updateTime) {\r\n item.updateTimeDisplay = kendo.toString(kendo.parseDate(item.updateTime), 'dd.MM HH:mm');\r\n } else {\r\n item.updateTimeDisplay = '';\r\n }\r\n \r\n if (item.battery) {\r\n item.battery = item.battery.toFixed(1);\r\n }\r\n if ($scope.externalSystems && item.externalSystemId)\r\n {\r\n var system = _.find($scope.externalSystems, { 'id': item.externalSystemId});\r\n item.externalSystem = system ? system.name : \"\";\r\n }\r\n\r\n if (relatedLocation) {\r\n item.locationId = relatedLocation.id;\r\n item.locationName = relatedLocation.name;\r\n\r\n item.locationHref = location.origin + '/main/location/' + item.locationId + '/info';\r\n } else {\r\n item.locationId = '';\r\n item.locationName = '';\r\n item.locationHref = '';\r\n }\r\n }\r\n\r\n function getSignalStrength(signal) {\r\n if (signal <= 5) { return 'critical'; }\r\n else if (signal > 5 && signal <= 7) { return 'warning'; }\r\n else if (signal > 7) { return 'ok'; }\r\n else { return 'missing' }\r\n }\r\n\r\n function onRowSelected() {\r\n var selectedRows = this.select();\r\n $rootScope.selectedContainerId = this.dataItem(selectedRows[0]).id;\r\n }\r\n\r\n function containerOverviewGridExcelExport(e) {\r\n let dateFormat = $translate.instant(\"CONTAINER_OVERVIEW_CONTROLLER_EXCEL_EXPORT_DATE_FORMAT\");\r\n e.workbook.fileName = 'Shop2WinContaineroversikt ' + kendo.toString(new Date, dateFormat) + '.xlsx';\r\n var sheet = e.workbook.sheets[0];\r\n var columnWidths = this.element.find('.k-grid-header colgroup col');\r\n\r\n for (var i = 0; i < sheet.columns.length; i++) {\r\n if ($(columnWidths[i]).attr('style')) {\r\n sheet.columns[i].width = 160;\r\n } else {\r\n sheet.columns[i].width = 16;\r\n }\r\n }\r\n }\r\n\r\n function showBusyIndicator() {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'containerIndicator',\r\n destination: '#container-overview-view',\r\n message: $translate.instant(\"G_BUSY_INDICATOR\"),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n }\r\n\r\n function hideBusyIndicator() {\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerIndicator');\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ContainerStatisticsController', ContainerStatisticsController);\r\n\r\n ContainerStatisticsController.$inject = [\r\n '$rootScope',\r\n '$scope',\r\n '$stateParams',\r\n 'containerService',\r\n 'localStorageService',\r\n '$translate'\r\n ];\r\n\r\n function ContainerStatisticsController(\r\n $rootScope,\r\n $scope,\r\n $stateParams,\r\n containerService,\r\n localStorageService,\r\n $translate,\r\n ) {\r\n $scope.containerId = $stateParams.containerId;\r\n $scope.containerReportData = [];\r\n $scope.dateRange = {};\r\n\r\n $scope.seriesDefaults = { \r\n type: 'line',\r\n missingValues: \"gap\"\r\n };\r\n $scope.options = {\r\n dataSource: $scope.chartData,\r\n series: []\r\n };\r\n\r\n $scope.refreshChart = refreshChart;\r\n $scope.onLegendItemClick = onLegendItemClick;\r\n\r\n function refreshChart() {\r\n getContainerStatisticsChartData();\r\n }\r\n\r\n function getContainerStatisticsChartData() {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'containerStatisticsIndicator',\r\n destination: '#statisticsChart',\r\n message: $translate.instant(\"G_BUSY_INDICATOR\"),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n $scope.options.valueAxes = [];\r\n $scope.options.series = [];\r\n $scope.containerStatisticsGridData = [];\r\n\r\n containerService.getContainerReportsBasedOnDate($scope.containerId, moment($scope.dateRange.from).format('YYYY-MM-DD'), moment($scope.dateRange.to).format('YYYY-MM-DD')).then(function (report) {\r\n if (report) {\r\n if ($rootScope.isAccessible('SignalStrengthReport','R')) {\r\n addChartData($translate.instant(\"CONTAINER_STATISTICS_CONTROLLER_CHART_SIGNAL_STRENGTH\"), report, 'rssi', 'timestamp', 'red', 'line', true, getMinValue(report, 'rssi'), getMaxValue(report, 'rssi'));\r\n }\r\n addChartData($translate.instant(\"CONTAINER_STATISTICS_CONTROLLER_CHART_BATTERY\"), report, 'volt', 'timestamp', 'green', 'line', true, getMinValue(report, 'volt'), getMaxValue(report, 'volt'));\r\n addChartData($translate.instant(\"CONTAINER_STATISTICS_CONTROLLER_CHART_TEMPERATURE\"), report, 'temperature', 'timestamp', 'orange', 'line', true, getMinValue(report, 'temperatur'), getMaxValue(report, 'temperatur'));\r\n addChartData($translate.instant(\"CONTAINER_STATISTICS_CONTROLLER_CHART_FILL\"), report, 'fill', 'timestamp', 'blue', 'line', true, 0, 110, function (item) { return Math.round(item); });\r\n addChartData($translate.instant(\"CONTAINER_STATISTICS_CONTROLLER_CHART_ACCESS_COUNT\"), report, 'accessCount', 'timestamp', 'gray', 'bar', true, getMinValue(report, 'accesscount'), getMaxValue(report, 'accessCount'));\r\n if ($rootScope.isAccessible('ContainerUsageForPeriodeReport', 'R') || $rootScope.isAccessible('ContainerUsageReport', 'R')) {\r\n addChartData($translate.instant(\"CONTAINER_STATISTICS_CONTROLLER_CHART_USAGE_COUNT\"), report, 'usageCount', 'timestamp', 'purple', 'line', true, getMinValue(report, 'usageCount'), getMaxValue(report, 'usageCount'));\r\n }\r\n setCategoryAxis(report);\r\n }\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerStatisticsIndicator');\r\n }, function () {\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerStatisticsIndicator');\r\n });\r\n };\r\n\r\n function addChartData(name, items, column, category, color, chartType, tooltipVisible, min, max, special) {\r\n var data = [];\r\n var times = [];\r\n _.each(items, function (item) {\r\n if (special) {\r\n data.push(special(item[column]));\r\n }\r\n else {\r\n data.push(item[column]);\r\n }\r\n times.push(item[category]);\r\n });\r\n $scope.options.series.push({\r\n name: name,\r\n data: data,\r\n axis: name,\r\n color: color,\r\n type: chartType,\r\n tooltip: {\r\n visible: tooltipVisible,\r\n template: `${$translate.instant(\"G_DAY_CAPITAL\")}: #= category #
#= series.name #: #= value #`\r\n },\r\n });\r\n $scope.options.valueAxes.push({\r\n name: name,\r\n color: color,\r\n min: min,\r\n max: max\r\n });\r\n };\r\n function getMinValue(report, column) {\r\n return _.min(report[column]);\r\n };\r\n function getMaxValue(report, column) {\r\n return _.max(report[column]);\r\n };\r\n function setCategoryAxis(items) {\r\n var times = [];\r\n _.each(items, function (item) {\r\n times.push(moment(item.timestamp).format('DD.MM.YYYY HH:mm:ss') == '01.01.1900' ? ' ' : moment(item.timestamp).format('DD'));\r\n });\r\n var c = _.size(times);\r\n $scope.options.categoryAxis = {\r\n categories: times,\r\n majorGridLines: {\r\n visible: false\r\n },\r\n axisCrossingValues: [0, 0, 0, c, c, c]\r\n };\r\n };\r\n function onLegendItemClick(e) {\r\n console.log(e);\r\n }\r\n };\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ContainerStatusController', ContainerStatusController);\r\n\r\n ContainerStatusController.$inject = [\r\n '$rootScope',\r\n '$scope',\r\n '$stateParams',\r\n 'containerService',\r\n 'localStorageService',\r\n '$translate'\r\n ];\r\n\r\n function ContainerStatusController(\r\n $rootScope,\r\n $scope,\r\n $stateParams,\r\n containerService,\r\n localStorageService,\r\n $translate\r\n ) {\r\n $scope.containerId = $stateParams.containerId;\r\n $scope.containerStatusGridData = [];\r\n\r\n $scope.containerStatusGridOptions = {\r\n dataSource: {\r\n data: $scope.containerStatusGridData,\r\n sort: {\r\n field: \"time\",\r\n dir: \"desc\"\r\n },\r\n },\r\n sortable: true,\r\n filterable: true,\r\n noRecords: true,\r\n messages: {\r\n noRecords: $translate.instant(\"G_NO_DATA\"),\r\n },\r\n pageable: {\r\n pageSize: 100\r\n },\r\n columns: [\r\n {\r\n field: 'time',\r\n title: $translate.instant(\"CONTAINER_STATUS_CONTROLLER_TABLE_HEADER_TIME\"),\r\n width: '200px',\r\n template: `#= kendo.toString(kendo.parseDate(time), \"${$translate.instant(\"G_DEFAULT_DATE_FORMAT\")}\") #`\r\n },\r\n { field: 'errorText', title: $translate.instant(\"CONTAINER_STATUS_CONTROLLER_TABLE_HEADER_ERROR_TEXT\") }\r\n ]\r\n };\r\n initController();\r\n\r\n function initController() {\r\n var authData = localStorageService.get('authenticationData');\r\n if (authData && authData.isAuth) {\r\n getContainerStatusGridData();\r\n }\r\n };\r\n\r\n function getContainerStatusGridData() {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'containerStatusIndicator',\r\n destination: '#containerStatusGrid',\r\n message: $translate.instant(\"G_BUSY_INDICATOR\"),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n\r\n $scope.containerStatusGridData = [];\r\n containerService.getErrorsForContainerId($scope.containerId).then(function (containers) {\r\n if (containers) {\r\n $scope.containerStatusGridData = containers;\r\n $scope.containerStatusGrid.dataSource.data($scope.containerStatusGridData);\r\n $scope.containerStatusGrid.refresh();\r\n }\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerStatusIndicator');\r\n }, function () {\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerStatusIndicator');\r\n });\r\n };\r\n function extendGridData(item) {\r\n item.time = moment(item.time).format('DD.MM.YYYY HH:mm:ss') == '01.01.1900' ? ' ' : moment(item.time).format($translate.instant(\"G_DEFAULT_DATE_FORMAT\"));\r\n }\r\n };\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('CustomerSystemModalController', CustomerSystemModalController);\r\n\r\n CustomerSystemModalController.$inject = [\r\n '$timeout',\r\n '$scope',\r\n 'currentCustomerSystemId',\r\n 'currentCustomerSystemExternalId',\r\n '$windowInstance',\r\n 'containerService',\r\n '$stateParams'\r\n ];\r\n\r\n function CustomerSystemModalController(\r\n $timeout,\r\n $scope,\r\n currentCustomerSystemId,\r\n currentCustomerSystemExternalId,\r\n $windowInstance,\r\n containerService,\r\n $stateParams\r\n ) {\r\n $scope.selectedCustomerSystemId = currentCustomerSystemId ? currentCustomerSystemId.toUpperCase() : '';\r\n $scope.customerSystemExternalId = currentCustomerSystemExternalId ? currentCustomerSystemExternalId : '';\r\n\r\n $scope.customerSystemOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readCustomerSystems\r\n }\r\n },\r\n dataTextField: \"name\",\r\n dataValueField: \"id\"\r\n };\r\n\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.closeWindow = closeWindow;\r\n\r\n function saveAndClose() {\r\n if ($scope.selectedCustomerSystemId && $stateParams.containerId && $stateParams.externalSystemId) {\r\n containerService.updateDeviceCustomerSystem(\r\n $stateParams.containerId,\r\n $stateParams.externalSystemId,\r\n $scope.selectedCustomerSystemId,\r\n $scope.customerSystemExternalId\r\n ).then(function (result) {\r\n if (result.customerSystem) {\r\n $windowInstance.close({\r\n customerSystemId: result.customerSystem.id,\r\n customerSystemName: result.customerSystem.name,\r\n customerSystemExternalId: result.customerSystemExternalId\r\n });\r\n }\r\n $windowInstance.close();\r\n }).catch(function (error) {\r\n $windowInstance.close();\r\n });\r\n }\r\n }\r\n\r\n function closeWindow() {\r\n $windowInstance.close();\r\n }\r\n\r\n function readCustomerSystems(e) {\r\n e.success([\r\n { id: '1208E98F-96CB-4B31-B8D5-0AC1B4BBBBDE', name: 'Unicon' },\r\n { id: '55780AE8-8230-480B-987E-1A33B8D39BE0', name: 'ISY Proaktiv' }\r\n ]);\r\n\r\n //Select hack -> ng-model not working\r\n $timeout(100).then(function() {\r\n if ($scope.selectedCustomerSystemId) {\r\n $('#customer-systems').data('kendoDropDownList').value($scope.selectedCustomerSystemId);\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('GroupDetailsModalController', GroupDetailsModalController);\r\n\r\n GroupDetailsModalController.$inject = [\r\n '$q',\r\n '$rootScope',\r\n '$scope',\r\n '$windowInstance',\r\n 'groupService',\r\n 'keycardService',\r\n 'formTypes',\r\n 'currentFormType',\r\n 'groupId',\r\n 'locationsService',\r\n '$translate'\r\n ];\r\n\r\n function GroupDetailsModalController(\r\n $q,\r\n $rootScope,\r\n $scope,\r\n $windowInstance,\r\n groupService,\r\n keycardService,\r\n formTypes,\r\n currentFormType,\r\n groupId,\r\n locationsService,\r\n $translate\r\n ) {\r\n var isEdit = currentFormType === formTypes.edit;\r\n\r\n $scope.isEdit = isEdit;\r\n $scope.createLocation = true;\r\n $scope.groupId = groupId;\r\n $scope.name = '';\r\n $scope.info = '';\r\n $scope.selectedUser = null;\r\n $scope.users = [];\r\n\r\n $scope.closeWindow = closeWindow;\r\n $scope.saveAndClose = saveAndClose;\r\n\r\n $scope.usersOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readUsers\r\n }\r\n },\r\n dataTextField: 'userName',\r\n dataValueField: 'userId',\r\n optionLabel: {\r\n userName: $translate.instant(\"GROUP_DETAILS_MODAL_CONTROLLER_USERS_OPTIONS_LABEL\"),\r\n userId: ''\r\n }\r\n };\r\n\r\n initController();\r\n\r\n function initController() {\r\n if (isEdit) {\r\n groupService.getGroups().then(function (groups) {\r\n var currentGroup = _.find(groups, function (group) {\r\n return group.nummer === $scope.groupId;\r\n });\r\n\r\n if (currentGroup) {\r\n $scope.name = currentGroup.name;\r\n $scope.info = currentGroup.info.trim();\r\n $scope.groupNummer = $scope.groupId;\r\n\r\n if (currentGroup.user) {\r\n keycardService.getUsers().then(function (users) {\r\n var selectedUser = _.find(users, function (user) {\r\n return user.userId === currentGroup.user;\r\n });\r\n\r\n $scope.selectedUser = {\r\n userId: selectedUser.userId,\r\n userName: selectedUser.userName\r\n };\r\n });\r\n }\r\n\r\n $scope.selectedUser = currentGroup.user;\r\n }\r\n });\r\n }\r\n }\r\n\r\n function readUsers(e) {\r\n keycardService.getUsers().then(function (users) {\r\n if (users) {\r\n _.each(users, function (item) {\r\n $scope.users.push(item);\r\n });\r\n }\r\n $scope.usersDdlServerErrorText = null;\r\n e.success($scope.users);\r\n }).catch(function (error) {\r\n $scope.usersDdlServerErrorText = error.localizedMessage || fallbackErrorMessageText;\r\n e.error();\r\n });\r\n }\r\n\r\n function saveAndClose() {\r\n save().then(function (result) {\r\n $windowInstance.close(result);\r\n });\r\n }\r\n\r\n function save() {\r\n var deferred = $q.defer();\r\n\r\n event.preventDefault();\r\n\r\n if ($scope.validator.validate()) {\r\n $rootScope.$broadcast('showGlobalBusyIndicator', 'groupIndicator');\r\n\r\n var group = getGroupData();\r\n if (isEdit) {\r\n groupService.updateGroup(group).then(function (result) {\r\n deferred.resolve(result ? createResult(result, true) : null);\r\n $rootScope.$broadcast('hideBusyIndicator', 'groupIndicator');\r\n }, function () {\r\n deferred.reject();\r\n $rootScope.$broadcast('hideBusyIndicator', 'groupIndicator');\r\n });\r\n }\r\n else {\r\n var addGroup = groupService.addGroup(group);\r\n var addLocation = $scope.createLocation\r\n ? addGroup.then((groupResult) => {\r\n return locationsService.addLocation({\r\n name: group.name,\r\n address: group.name,\r\n country: $translate.instant(\"G_COUNTRY_NAME\"),\r\n externalId: groupResult.groupId,\r\n municipalityCode: null,\r\n city: '',\r\n });\r\n })\r\n : $q.resolve();\r\n\r\n $q.all([addGroup, addLocation]).then(function ([groupResult]) {\r\n deferred.resolve(groupResult ? createResult(groupResult, false) : null);\r\n $rootScope.$broadcast('hideBusyIndicator', 'groupIndicator');\r\n }, function () {\r\n deferred.reject();\r\n $rootScope.$broadcast('hideBusyIndicator', 'groupIndicator');\r\n });\r\n }\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function createResult(group, isEdit) {\r\n return {\r\n groupId: group.groupId,\r\n groupName: group.name,\r\n isEdit: isEdit\r\n }\r\n }\r\n\r\n function closeWindow(result) {\r\n\r\n event.preventDefault();\r\n $windowInstance.close(result);\r\n }\r\n\r\n function getGroupData() {\r\n return {\r\n \"groupId\": $scope.groupId,\r\n \"name\": $scope.name,\r\n \"info\": $scope.info,\r\n \"userId\": $scope.selectedUser.userId\r\n };\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ContainerOverviewV2Controller', ContainerOverviewV2Controller);\r\n\r\n ContainerOverviewV2Controller.$inject = [\r\n '$q',\r\n '$rootScope',\r\n '$scope',\r\n '$stateParams',\r\n '$kWindow',\r\n 'formTypes',\r\n 'containerService',\r\n 'locationsService',\r\n 'containerEditModalWidth',\r\n 'filterStateService',\r\n 'kendoGridUtility',\r\n 'deviceUtility',\r\n '$translate'\r\n ];\r\n const overviewTableVersion = 1.0;\r\n const defaultSensorSystemCount = 2;\r\n\r\n function ContainerOverviewV2Controller(\r\n $q,\r\n $rootScope,\r\n $scope,\r\n $stateParams,\r\n $kWindow,\r\n formTypes,\r\n containerService,\r\n locationsService,\r\n containerEditModalWidth,\r\n filterStateService,\r\n kendoGridUtility,\r\n deviceUtility,\r\n $translate,\r\n ) {\r\n var containerOverviewGridData = [];\r\n var locations = [];\r\n\r\n $scope.noCache = $stateParams.noCache;\r\n $scope.excelFileName = 'Containeroversikt.xlsx';\r\n\r\n $scope.isEditVisible = isEditVisible;\r\n $scope.exportToExcel = exportToExcel;\r\n $scope.openNewContainerModal = openNewContainerModal;\r\n $scope.openUpdateContainerModal = openUpdateContainerModal;\r\n\r\n const persistOptions = kendoGridUtility.persistOptions(overviewTableVersion);\r\n $scope.containerOverviewGridOptions = {\r\n dataSource: {\r\n data: containerOverviewGridData,\r\n schema: {\r\n model: {\r\n fields: {\r\n displayText: {},\r\n locationName: {},\r\n commune: {},\r\n containerNumberNum: { type: 'number' },\r\n fraction: {},\r\n battery: { type: 'number' },\r\n fill: { type: 'number' },\r\n sensor: {},\r\n sensorSystemId: { type: 'number' },\r\n updateTime: { type: 'date' },\r\n dateWhenFull: { type: 'date' },\r\n lastEmptyDate: { type: 'date' },\r\n }\r\n }\r\n },\r\n pageSize: 70,\r\n sort: filterStateService.getSortFromQueryString({\r\n field: 'locationName',\r\n dir: 'asc'\r\n }),\r\n filter: filterStateService.getFilterFromQueryString(),\r\n },\r\n sortable: true,\r\n filterable: true,\r\n noRecords: true,\r\n resizable: true,\r\n messages: {\r\n noRecords: ''\r\n },\r\n scrollable: {\r\n virtual: true\r\n },\r\n selectable: 'row',\r\n columns: getColumns(defaultSensorSystemCount),\r\n columnMenu: true,\r\n excel: {\r\n fileName: $scope.excelFileName,\r\n filterable: true,\r\n allPages: true\r\n },\r\n excelExport: containerOverviewGridExcelExport,\r\n change: onRowSelected,\r\n sort: filterStateService.storeGridSortInQueryString,\r\n filter: filterStateService.storeGridFilterInQueryString,\r\n filterMenuInit: kendoGridUtility.sortMulticheckboxFilterValues('commune'),\r\n columnMenuInit: kendoGridUtility.excludeColumnFromMenuList('actions'),\r\n columnHide: persistOptions,\r\n columnShow: persistOptions,\r\n columnResize: persistOptions,\r\n columnReorder: persistOptions,\r\n };\r\n\r\n function getColumns(sensorSystemsCount) {\r\n const columns = [\r\n {\r\n field: 'actions',\r\n title: ' ',\r\n width: '50px',\r\n template: '
',\r\n filterable: false,\r\n sortable: false,\r\n groupable: false\r\n },\r\n {\r\n field: 'displayText',\r\n title: $translate.instant(\"G_ID\"),\r\n width: '100px'\r\n },\r\n {\r\n field: 'locationName',\r\n title: $translate.instant(\"G_ADDRESS\"),\r\n width: '200px',\r\n },\r\n {\r\n field: 'commune',\r\n title: $translate.instant(\"G_MUNINCIPALITY\"),\r\n width: '90px',\r\n filterable: {\r\n multi: true,\r\n itemTemplate: kendoGridUtility.filterCheckboxTemplate($translate.instant(\"CONTAINER_OVERVIEW_NO_MUNINCIPALITY\")),\r\n },\r\n },\r\n { field: 'containerNumberNum', title: $translate.instant(\"CONTAINER_OVERVIEW_CONTAINER\"), width: '100px' },\r\n { field: 'containerType', title: $translate.instant(\"CONTAINER_OVERVIEW_CONTAINER_TYPE\"), width: '160px' },\r\n {\r\n field: 'fraction',\r\n title: $translate.instant(\"CONTAINER_OVERVIEW_FRACTION\"),\r\n width: '100px',\r\n filterable: {\r\n multi: true,\r\n }\r\n },\r\n ];\r\n\r\n for (let index = 0; index < sensorSystemsCount; index++) {\r\n columns.push(...getDeviceOverviewColumns(index));\r\n }\r\n\r\n return columns;\r\n }\r\n\r\n function getDeviceOverviewColumns(index) {\r\n const columns = [];\r\n\r\n if (index === 0) {\r\n columns.push({\r\n field: `deviceOverviews[${index}].battery`,\r\n title: getIndexedColumnTitle($translate.instant(\"CONTAINER_OVERVIEW_BATTERY\"), index),\r\n width: '94px',\r\n template: `#= deviceOverviews[${index}].battery !== -1 ? deviceOverviews[${index}].battery.toFixed(1) : \"N/A\" #`\r\n })\r\n }\r\n\r\n columns.push(\r\n {\r\n field: `deviceOverviews[${index}].fill`,\r\n title: getIndexedColumnTitle($translate.instant(\"CONTAINER_OVERVIEW_FILL_PERCENT\"), index),\r\n width: '90px',\r\n template: `#= deviceOverviews[${index}].fill !== -1 ? deviceOverviews[${index}].fill : \"N/A\" #`\r\n },\r\n {\r\n field: `deviceOverviews[${index}].deviceExternalId`,\r\n title: getIndexedColumnTitle($translate.instant(\"CONTAINER_OVERVIEW_EXTERNAL_ID\"), index),\r\n width: '90px',\r\n },\r\n {\r\n field: `deviceOverviews[${index}].externalSystem`,\r\n title: getIndexedColumnTitle($translate.instant(\"CONTAINER_OVERVIEW_EXTERNAL_SYSTEM\"), index),\r\n width: '120px',\r\n template: `#= deviceOverviews[${index}].sensorColumnTemplate #`,\r\n filterable: {\r\n multi: true,\r\n },\r\n },\r\n {\r\n title: getIndexedColumnTitle($translate.instant(\"CONTAINER_OVERVIEW_CREATED_AT\"), index),\r\n field: `deviceOverviews[${index}].createdAt`,\r\n width: '120px',\r\n format: $translate.instant(\"CONTAINER_OVERVIEW_CREATED_AT_DATE_FORMAT\"),\r\n filterable: {\r\n ui: 'datetimepicker',\r\n },\r\n },\r\n {\r\n title: getIndexedColumnTitle($translate.instant(\"CONTAINER_OVERVIEW_DATE_WHEN_FULL\"), index),\r\n field: `deviceOverviews[${index}].dateWhenFull`,\r\n width: '148px',\r\n format: $translate.instant(\"CONTAINER_OVERVIEW_DATE_WHEN_FULL_DATE_FORMAT\"),\r\n filterable: {\r\n ui: 'datetimepicker',\r\n },\r\n },\r\n {\r\n title: getIndexedColumnTitle($translate.instant(\"CONTAINER_OVERVIEW_LAST_EMPTY_DATE\"), index),\r\n field: `deviceOverviews[${index}].lastEmptyDate`,\r\n width: '120px',\r\n format: $translate.instant(\"CONTAINER_OVERVIEW_LAST_EMPTY_DATE_DATE_FORMAT\"),\r\n filterable: {\r\n ui: 'datetimepicker',\r\n },\r\n },\r\n );\r\n\r\n return columns;\r\n }\r\n\r\n function getIndexedColumnTitle(title, index) {\r\n if (index === 0) {\r\n return title;\r\n }\r\n\r\n return `${title} ${index + 1}`;\r\n }\r\n\r\n initController();\r\n\r\n function initController() {\r\n loadOverviewGridOptions();\r\n getContainerOverviewGridData();\r\n }\r\n\r\n function loadOverviewGridOptions() {\r\n const unwatch = $scope.$watch('containerOverviewGrid', (grid) => {\r\n if (!grid) return;\r\n\r\n unwatch();\r\n const options = kendoGridUtility.loadOptions('container-overview-grid', overviewTableVersion);\r\n if (options) {\r\n grid.setOptions(options);\r\n }\r\n })\r\n }\r\n\r\n function isEditVisible() {\r\n return $rootScope.isAccessible && $rootScope.isAccessible(\"NewContainer\", \"W\");\r\n }\r\n\r\n function openNewContainerModal() {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant(\"CONTAINER_OVERVIEW_NEW_CONTAINER_MODAL_TITLE\"),\r\n resizable: false,\r\n height: 600,\r\n width: 980,\r\n visible: false\r\n },\r\n templateUrl: 'app/containerOverviewV2/views/sensor-api-container-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'SensorApiContainerDetailsModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.add;\r\n },\r\n containerId: function () {\r\n return null;\r\n },\r\n updateCallbacks: function () {\r\n return {\r\n addContainerToGrid: () => { },\r\n updateContainerToGrid: () => { },\r\n };\r\n },\r\n locationId: function () {\r\n return null;\r\n }\r\n }\r\n });\r\n\r\n windowInstance.result.then(function (result) {\r\n if (result) {\r\n getContainerOverviewGridData();\r\n }\r\n });\r\n }\r\n\r\n function openUpdateContainerModal(dataItem) {\r\n var titleFraction = dataItem.fraction ? (' - ' + dataItem.fraction) : '';\r\n var titleAddress = dataItem.address ? (' - ' + dataItem.address) : '';\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: dataItem.containerNumber + titleAddress + titleFraction,\r\n resizable: false,\r\n height: 600,\r\n width: containerEditModalWidth,\r\n visible: false\r\n },\r\n templateUrl: 'app/containerOverviewV2/views/sensor-api-container-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'SensorApiContainerDetailsModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.edit;\r\n },\r\n containerId: function () {\r\n return dataItem.id;\r\n },\r\n updateCallbacks: function () {\r\n return {\r\n addContainerToGrid: () => { },\r\n updateContainerToGrid: () => { },\r\n };\r\n },\r\n locationId: function () {\r\n return null;\r\n }\r\n }\r\n });\r\n\r\n windowInstance.result.then(function (result) {\r\n if (result) {\r\n getContainerOverviewGridData();\r\n }\r\n });\r\n }\r\n\r\n function exportToExcel() {\r\n $scope.containerOverviewGrid.hideColumn(0);\r\n $scope.containerOverviewGrid.saveAsExcel();\r\n $scope.containerOverviewGrid.showColumn(0);\r\n }\r\n\r\n //Private functions\r\n function getContainerOverviewGridData() {\r\n showBusyIndicator();\r\n\r\n containerOverviewGridData = [];\r\n var requests = [\r\n locationsService.getLocations(false),\r\n containerService.getContainersV2($stateParams.noCache)\r\n ];\r\n\r\n $q.all(requests)\r\n .then(function (data) {\r\n locations = data[0];\r\n var containers = data[1];\r\n if (containers) {\r\n containerOverviewGridData = containers;\r\n var sensorSystemsCount = getCurrentSensorSystemColumnCount();\r\n containerOverviewGridData.forEach(c => extendGridData(c, sensorSystemsCount));\r\n\r\n $scope.containerOverviewGrid.dataSource.data(containerOverviewGridData);\r\n }\r\n })\r\n .finally(hideBusyIndicator);\r\n }\r\n\r\n function extendGridData(container, sensorSystemsCount) {\r\n var location = container.locationId ? locations.find(loc => loc.id === container.locationId) : null;\r\n\r\n container.id = container.containerId;\r\n container.containerNumberNum = Number(container.containerNumber);\r\n container.locationName = location ? location.name : '';\r\n container.commune = location ? location.municipalityCode : '';\r\n\r\n padDeviceOverviews(container, sensorSystemsCount);\r\n container.deviceOverviews.forEach(extendDeviceOverview);\r\n }\r\n\r\n function extendDeviceOverview(device) {\r\n device.createdAt = toDateOrEmpty(device.createdAt);\r\n device.dateWhenFull = toDateOrEmpty(device.dateWhenFull);\r\n device.lastEmptyDate = toDateOrEmpty(device.lastEmptyDate);\r\n device.sensorColumnTemplate = getSensorColumnTemplate(device)\r\n\r\n // Negative numbers are used to represent empty values so sorting works\r\n device.battery = device.battery || -1;\r\n device.fill = device.fill || -1;\r\n }\r\n\r\n function getSensorColumnTemplate(device) {\r\n let template = device.externalSystem || '';\r\n\r\n const detailsLink = deviceUtility.getDeviceDetailsLink(device.externalSystem, device.deviceExternalId, true);\r\n if (detailsLink) {\r\n template += `
`;\r\n }\r\n\r\n return template;\r\n }\r\n\r\n function padDeviceOverviews(item, sensorSystemsCount) {\r\n for (let index = item.deviceOverviews.length; index < sensorSystemsCount; index++) {\r\n item.deviceOverviews[index] = {};\r\n }\r\n }\r\n\r\n function addContainerToGrid(container) {\r\n containerOverviewGridData.push(container);\r\n extendGridData(container, getCurrentSensorSystemColumnCount());\r\n $scope.containerOverviewGrid.dataSource.data(containerOverviewGridData);\r\n }\r\n\r\n function updateContainerToGrid(container) {\r\n var containerIndexOverview = _.findIndex(containerOverviewGridData, c => c.containerId == container.containerId);\r\n containerOverviewGridData.splice(containerIndexOverview, 1);\r\n\r\n containerOverviewGridData.push(container);\r\n extendGridData(container, getCurrentSensorSystemColumnCount());\r\n $scope.containerOverviewGrid.dataSource.data(containerOverviewGridData);\r\n }\r\n\r\n function toDateOrEmpty(date) {\r\n return date == null ? '' : new Date(date);\r\n }\r\n\r\n function getCurrentSensorSystemColumnCount() {\r\n return defaultSensorSystemCount;\r\n }\r\n\r\n function onRowSelected() {\r\n var selectedRows = this.select();\r\n $rootScope.selectedContainerId = this.dataItem(selectedRows[0]).id;\r\n }\r\n\r\n function containerOverviewGridExcelExport(e) {\r\n e.workbook.fileName = $translate.instant(\"CONTAINER_OVERVIEW_CONTAINER_OVERVIEW_FILENAME\") + kendo.toString(new Date, 'ddMMyyyy_HHmmss') + '.xlsx';\r\n var sheet = e.workbook.sheets[0];\r\n var columnWidths = this.element.find('.k-grid-header colgroup col');\r\n\r\n for (var i = 0; i < sheet.columns.length; i++) {\r\n if ($(columnWidths[i]).attr('style')) {\r\n sheet.columns[i].width = 160;\r\n } else {\r\n sheet.columns[i].width = 16;\r\n }\r\n }\r\n }\r\n\r\n function showBusyIndicator() {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'containerIndicator',\r\n destination: '#container-overview-view-v2',\r\n message: $translate.instant(\"G_BUSY_INDICATOR\"),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n }\r\n\r\n function hideBusyIndicator() {\r\n $rootScope.$broadcast('hideBusyIndicator', 'containerIndicator')\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('SensorApiContainerDetailsModalController', SensorApiContainerDetailsModalController);\r\n\r\n SensorApiContainerDetailsModalController.$inject = [\r\n '$q',\r\n '$scope',\r\n '$rootScope',\r\n '$kWindow',\r\n '$windowInstance',\r\n 'containerService',\r\n 'customerSystemsService',\r\n 'guidService',\r\n 'formTypes',\r\n 'currentFormType',\r\n 'containerId',\r\n 'externalSystemsService',\r\n 'locationsService',\r\n 'fractionsService',\r\n 'containerTypesService',\r\n 'updateCallbacks',\r\n 'deviceService',\r\n 'locationId',\r\n 'fallbackErrorMessageText',\r\n '$translate'\r\n ];\r\n\r\n function SensorApiContainerDetailsModalController(\r\n $q,\r\n $scope,\r\n $rootScope,\r\n $kWindow,\r\n $windowInstance,\r\n containerService,\r\n customerSystemsService,\r\n guidService,\r\n formTypes,\r\n currentFormType,\r\n containerId,\r\n externalSystemsService,\r\n locationsService,\r\n fractionsService,\r\n containerTypesService,\r\n updateCallbacks,\r\n deviceService,\r\n locationId,\r\n fallbackErrorMessageText,\r\n $translate,\r\n ) {\r\n var customerSystems = [];\r\n var containerCustomerSystems = [];\r\n var allContainerCustomerSystems = [];\r\n var container = {};\r\n var externalSystems = [];\r\n var addedSystemsIds = [];\r\n var isDirty = false;\r\n var isInitialized = false;\r\n\r\n $scope.isBusy = false;\r\n $scope.isEdit = currentFormType === formTypes.edit;\r\n\r\n initController();\r\n\r\n function initController() {\r\n $scope.number = '';\r\n $scope.name = '';\r\n $scope.location = '';\r\n $scope.externalId = '';\r\n $scope.fraction = '';\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.close = close;\r\n $scope.save = save;\r\n $scope.openAddSensor = openAddSensor;\r\n $scope.openUpdateSensor = openUpdateSensor;\r\n $scope.detachSensor = detachSensor;\r\n $scope.updateDevice = updateDevice;\r\n $scope.isContainerDeletable = isContainerDeletable;\r\n $scope.deleteContainer = deleteContainer;\r\n $scope.togglePriority = togglePriority;\r\n $scope.toggleStatus = toggleStatus;\r\n $scope.devices = [];\r\n\r\n $scope.selectedLocationId = null;\r\n $scope.selectedContainerTypeId = null;\r\n $scope.selectedFractionId = null;\r\n\r\n $scope.fractionValid = true;\r\n $scope.containerTypeValid = true;\r\n $scope.nameValid = true;\r\n\r\n var requests = [];\r\n if ($scope.isEdit) {\r\n requests = [\r\n customerSystemsService.getCustomerSystems(),\r\n externalSystemsService.getExternalSystems(),\r\n customerSystemsService.getAllContainerCustomerSystems(),\r\n containerService.getContainerByContainerId(containerId),\r\n containerService.getCustomerSystemsForContainer(containerId)];\r\n } else {\r\n requests = [\r\n customerSystemsService.getCustomerSystems(),\r\n externalSystemsService.getExternalSystems()];\r\n }\r\n\r\n $q.all(requests)\r\n .then(data => {\r\n customerSystems = data[0];\r\n externalSystems = data[1];\r\n\r\n $scope.selectedLocationId = container.locationId = locationId;\r\n\r\n if (data.length > 2) {\r\n allContainerCustomerSystems = data[2];\r\n container = data[3];\r\n containerCustomerSystems = data[4];\r\n $scope.devices = extDevices(container.devices);\r\n $scope.number = container.containerNumber;\r\n $scope.name = container.name;\r\n $scope.location = container.locationId\r\n $scope.externalId = container.externalId;\r\n\r\n $scope.selectedLocationId = container.locationId;\r\n $scope.selectedContainerTypeId = container.containerTypeId;\r\n $scope.selectedFractionId = container.fractionId;\r\n }\r\n\r\n _.forEach(containerCustomerSystems, ccSystem => ccSystem.selectedCustomerSystemId = ccSystem.customerSystem.id);\r\n\r\n setTimeout(() => {\r\n $('.k-item.k-state-default.k-first').click();\r\n }, 1000);\r\n\r\n $scope.locationOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readLocations\r\n }\r\n },\r\n dataTextField: 'name',\r\n dataValueField: 'id',\r\n change: function (e) {\r\n $scope.selectedLocationId = this.value();\r\n },\r\n filter: 'contains'\r\n };\r\n\r\n $scope.containerTypeOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readContainerTypes\r\n }\r\n },\r\n dataTextField: 'label',\r\n dataValueField: 'id',\r\n change: function (e) {\r\n $scope.selectedContainerTypeId = this.value();\r\n }\r\n };\r\n\r\n $scope.fractionOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readFractions\r\n }\r\n },\r\n dataTextField: 'name',\r\n dataValueField: 'id',\r\n change: function (e) {\r\n $scope.selectedFractionId = this.value();\r\n },\r\n filter: 'contains'\r\n };\r\n\r\n $scope.sensorGridOptions = {\r\n dataSource: new kendo.data.DataSource({\r\n transport: {\r\n read: function (e) {\r\n e.success($scope.devices);\r\n }\r\n }\r\n }),\r\n columns: [\r\n {\r\n title: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_TABLE_HEADER_EXTERNAL_SYSTEM\"),\r\n field: 'externalSystem',\r\n },\r\n {\r\n title: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_TABLE_HEADER_EXTERNAL_ID\"),\r\n field: 'externalId',\r\n },\r\n {\r\n title: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_TABLE_HEADER_SERIAL\"),\r\n field: 'serial',\r\n },\r\n {\r\n title: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_TABLE_HEADER_FULL_HEIGHT\"),\r\n field: 'fullHeight',\r\n },\r\n {\r\n title: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_TABLE_HEADER_SENSOR_HEIGHT\"),\r\n field: 'sensorHeight',\r\n },\r\n {\r\n title: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_TABLE_HEADER_CUSTOMER_KEY\"),\r\n field: 'customerKey',\r\n },\r\n {\r\n title: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_TABLE_HEADER_IS_PRIORITY\"),\r\n field: 'isPriority',\r\n width: '60px',\r\n template: ''\r\n },\r\n {\r\n title: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_TABLE_HEADER_IS_ACTIVE\"),\r\n field: 'isActive',\r\n width: '40px',\r\n template: ''\r\n },\r\n {\r\n field: 'actions',\r\n title: ' ',\r\n width: '50px',\r\n template: '
' +\r\n '
',\r\n filterable: false,\r\n sortable: false,\r\n groupable: false\r\n },\r\n { hidden: true, field: \"id\" },\r\n ],\r\n editable: false,\r\n noRecords: {\r\n template: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_TABLE_NO_RECORDS\"),\r\n },\r\n scrollable: false,\r\n };\r\n\r\n $scope.tabOptions = {\r\n animation: false,\r\n value: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_TAB_OPTIONS\"),\r\n dataTextField: 'Name',\r\n dataContentUrlField: 'ContentUrl',\r\n activate: function (e) {\r\n var activeTab = e.item.innerText.toLowerCase();\r\n $scope.$applyAsync(() => {\r\n $scope.isSensorTabActive = (activeTab === 'sensorer');\r\n $scope.isCustomerSystemTabActive = (activeTab === 'kundesystem');\r\n })\r\n\r\n },\r\n dataSource: new kendo.data.DataSource({\r\n data: [\r\n { Name: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_KENDO_DATA_SOURCE_SENSORS\"), ContentUrl: 'app/containerOverviewV2/views/sensor-details-tab.html' },\r\n { Name: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_KENDO_DATA_SOURCE_CUSTOMER_SYSTEM\"), ContentUrl: 'app/containerOverviewV2/views/customer-system-tab.html' }\r\n ]\r\n })\r\n };\r\n\r\n isInitialized = true;\r\n\r\n if (!isContainerDeletable()) {\r\n $('.k-window .btn.btn-danger').kendoTooltip({\r\n width: 300,\r\n position: 'bottom',\r\n content: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_CUSTOMER_SYSTEM_GRID_CANNOT_DELETE_CONTAINER_MESSAGE\"),\r\n animation: {\r\n open: {\r\n effects: 'zoom',\r\n duration: 150\r\n }\r\n }\r\n }).data('kendoTooltip');\r\n }\r\n });\r\n\r\n $scope.addCustomerSystem = function () {\r\n $('#customer-systems-grid').getKendoGrid().addRow();\r\n }\r\n\r\n $scope.customerSystemGridOptions = {\r\n dataSource: new kendo.data.DataSource({\r\n transport: {\r\n read: function (e) {\r\n if ($scope.isEdit === formTypes.add) {\r\n e.success([]);\r\n } else {\r\n e.success(containerCustomerSystems);\r\n }\r\n },\r\n create: function (e) {\r\n var containerCustomerSystem = angular.copy(e.data);\r\n if (_.some(addedSystemsIds, a => a === containerCustomerSystem.selectedCustomerSystemId)) {\r\n e.error();\r\n } else {\r\n var usedCustomerSystem = allContainerCustomerSystems.find(c =>\r\n c.customerSystem\r\n && c.customerSystem.id === containerCustomerSystem.selectedCustomerSystemId\r\n && c.externalId === containerCustomerSystem.externalId\r\n );\r\n\r\n if (usedCustomerSystem) {\r\n var createWithExisting = confirm(\r\n $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_CUSTOMER_SYSTEM_GRID_EXTERNAL_ID_IS_IN_USE_MESSAGE\"),\r\n );\r\n if (!createWithExisting) {\r\n $scope.customerSystemsGrid.cancelRow();\r\n return;\r\n }\r\n }\r\n\r\n containerService.addCustomerSystemForContainer(containerCustomerSystem, container.id)\r\n .then(function (response) {\r\n response.selectedCustomerSystemId =\r\n response.customerSystem\r\n && response.customerSystem.id;\r\n e.success(response);\r\n addedSystemsIds.push(response.id);\r\n }, function (error) {\r\n alert('adding customer system failed');\r\n e.error(error);\r\n });\r\n }\r\n //create in service\r\n },\r\n update: function (e) {\r\n var containerCustomerSystem = angular.copy(e.data);\r\n containerCustomerSystem.customerSystem = _.find(customerSystems, cs => cs.id === containerCustomerSystem.selectedCustomerSystemId);\r\n containerService.updateContainerCustomerSystem(containerCustomerSystem)\r\n .then(function (response) {\r\n e.success();\r\n }, function (error) {\r\n alert('update customer system failed')\r\n e.error(error);\r\n });\r\n },\r\n destroy: function (e) {\r\n var containerCustomerSystem = angular.copy(e.data);\r\n containerService.removeCustomerSystemFromContainer(containerCustomerSystem.id)\r\n .then(function (response) {\r\n e.success();\r\n var ind = _.findIndex(addedSystemsIds, a => a === response)\r\n addedSystemsIds.splice(ind, 1);\r\n }, function (error) {\r\n alert('delete customer system failed')\r\n e.error(error);\r\n });\r\n }\r\n },\r\n batch: false,\r\n schema: {\r\n model: {\r\n id: \"id\",\r\n fields: {\r\n externalId: {\r\n editable: true,\r\n validation: { required: { message: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_CUSTOMER_SYSTEM_GRID_EXTERNAL_ID_REQUIRED_MESSAGE\") } }\r\n },\r\n selectedCustomerSystemId: { editable: true }\r\n }\r\n }\r\n }\r\n }),\r\n columns: [\r\n {\r\n field: 'selectedCustomerSystemId',\r\n title: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_CUSTOMER_SYSTEM_GRID_HEADER_CUSTOMER_SYSTEM\"),\r\n editor: customerSystemDropDownEditor,\r\n template: function (dataItem) {\r\n if (dataItem.selectedCustomerSystemId) {\r\n var index = customerSystems.findIndex(function (system) {\r\n return system.id === dataItem.selectedCustomerSystemId;\r\n });\r\n return customerSystems[index].name;\r\n }\r\n return '';\r\n }\r\n },\r\n {\r\n field: 'externalId',\r\n title: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_CUSTOMER_SYSTEM_GRID_HEADER_CUSTOMER_SYSTEM_ID\"),\r\n width: 240,\r\n },\r\n {\r\n command: [\r\n { name: \"edit\", text: { edit: \" \", update: \" \", cancel: \" \" } },\r\n { name: \"destroy\", text: \" \" }\r\n ],\r\n title: ' ',\r\n width: 88\r\n }\r\n ],\r\n scrollable: false,\r\n noRecords: {\r\n template: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_CUSTOMER_SYSTEM_GRID_NO_RECORDS\"),\r\n },\r\n editable: 'inline'\r\n };\r\n }\r\n\r\n function openUpdateSensor(device) {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: 'Sensor',\r\n resizable: false,\r\n height: 550,\r\n width: 450,\r\n visible: false\r\n },\r\n templateUrl: 'app/device/device-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'DeviceDetailsModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.edit;\r\n },\r\n containerId: function () {\r\n return containerId;\r\n },\r\n updateCallbacks: function () {\r\n return {\r\n addDeviceToGrid,\r\n updateDeviceToGrid\r\n };\r\n },\r\n device: function () {\r\n return device;\r\n }\r\n }\r\n });\r\n }\r\n\r\n function addDeviceToGrid(device) {\r\n container.devices.push(device);\r\n $('#sensor-grid').getKendoGrid().dataSource.read();\r\n }\r\n\r\n function updateDeviceToGrid(device) {\r\n if (device.isPriority) {\r\n container.devices.forEach((d) => d.isPriority = false);\r\n }\r\n\r\n if (\r\n typeof device.externalSystem === 'object'\r\n && device.externalSystem.name\r\n ) {\r\n device.externalSystem = device.externalSystem.name;\r\n }\r\n\r\n var deviceIndex = _.findIndex(container.devices, d => d.id == device.id);\r\n container.devices.splice(deviceIndex, 1, device);\r\n $('#sensor-grid').getKendoGrid().dataSource.read();\r\n }\r\n\r\n function openAddSensor() {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_ADD_SENSOR_MODAL_TITLE\"),\r\n resizable: false,\r\n height: 360,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/device/connect-sensor-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'ConnectSensorModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.edit;\r\n },\r\n containerId: function () {\r\n return containerId;\r\n },\r\n updateCallbacks: function () {\r\n return {\r\n addDeviceToGrid,\r\n updateDeviceToGrid\r\n };\r\n },\r\n device: function () {\r\n return null;\r\n }\r\n }\r\n });\r\n\r\n windowInstance.result\r\n .then((devices) => {\r\n showSensorBusyIndicator();\r\n if (devices && devices.length) {\r\n return $q.all(_.map(devices, d => containerService.connectDevice(d, containerId)));\r\n }\r\n })\r\n .then(() => {\r\n containerService.getContainerByContainerId(containerId).then((cont) => {\r\n extDevices(cont.devices);\r\n $scope.devices = cont.devices;\r\n container.devices = $scope.devices;\r\n $('#sensor-grid').getKendoGrid().dataSource.read();\r\n hideSensorBusyIndicator();\r\n });\r\n });\r\n }\r\n\r\n function showSensorBusyIndicator(message) {\r\n showBusyIndicator('sensor-tab-container', message);\r\n }\r\n\r\n function showMainBusyIndicator(message) {\r\n showBusyIndicator('sensorapi-container-details-modal', message);\r\n }\r\n\r\n function showBusyIndicator(destination, message) {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'container-modal-' + destination,\r\n destination: '#' + destination,\r\n message: message,\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n }\r\n\r\n function hideSensorBusyIndicator() {\r\n $rootScope.$broadcast('hideBusyIndicator', 'container-modal-sensor-tab-container');\r\n }\r\n\r\n function hideMainBusyIndicator() {\r\n $rootScope.$broadcast('hideBusyIndicator', 'container-modal-sensorapi-container-details-modal');\r\n }\r\n\r\n function detachSensor(device) {\r\n let confirmText = $translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_DETACH_SENSOR_CONFIRM_MESSAGE\");\r\n if (confirm(`${confirmText}: ${device.externalId}?`)) {\r\n if (device && device.id) {\r\n showSensorBusyIndicator($translate.instant(\"G_BUSY_INDICATOR\"));\r\n\r\n deviceService.disconnectDevice(device.externalId, device.externalSystemId).then(() => {\r\n var deviceIndex = _.findIndex(container.devices, d => d.id == device.id);\r\n if (deviceIndex > -1) {\r\n container.devices.splice(deviceIndex, 1);\r\n $('#sensor-grid').getKendoGrid().dataSource.read();\r\n }\r\n hideSensorBusyIndicator();\r\n }, function () {\r\n hideSensorBusyIndicator();\r\n });\r\n }\r\n }\r\n }\r\n\r\n function close(refresh) {\r\n if (!$scope.isBusy) {\r\n $windowInstance.close(refresh || isDirty);\r\n }\r\n }\r\n\r\n function save() {\r\n if (!$scope.isBusy) {\r\n showMainBusyIndicator();\r\n $scope.isBusy = true;\r\n $scope.fractionValid = $scope.selectedFraction ? true : false;\r\n $scope.containerTypeValid = $scope.selectedContainerType ? true : false;\r\n $scope.nameValid = $scope.name ? true : false;\r\n\r\n var deferred = $q.defer();\r\n\r\n var updateContainerDto = {\r\n id: containerId ? containerId : guidService.emptyGuid(),\r\n containerNumber: $scope.number,\r\n name: $scope.name,\r\n locationId: $scope.selectedLocationId,\r\n fractionId: $scope.selectedFractionId,\r\n containerCustomerSystems: [],\r\n externalId: $scope.externalId,\r\n containerTypeId: $scope.selectedContainerTypeId,\r\n devices: []\r\n }\r\n\r\n if ($scope.fractionValid && $scope.containerTypeValid && $scope.nameValid) {\r\n if ($scope.isEdit) {\r\n containerService.updateContainerV2(updateContainerDto)\r\n .then((container) => {\r\n if (updateCallbacks) {\r\n var containerOverview = { ...container };\r\n containerOverview.fraction = $scope.selectedFraction.name;\r\n containerOverview.containerId = container.id;\r\n updateCallbacks.updateContainerToGrid(containerOverview);\r\n }\r\n isDirty = true;\r\n $scope.isBusy = false;\r\n hideMainBusyIndicator();\r\n deferred.resolve();\r\n }).catch(() => {\r\n $scope.isBusy = false;\r\n hideMainBusyIndicator();\r\n });;\r\n } else {\r\n containerService.addContainerV2(updateContainerDto)\r\n .then((container) => {\r\n $scope.number = container.containerNumber;\r\n $scope.isEdit = formTypes.edit;\r\n containerId = container.id;\r\n if (updateCallbacks) {\r\n var containerOverview = { ...container };\r\n containerOverview.fraction = $scope.selectedFraction.name;\r\n containerOverview.containerId = container.id;\r\n updateCallbacks.addContainerToGrid(containerOverview);\r\n }\r\n $scope.isBusy = false;\r\n hideMainBusyIndicator();\r\n deferred.resolve();\r\n }).catch(() => {\r\n $scope.isBusy = false;\r\n hideMainBusyIndicator();\r\n });\r\n }\r\n }\r\n else {\r\n $scope.isBusy = false;\r\n hideMainBusyIndicator();\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n\r\n function saveAndClose() {\r\n if (!$scope.isBusy) {\r\n save()\r\n .then(() => {\r\n close(true);\r\n }).catch(() => {\r\n alert($translate.instant(\"G_SAVE_FAILED\"));\r\n });\r\n }\r\n }\r\n\r\n function customerSystemDropDownEditor(container, options) {\r\n $('')\r\n .appendTo(container)\r\n .kendoDropDownList({\r\n dataTextField: 'name',\r\n dataValueField: 'id',\r\n dataSource: new kendo.data.DataSource({\r\n transport: {\r\n read: function (e) {\r\n e.success(getAvailableSystems(customerSystems));\r\n }\r\n }\r\n })\r\n });\r\n }\r\n\r\n function extDevices(devices) {\r\n try {\r\n _.forEach(devices, d =>\r\n d.externalSystem = _.find(externalSystems, ex => ex.id.toLowerCase() == d.externalSystemId.toLowerCase()).name);\r\n return devices;\r\n } catch{\r\n return [];\r\n }\r\n }\r\n\r\n function extContainerTypes(containerTypes) {\r\n _.forEach(containerTypes, c => c.label = (c.name ? c.name : 'unnamed'));\r\n }\r\n\r\n function readFractions(e) {\r\n fractionsService.getFractions().then(fractions => {\r\n $scope.fractionsDdlServerErrorText = null;\r\n e.success(fractions || []);\r\n $scope.selectedFraction = _.find(fractions, f => f.id === container.fractionId);\r\n }).catch(function (error) {\r\n $scope.fractionsDdlServerErrorText = error.localizedMessage || fallbackErrorMessageText;\r\n e.error();\r\n });\r\n }\r\n\r\n function readLocations(e) {\r\n locationsService.getLocations().then(locations => {\r\n $scope.locationsDdlServerErrorText = null;\r\n e.success(locations || []);\r\n $scope.selectedLocation = _.find(locations, loc => loc.id === container.locationId);\r\n }).catch(function (error) {\r\n $scope.locationsDdlServerErrorText = error.localizedMessage || fallbackErrorMessageText;\r\n e.error();\r\n });\r\n }\r\n\r\n function readContainerTypes(e) {\r\n containerTypesService.getContainerTypes().then(containerTypes => {\r\n extContainerTypes(containerTypes || []);\r\n $scope.containerTypesDdlServerErrorText = null;\r\n e.success(containerTypes || []);\r\n $scope.selectedContainerType = _.find(containerTypes, ct => ct.id === container.containerTypeId);\r\n }).catch(function (error) {\r\n $scope.containerTypesDdlServerErrorText = error.localizedMessage || fallbackErrorMessageText;\r\n e.error();\r\n });\r\n }\r\n\r\n function getAvailableSystems(customerSystems) {\r\n var customerSystemGridCellContents = _.map($('#customer-systems-grid td'), item => $(item).html());\r\n return _.reject(customerSystems, c => _.some(customerSystemGridCellContents, content => content === c.name))\r\n }\r\n\r\n function updateDevice(device) {\r\n var deviceDto = {\r\n id: device.id,\r\n externalId: device.externalId,\r\n externalSystemId: device.externalSystemId,\r\n isActive: device.isActive,\r\n isPriority: device.isPriority\r\n }\r\n\r\n showSensorBusyIndicator();\r\n deviceService.updateDevice(deviceDto).then(function (updatedDevice) {\r\n updateDeviceToGrid(updatedDevice);\r\n hideSensorBusyIndicator();\r\n });\r\n }\r\n\r\n //ng-bind alternative workaround \r\n function togglePriority(device) {\r\n device.isPriority = !device.isPriority;\r\n updateDevice(device);\r\n }\r\n\r\n //ng-bind alternative workaround \r\n function toggleStatus(device) {\r\n device.isActive = !device.isActive;\r\n updateDevice(device);\r\n }\r\n\r\n function isContainerDeletable() {\r\n return isInitialized\r\n && $scope.devices.length === 0\r\n && containerCustomerSystems.length === 0;\r\n }\r\n\r\n function deleteContainer() {\r\n if (\r\n !isContainerDeletable()\r\n || !confirm($translate.instant(\"SENSOR_API_CONTAINER_DETAILS_MODAL_DELETE_CONTAINER_CONFIRM_MESSAGE\"))\r\n ) {\r\n return;\r\n }\r\n\r\n containerService.deleteContainer(containerId)\r\n .then(() => close(true));\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('KeyCardRegistrationModalController', KeyCardRegistrationModalController);\r\n\r\n KeyCardRegistrationModalController.$inject = [\r\n '$q',\r\n '$timeout',\r\n '$scope',\r\n '$stateParams',\r\n '$windowInstance',\r\n 'keycardService',\r\n 'formTypes',\r\n 'currentFormType',\r\n 'groupName',\r\n 'groupId',\r\n 'keyCard',\r\n 'keycardUtility',\r\n 'groupService',\r\n 'fallbackErrorMessageText'\r\n ];\r\n\r\n function KeyCardRegistrationModalController(\r\n $q,\r\n $timeout,\r\n $scope,\r\n $stateParams,\r\n $windowInstance,\r\n keycardService,\r\n formTypes,\r\n currentFormType,\r\n groupName,\r\n groupId,\r\n keyCard,\r\n keycardUtility,\r\n groupService,\r\n fallbackErrorMessageText\r\n ) {\r\n\r\n $scope.isAdditionDisabled = currentFormType === formTypes.edit;\r\n\r\n $scope.containerId = $stateParams.containerId;\r\n $scope.lastName = { Value: '', Remember: true };\r\n $scope.firstName = { Value: '', Remember: true };\r\n $scope.address = { Value: '', Remember: true };\r\n $scope.city = { Value: '', Remember: true };\r\n $scope.status = { Value: 0, Remember: true };\r\n $scope.selectedUser = { Value: '', Remember: true };\r\n $scope.groupName = groupName;\r\n $scope.groupId = groupId;\r\n $scope.newKey = '';\r\n $scope.users = [];\r\n $scope.cardKeys = [];\r\n $scope.errorMessage = undefined;\r\n \r\n $scope.usersOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readUsers\r\n }\r\n },\r\n dataTextField: \"userName\",\r\n dataValueField: \"userId\",\r\n optionLabel: {\r\n userName: \"Velg omrÃ¥de\",\r\n userId: \"\"\r\n },\r\n dataBound: (e) => {\r\n if (e.sender.dataSource.total() === 1) {\r\n e.sender.select(1);\r\n $scope.selectedUser.Value = e.sender.dataItem(1);\r\n }\r\n }\r\n };\r\n\r\n $scope.groupOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readGroups\r\n }\r\n },\r\n dataTextField: \"name\",\r\n dataValueField: \"nummer\",\r\n optionLabel: {\r\n name: \"Velg gruppe\",\r\n nummer: \"\"\r\n },\r\n filter: 'contains',\r\n }\r\n\r\n $scope.addKey = addKey;\r\n $scope.closeWindow = closeWindow;\r\n $scope.save = save;\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.removeKey = removeKey;\r\n\r\n $scope.source = new kendo.data.DataSource({\r\n data: $scope.cardKeys\r\n });\r\n\r\n $timeout(250).then(initController);\r\n\r\n function initController() {\r\n if (currentFormType === formTypes.edit) {\r\n if (keyCard) {\r\n $scope.newKey = keyCard.cardNumber;\r\n $scope.cardKeys.push($scope.newKey);\r\n\r\n $scope.firstName.Value = keyCard.firstName;\r\n $scope.lastName.Value = keyCard.lastName;\r\n $scope.address.Value = keyCard.streetAddress;\r\n $scope.city.Value = keyCard.cityAddress;\r\n $scope.status.Value = keyCard.cardDeactivated;\r\n\r\n $scope.selectedUser.Value = {\r\n userId: keyCard.userId,\r\n userName: keyCard.userName\r\n };\r\n }\r\n } else {\r\n $(\"#newKey\").focus();\r\n }\r\n }\r\n\r\n function addKey(e) {\r\n $scope.errorMessage = undefined;\r\n var charCode = (e.which) ? e.which : e.keyCode;\r\n if (charCode === 13) {\r\n event.preventDefault();\r\n\r\n var exist = $scope.cardKeys.indexOf($scope.newKey);\r\n if ($scope.newKey && exist < 0) {\r\n var convertResult = keycardUtility.convertKeycardNumber($scope.newKey);\r\n if (!convertResult.errorMessage) {\r\n $scope.cardKeys.push(convertResult.returnStr);\r\n $scope.newKey = '';\r\n } else {\r\n $scope.errorMessage = convertResult.errorMessage;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function removeKey(e) {\r\n var index = $scope.cardKeys.indexOf(e);\r\n if (index > -1) {\r\n $scope.cardKeys.splice(index, 1);\r\n }\r\n }\r\n\r\n function closeWindow(result) {\r\n event.preventDefault();\r\n\r\n $windowInstance.close(result);\r\n }\r\n\r\n function saveAndClose() {\r\n event.preventDefault();\r\n\r\n saveKeycards().then(function () {\r\n $windowInstance.close(true);\r\n });\r\n }\r\n\r\n function save() {\r\n event.preventDefault();\r\n\r\n saveKeycards().then(function () {\r\n resetWindow();\r\n });\r\n }\r\n\r\n function saveKeycards() {\r\n var deferred = $q.defer();\r\n\r\n if ($scope.validator.validate()) {\r\n var keyCards = getKeyCardData();\r\n\r\n if (currentFormType === formTypes.add) {\r\n keycardService.addKeycards(keyCards).then(function (result) {\r\n $scope.cardKeys = [];\r\n deferred.resolve(result);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n } else {\r\n keycardService.updateKeycard(keyCards).then(function (result) {\r\n deferred.resolve(result);\r\n }, function () {\r\n deferred.reject();\r\n });\r\n }\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n //Private functions\r\n function getKeyCardData() {\r\n return {\r\n \"groupId\": $scope.groupId || $scope.selectedGroup.nummer,\r\n \"cardNumbers\": $scope.cardKeys,\r\n \"lastName\": $scope.lastName.Value,\r\n \"cityAddress\": $scope.city.Value,\r\n \"cardDeactivated\": $scope.status.Value,\r\n \"address\": $scope.address.Value,\r\n \"firstName\": $scope.firstName.Value,\r\n \"communeId\": $scope.selectedUser.Value.userId\r\n };\r\n }\r\n\r\n function readUsers(e) {\r\n keycardService.getUsers().then(function (users) {\r\n if (users) {\r\n _.each(users, function (item) {\r\n $scope.users.push(item);\r\n });\r\n }\r\n $scope.groupsDdlServerErrorText = null;\r\n e.success($scope.users);\r\n }).catch(function (error) {\r\n $scope.groupsDdlServerErrorText = error.localizedMessage || fallbackErrorMessageText;\r\n e.error();\r\n });\r\n }\r\n\r\n function resetWindow() {\r\n if (!$scope.lastName.Remember) { $scope.lastName.Value = ''; }\r\n if (!$scope.firstName.Remember) { $scope.firstName.TexValuet = ''; }\r\n if (!$scope.address.Remember) { $scope.address.Value = ''; }\r\n if (!$scope.city.Remember) { $scope.city.Value = ''; }\r\n if (!$scope.selectedUser.Remember) { $scope.selectedUser.Value = ''; }\r\n if (!$scope.status.Remember) { $scope.status.Value = 0; }\r\n }\r\n\r\n function readGroups(e) {\r\n groupService.getGroups().then(function (groups) {\r\n $scope.usersDdlServerErrorText = null;\r\n e.success(groups);\r\n }).catch(function (error) {\r\n $scope.usersDdlServerErrorText = error.localizedMessage || fallbackErrorMessageText;\r\n e.error();\r\n });\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('KeycardsOverviewController', KeycardsOverviewController);\r\n\r\n KeycardsOverviewController.$inject = [\r\n '$rootScope',\r\n '$scope',\r\n '$stateParams',\r\n '$kWindow',\r\n '$timeout',\r\n 'formTypes',\r\n 'containerService',\r\n 'keycardService'\r\n ];\r\n\r\n function KeycardsOverviewController(\r\n $rootScope,\r\n $scope,\r\n $stateParams,\r\n $kWindow,\r\n $timeout,\r\n formTypes,\r\n containerService,\r\n keycardService\r\n ) {\r\n $scope.containerId = $stateParams.containerId;\r\n $scope.noCache = $stateParams.noCache;\r\n\r\n $scope.groupName = '';\r\n $scope.KeyCardsOverviewGridData = [];\r\n $scope.exportToExcel = exportToExcel;\r\n $scope.excelFileName = 'Nokkelkortoversikt.xlsx';\r\n\r\n $scope.openKeyCardRegistrationModal = openKeyCardRegistrationModal;\r\n $scope.openUpdateKeyCardModal = openUpdateKeyCardModal;\r\n $scope.exportToExcel = exportToExcel;\r\n\r\n $scope.groupOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readGroups\r\n }\r\n },\r\n dataTextField: 'group',\r\n dataValueField: 'groupId',\r\n change: function (e) {\r\n var selectedGroupId = this.value();\r\n $scope.filteredKeyCardsData = _.filter($scope.KeyCardsOverviewGridData, kC => kC.groupId === Number(selectedGroupId));\r\n $scope.keycardsOverviewGrid.dataSource.data($scope.filteredKeyCardsData);\r\n $scope.keycardsOverviewGrid.refresh();\r\n }\r\n };\r\n\r\n var cardNumber = $stateParams.keycardNumber;\r\n var cardFilter = cardNumber ? { field: \"cardNumber\", operator: \"eq\", value: cardNumber } : null;\r\n $scope.keycardsOverviewGridOptions = {\r\n dataSource: {\r\n pageSize: 70,\r\n filter: cardFilter,\r\n data: $scope.KeyCardsOverviewGridData,\r\n sort: {\r\n field: \"cardNumber\",\r\n dir: \"asc\"\r\n }\r\n },\r\n sortable: true,\r\n filterable: true,\r\n noRecords: true,\r\n resizable: true,\r\n messages: {\r\n noRecords: 'Ingen treff'\r\n },\r\n scrollable: {\r\n virtual: true\r\n },\r\n columns: [\r\n {\r\n title: 'Kortnummer',\r\n field: 'cardNumber',\r\n width: '150px'\r\n },\r\n {\r\n title: 'Fornavn',\r\n field: 'firstName',\r\n width: '70px'\r\n },\r\n {\r\n title: 'Etternavn',\r\n field: 'lastName',\r\n width: '70px'\r\n },\r\n {\r\n title: 'Poststed',\r\n field: 'cityAddress',\r\n width: '150px'\r\n },\r\n {\r\n title: 'Adresse',\r\n field: 'streetAddress',\r\n width: '150px'\r\n },\r\n {\r\n title: 'Tid',\r\n field: 'timeStamp',\r\n width: '130px',\r\n template: '#= kendo.toString(kendo.parseDate(timeStamp), \"dd.MM.yyyy HH:mm:ss\") #'\r\n },\r\n {\r\n title: 'OmrÃ¥de',\r\n field: 'userName',\r\n width: '70px'\r\n },\r\n {\r\n field: 'actions',\r\n title: ' ',\r\n width: '35px',\r\n template: '
',\r\n filterable: false,\r\n sortable: false,\r\n groupable: false\r\n }\r\n ],\r\n excel: {\r\n fileName: $scope.excelFileName,\r\n filterable: true,\r\n allPages: true\r\n },\r\n excelExport: keycardsOverviewGridExcelExport\r\n };\r\n\r\n $scope.getContainerPromise = $scope.getContainerPromise || containerService.getContainerById($scope.containerId);\r\n\r\n $timeout(250).then(initController);\r\n\r\n function initController() {\r\n if ($scope.authData && $scope.authData.isAuth) {\r\n getKeyCardsOverviewGridData();\r\n }\r\n\r\n $scope.$on('groupUpdated', onGroupUpdated);\r\n }\r\n\r\n function onGroupUpdated(evt, group) {\r\n $(\"#keyCardGroupCombo\").data(\"kendoDropDownList\").dataSource.read();\r\n\r\n }\r\n\r\n function getKeyCardsOverviewGridData() {\r\n $scope.KeyCardsOverviewGridData = [];\r\n\r\n if ($scope.containerId) {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'KeyCardsOverviewIndicator',\r\n destination: '#keycardsOverviewGrid',\r\n message: 'Henter data...',\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n\r\n $scope.getContainerPromise.then(function (container) {\r\n if (container && container.groupId) {\r\n $scope.groupId = container.groupId;\r\n\r\n keycardService.getKeyCardsByGroupId(container.groupId).then(function (keyCards) {\r\n if (keyCards && keyCards.length > 0) {\r\n keyCards = _.uniqBy(keyCards, 'cardNumber');\r\n\r\n _.each(keyCards, function (item) {\r\n extendGridData(item);\r\n });\r\n\r\n $scope.KeyCardsOverviewGridData = keyCards;\r\n $scope.filteredKeyCardsData = $scope.selectedGroup ? _.filter($scope.KeyCardsOverviewGridData, kC => kC.groupId === $scope.selectedGroup.groupId) : [];\r\n $scope.keycardsOverviewGrid.dataSource.data($scope.filteredKeyCardsData);\r\n $scope.keycardsOverviewGrid.refresh();\r\n }\r\n $rootScope.$broadcast('hideBusyIndicator', 'KeyCardsOverviewIndicator');\r\n }, function () {\r\n $rootScope.$broadcast('hideBusyIndicator', 'KeyCardsOverviewIndicator');\r\n });\r\n }\r\n }, function () {\r\n $rootScope.$broadcast('hideBusyIndicator', 'KeyCardsOverviewIndicator');\r\n });\r\n }\r\n }\r\n\r\n function extendGridData(item) {\r\n item.time = item.time == null ? '' : item.time;\r\n }\r\n\r\n function keycardsOverviewGridExcelExport(e) {\r\n e.workbook.fileName = 'Nokkelkortoversikt ' + kendo.toString(new Date, 'ddMMyyyy_HHmmss') + '.xlsx';\r\n var sheet = e.workbook.sheets[0];\r\n var columnWidths = this.element.find('.k-grid-header colgroup col');\r\n\r\n for (var i = 0; i < sheet.columns.length; i++) {\r\n if ($(columnWidths[i]).attr('style')) {\r\n sheet.columns[i].width = 160;\r\n } else {\r\n sheet.columns[i].width = 16;\r\n }\r\n }\r\n }\r\n\r\n function exportToExcel() {\r\n $scope.keycardsOverviewGrid.saveAsExcel();\r\n }\r\n\r\n function openKeyCardRegistrationModal() {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: 'Registrer nøkkelkort',\r\n resizable: false,\r\n height: 800,\r\n width: 500,\r\n visible: false\r\n },\r\n templateUrl: 'app/keyCards/views/keycard-registration-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'KeyCardRegistrationModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.add;\r\n },\r\n groupName: function () {\r\n return $scope.selectedGroup.group;\r\n },\r\n groupId: function () {\r\n return $scope.selectedGroup.groupId;\r\n },\r\n keyCard: function () {\r\n return null;\r\n }\r\n }\r\n });\r\n\r\n windowInstance.result.then(function (result) {\r\n if (result) {\r\n getKeyCardsOverviewGridData();\r\n }\r\n });\r\n }\r\n\r\n function openUpdateKeyCardModal(dataItem) {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: 'Nøkkelkort',\r\n resizable: false,\r\n height: 800,\r\n width: 500,\r\n visible: false\r\n },\r\n templateUrl: 'app/keyCards/views/keycard-registration-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'KeyCardRegistrationModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.edit;\r\n },\r\n groupName: function () {\r\n return dataItem.groupName;\r\n },\r\n groupId: function () {\r\n return dataItem.groupId;\r\n },\r\n keyCard: function () {\r\n return dataItem;\r\n }\r\n }\r\n });\r\n\r\n windowInstance.result.then(function (result) {\r\n if (result) {\r\n getKeyCardsOverviewGridData();\r\n }\r\n });\r\n }\r\n\r\n function readGroups(e) {\r\n $scope.getContainerPromise.then(container => {\r\n if (container && container.groups) {\r\n $scope.groups = container.groups\r\n e.success($scope.groups);\r\n if ($scope.groups && $scope.groups.length > 0) {\r\n $scope.selectedGroup = $scope.groups[0];\r\n }\r\n } else {\r\n e.success([]);\r\n }\r\n\r\n });\r\n }\r\n }\r\n})();\r\n","angular.module('UndergroundWebApp').directive('deviceExternalSystemCell', [function () {\r\n 'use strict';\r\n\r\n return {\r\n restrict: 'AE',\r\n replace: true,\r\n scope: {\r\n deviceInfo: '=',\r\n },\r\n templateUrl: 'app/location/info/device-external-system-cell.html',\r\n };\r\n}]);\r\n","angular.module('UndergroundWebApp').factory('externalSystemUtility', function () {\r\n function getExternalSystemIconName(externalSystemName) {\r\n switch (externalSystemName.toLowerCase()) {\r\n case 'reen':\r\n return 'reen.png';\r\n case 'shop2win':\r\n return 'shop2win.png';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n function getExternalSystemIcon(externalSystem) {\r\n if (externalSystem && externalSystem.name) {\r\n var externalSystemIconName = getExternalSystemIconName(externalSystem.name);\r\n if (externalSystemIconName) {\r\n return '/img/icons/' + externalSystemIconName;\r\n }\r\n }\r\n return '';\r\n };\r\n\r\n function getExtSystemPlaceholderColor(externalSystemName) {\r\n return {\r\n 'background-color': '#' + numberToRGB(hashCode(externalSystemName)),\r\n };\r\n }\r\n\r\n function hashCode(str) {\r\n var hash = 0;\r\n for (var i = 0; i < str.length; i++) {\r\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\r\n }\r\n return hash;\r\n } \r\n \r\n function numberToRGB(i){\r\n var c = (i & 0x00FFFFFF)\r\n .toString(16)\r\n .toUpperCase();\r\n \r\n return \"00000\".substring(0, 6 - c.length) + c;\r\n }\r\n\r\n return {\r\n getExternalSystemIcon,\r\n getExtSystemPlaceholderColor,\r\n }\r\n});\r\n\r\n","angular.module('UndergroundWebApp').factory('fractionsUtility', function () {\r\n function getFractionNormalizedName(fraction) {\r\n if (!fraction || !fraction.name) {\r\n return '';\r\n }\r\n\r\n switch (fraction.name.toLowerCase()) {\r\n case 'bio-næring':\r\n case 'bio':\r\n return 'matavfall';\r\n case 'matavfall':\r\n return 'matavfall';\r\n case 'plast':\r\n case 'plast-næring':\r\n return 'plastemballasje';\r\n case 'glass/metall':\r\n return 'glassemballasje';\r\n case 'restavfall':\r\n case 'rest-vask':\r\n case 'hytter rest':\r\n case 'rest-næring':\r\n return 'restavfall';\r\n case 'papir':\r\n case 'hytter papir':\r\n case 'papir-næring':\r\n return 'papir';\r\n case 'tekstil':\r\n return 'tekstil';\r\n case 'hageavfall':\r\n return 'hageavfall';\r\n default:\r\n return '';\r\n }\r\n }\r\n\r\n function getFractionIcon(fraction) {\r\n if (!fraction || !fraction.name) {\r\n return '';\r\n }\r\n\r\n var fractionName = getFractionNormalizedName(fraction);\r\n if (!fractionName) {\r\n return '';\r\n }\r\n\r\n return '/img/icons/fraction-icons/' + fractionName + '.png';\r\n };\r\n\r\n return {\r\n getFractionIcon,\r\n getFractionNormalizedName\r\n };\r\n});\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('LocationInfoTabController', LocationInfoTabController);\r\n\r\n LocationInfoTabController.$inject = [\r\n '$q',\r\n '$timeout',\r\n '$scope',\r\n '$stateParams',\r\n '$rootScope',\r\n '$kWindow',\r\n 'globalEvents',\r\n 'locationsService',\r\n 'containerService',\r\n 'fractionsUtility',\r\n 'formattingUtility',\r\n 'externalSystemUtility',\r\n 'formTypes',\r\n 'containerEditModalWidth',\r\n 'selectDisplayedDevices',\r\n 'deviceUtility',\r\n 'mapService',\r\n '$translate'\r\n ];\r\n\r\n function LocationInfoTabController(\r\n $q,\r\n $timeout,\r\n $scope,\r\n $stateParams,\r\n $rootScope,\r\n $kWindow,\r\n globalEvents,\r\n locationsService,\r\n containerService,\r\n fractionsUtility,\r\n formattingUtility,\r\n externalSystemUtility,\r\n formTypes,\r\n containerEditModalWidth,\r\n selectDisplayedDevices,\r\n deviceUtility,\r\n mapService,\r\n $translate,\r\n ) {\r\n var locationId = $stateParams.locationId;\r\n var unwatchLocationChanged = null;\r\n\r\n $scope.tabStripOptions = {\r\n animation: false,\r\n scrollable: false\r\n };\r\n\r\n $scope.savePosition = savePosition;\r\n $scope.resetPosition = resetPosition;\r\n $scope.openUpdateContainerModal = openUpdateContainerModal;\r\n $scope.openNewContainerModal = openNewContainerModal;\r\n $scope.containerRowPaddingLength = containerRowPaddingLength;\r\n $scope.deleteContainer = deleteContainer;\r\n\r\n $scope.position = {};\r\n $scope.containerInfoList = [];\r\n $scope.showPositionEditButtons = false;\r\n\r\n initController();\r\n\r\n function initController() {\r\n if (locationId) {\r\n handleSetPositionEvents();\r\n watchLocationChanged();\r\n loadLocationContainersData();\r\n }\r\n\r\n $rootScope.$on(globalEvents.refreshLocationContainers, loadLocationContainersData);\r\n\r\n $('.set-position-info [data-toggle=\"tooltip\"]').tooltip();\r\n }\r\n\r\n function handleSetPositionEvents() {\r\n $scope.$on('setLocationPosition', function (_, options) {\r\n $scope.position.latitude = options.position.lat;\r\n $scope.position.longitude = options.position.lng;\r\n $scope.showPositionEditButtons = true;\r\n });\r\n }\r\n\r\n function watchLocationChanged() {\r\n if (!$scope.location) {\r\n showBusyIndicator('location-info-table-wrapper');\r\n unwatchLocationChanged = $scope.$watch('location', handleLocationLoaded);\r\n } else {\r\n handleLocationLoaded();\r\n }\r\n }\r\n\r\n function handleLocationLoaded() {\r\n if (!$scope.location) return;\r\n\r\n if (unwatchLocationChanged) {\r\n unwatchLocationChanged();\r\n }\r\n\r\n hideBusyIndicator('location-info-table-wrapper');\r\n resetPosition();\r\n }\r\n\r\n function loadLocationContainersData() {\r\n showBusyIndicator('location-containers-table-wrapper');\r\n\r\n //Extract values to be wrapped in closures\r\n let containerInfos = [],\r\n chartStatistics = [];\r\n\r\n containerService.getContainerInfoByLocationId(locationId).then(containerInfoList => {\r\n containerInfos = containerInfoList;\r\n\r\n _.forEach(containerInfoList, extendContainerInfo);\r\n\r\n //Move containers without devices to the end of the list\r\n let containersWithoutDevices = containerInfoList.filter(c => !c.devicesToDisplay || c.devicesToDisplay.length === 0);\r\n let containersWithDevices = containerInfoList.filter(c => c.devicesToDisplay && c.devicesToDisplay.length > 0);\r\n\r\n $scope.containerInfoList = containersWithDevices.concat(containersWithoutDevices);\r\n\r\n createMiniCharts(containerInfos, chartStatistics);\r\n\r\n hideBusyIndicator('location-containers-table-wrapper');\r\n }).catch(() => hideBusyIndicator('location-containers-table-wrapper'));\r\n\r\n let today = new Date(),\r\n start = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 5);\r\n\r\n locationsService.getLocationStatisticsByContainer(\r\n locationId,\r\n moment(start).format('YYYY-MM-DD'),\r\n moment(today).format('YYYY-MM-DD')\r\n ).then(statistics => {\r\n chartStatistics = statistics;\r\n\r\n createMiniCharts(containerInfos, chartStatistics);\r\n });\r\n }\r\n\r\n function savePosition() {\r\n if (!$scope.location) return;\r\n\r\n showBusyIndicator('location-info-table-wrapper');\r\n $scope.showPositionEditButtons = false;\r\n $scope.location.latitude = $scope.position.latitude;\r\n $scope.location.longitude = $scope.position.longitude;\r\n locationsService.updateLocation($scope.location).finally(function () {\r\n mapService.reloadMap();\r\n hideBusyIndicator('location-info-table-wrapper');\r\n });\r\n }\r\n\r\n function resetPosition() {\r\n if (!$scope.location) return;\r\n\r\n $scope.position.latitude = $scope.location.latitude;\r\n $scope.position.longitude = $scope.location.longitude;\r\n $scope.showPositionEditButtons = false;\r\n }\r\n\r\n function showBusyIndicator(id) {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'locationInfo' + id,\r\n destination: '.' + id,\r\n message: $translate.instant(\"G_BUSY_INDICATOR\"),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n }\r\n\r\n function hideBusyIndicator(id) {\r\n $rootScope.$broadcast('hideBusyIndicator', 'locationInfo' + id);\r\n }\r\n\r\n function openUpdateContainerModal(containerInfo) {\r\n if (containerInfo && containerInfo.container && containerInfo.container.id) {\r\n var container = containerInfo.container;\r\n var titleFraction = container.fraction && container.fraction.name ? (' - ' + container.fraction.name) : '';\r\n var titleAddress = container.location && container.location.name ? (' - ' + container.location.name) : '';\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: container.containerNumber + titleAddress + titleFraction,\r\n resizable: false,\r\n height: 600,\r\n width: containerEditModalWidth,\r\n visible: false\r\n },\r\n templateUrl: 'app/containerOverviewV2/views/sensor-api-container-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'SensorApiContainerDetailsModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.edit;\r\n },\r\n containerId: function () {\r\n return containerInfo.container.id;\r\n },\r\n updateCallbacks: function () {\r\n return null;\r\n },\r\n locationId: function () {\r\n return null;\r\n }\r\n }\r\n });\r\n\r\n windowInstance.result.then(function (result) {\r\n if (result) {\r\n loadLocationContainersData();\r\n }\r\n });\r\n }\r\n }\r\n\r\n function openNewContainerModal() {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant(\"LOCATION_INFO_TAB_CONTAINER_MODAL_TITLE\"),\r\n resizable: false,\r\n height: 600,\r\n width: 700,\r\n visible: false\r\n },\r\n templateUrl: 'app/containerOverviewV2/views/sensor-api-container-details-modal-view.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'SensorApiContainerDetailsModalController',\r\n resolve: {\r\n currentFormType: function () {\r\n return formTypes.add;\r\n },\r\n containerId: function () {\r\n return null;\r\n },\r\n updateCallbacks: function () {\r\n return null;\r\n },\r\n locationId: function () {\r\n return locationId;\r\n }\r\n }\r\n });\r\n\r\n windowInstance.result.then(function (result) {\r\n if (result) {\r\n loadLocationContainersData();\r\n }\r\n });\r\n }\r\n\r\n function deleteContainer(containerInfo) {\r\n if (!containerInfo\r\n || !containerInfo.container\r\n || !containerInfo.isDeletable\r\n || !confirm($translate.instant(\"LOCATION_INFO_TAB_CONTAINER_CONFIRM_DELETE\"))\r\n ) {\r\n return;\r\n }\r\n\r\n containerService.deleteContainer(containerInfo.container.id)\r\n .then(() => loadLocationContainersData());\r\n }\r\n\r\n function extendContainerInfo(containerInfo) {\r\n if (!containerInfo) return;\r\n\r\n containerInfo.fractionIcon = fractionsUtility.getFractionIcon(containerInfo.container.fraction);\r\n containerInfo.latestStatus = containerInfo.latestStatus || {};\r\n\r\n containerInfo.fill = 'N/A';\r\n containerInfo.dateWhenFull = 'N/A';\r\n\r\n if (moment().diff(moment(containerInfo.latestStatus.createdAt), 'days') === 0) {\r\n if (containerInfo.latestStatus.fill) {\r\n containerInfo.fill = containerInfo.latestStatus.fill + '%';\r\n }\r\n containerInfo.dateWhenFull = getDateWhenFull(containerInfo.latestStatus.dateWhenFull);\r\n }\r\n \r\n containerInfo.fillStatisticsLink = containerInfo.container.fillPriorityDevice\r\n && containerInfo.container.fillPriorityDevice.id\r\n && `main.statistics({ deviceId: \"${containerInfo.container.fillPriorityDevice.id}\" })`;\r\n containerInfo.devicesToDisplay = getDevicesToDisplay(containerInfo);\r\n\r\n //Check if container is deletable\r\n containerInfo.isDeletable = false;\r\n\r\n if (containerInfo.container\r\n && containerInfo.container.containerCustomerSystems\r\n && containerInfo.container.containerCustomerSystems.length === 0\r\n && containerInfo.container.devices\r\n && containerInfo.container.devices.length === 0) {\r\n\r\n containerInfo.isDeletable = true;\r\n }\r\n\r\n if (containerInfo.latestStatuses) {\r\n var statusWithVolt = containerInfo.latestStatuses.find(s => s.volt);\r\n if (statusWithVolt) {\r\n containerInfo.container.volt = formattingUtility.toFixedTrunc(\r\n statusWithVolt.volt, 2\r\n );\r\n }\r\n }\r\n }\r\n\r\n function getDevicesToDisplay(containerInfo) {\r\n return selectDisplayedDevices(containerInfo.container.devices).map((device) => {\r\n const externalSystemName = getExternalSystemName(device);\r\n const deviceData = {\r\n externalSystemName,\r\n externalSystemIcon: externalSystemUtility.getExternalSystemIcon(device.externalSystem),\r\n externalSystemIconStyle: externalSystemUtility.getExtSystemPlaceholderColor(externalSystemName),\r\n externalId: device.externalId,\r\n };\r\n\r\n deviceData.detailsLink = deviceUtility.getDeviceDetailsLink(externalSystemName, device.externalId);\r\n\r\n return deviceData;\r\n });\r\n }\r\n\r\n function getExternalSystemName(device) {\r\n return device\r\n && device.externalSystem\r\n && device.externalSystem.name;\r\n }\r\n\r\n function getDateWhenFull(dateWhenFullText) {\r\n if (dateWhenFullText) {\r\n var dateWhenFull = moment(dateWhenFullText);\r\n if (dateWhenFull < moment().endOf('day')) {\r\n return $translate.instant(\"LOCATION_INFO_TAB_CONTAINER_FULL_ON_DAY\");\r\n }\r\n if (dateWhenFull < moment().add(3, 'day').endOf('day')) {\r\n return '1-3 ' + $translate.instant(\"G_DAYS\");\r\n }\r\n if (dateWhenFull < moment().add(6, 'day').endOf('day')) {\r\n return '4-6 ' + $translate.instant(\"G_DAYS\");\r\n }\r\n if (dateWhenFull < moment().add(14, 'day').endOf('day')) {\r\n return '7-14 ' + $translate.instant(\"G_DAYS\");\r\n }\r\n\r\n return '> 14 ' + $translate.instant(\"G_DAYS\");\r\n }\r\n return 'N/A';\r\n };\r\n\r\n function containerRowPaddingLength(containerInfo) {\r\n const devicesLength = containerInfo.devicesToDisplay.length;\r\n const deleteIconLength = containerInfo.isDeletable ? 1 : 0;\r\n const maxDevicesLength = Math.max(...$scope.containerInfoList.map(c => c.devicesToDisplay.length));\r\n\r\n return Math.max(maxDevicesLength - devicesLength - deleteIconLength, 0);\r\n }\r\n\r\n //Private functions\r\n function createMiniCharts(containerInfoList, statistics) {\r\n if (!containerInfoList\r\n || containerInfoList.length === 0\r\n || !statistics\r\n || statistics === 0) {\r\n return;\r\n }\r\n\r\n const maxBarHeight = 20;\r\n let containerMinCharts = [];\r\n\r\n statistics.forEach(currentStatistic => {\r\n let relatedContainer = containerInfoList.find(c => c.container.id === currentStatistic.item1);\r\n if (relatedContainer) {\r\n let days = currentStatistic.item2,\r\n lastDays = days.slice(days.length - 4, days.length);\r\n\r\n let barHeights = lastDays.map(stat =>\r\n Math.round(maxBarHeight * (Math.max(Math.min(stat.fill, 100) / 100, 0)))\r\n );\r\n\r\n containerMinCharts.push({\r\n containerId: relatedContainer.container.id,\r\n barHeights\r\n });\r\n }\r\n })\r\n\r\n $timeout(500).then(() => {\r\n containerMinCharts.forEach(minChart => {\r\n let $minChartElement = $('.mini-chart[container-id=\"' + minChart.containerId + '\"]');\r\n\r\n if ($minChartElement.length) {\r\n for (let barHeight of minChart.barHeights) {\r\n $minChartElement.append('
');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('ContainerLogModalController', ContainerLogModalController);\r\n\r\n ContainerLogModalController.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n '$q',\r\n '$windowInstance',\r\n 'logActionService',\r\n 'containerService',\r\n 'containers',\r\n 'fallbackErrorMessageText',\r\n '$translate'\r\n ];\r\n\r\n function ContainerLogModalController(\r\n $scope, \r\n $rootScope, \r\n $q, \r\n $windowInstance, \r\n logActionService,\r\n containerService, \r\n containers, \r\n fallbackErrorMessageText,\r\n $translate\r\n ) {\r\n $scope.saveAndClose = saveAndClose;\r\n $scope.closeWindow = closeWindow;\r\n\r\n $scope.containerOptions = {\r\n dataSource: containers,\r\n dataTextField: 'containerNumber',\r\n dataValueField: 'id',\r\n optionLabel: $translate.instant(\"CONTAINER_LOG_MODAL_SELECT_CONTAINER\"),\r\n };\r\n\r\n $scope.deviceOptions = {\r\n dataSource: {\r\n transport: {\r\n read: getDevices\r\n }\r\n },\r\n dataTextField: 'externalId',\r\n dataValueField: 'id',\r\n optionLabel: $translate.instant(\"CONTAINER_LOG_MODAL_CHOOSE_UNIT\"),\r\n };\r\n\r\n $scope.logActionOptions = {\r\n dataSource: {\r\n transport: {\r\n read: readLogActions\r\n }\r\n },\r\n dataTextField: 'name',\r\n dataValueField: 'id',\r\n optionLabel: $translate.instant(\"CONTAINER_LOG_MODAL_SELECT_EVENT\"),\r\n }\r\n\r\n $scope.log = {};\r\n $scope.time = new Date();\r\n $scope.$watch('container', () => $scope.deviceDropDown && $scope.deviceDropDown.dataSource.read());\r\n\r\n function readLogActions(e) {\r\n logActionService.getLogActions().then(function (logActions) {\r\n $scope.logActionsDdlServerErrorText = null;\r\n e.success(logActions);\r\n }).catch(function (error) {\r\n $scope.logActionsDdlServerErrorText = error.localizedMessage || fallbackErrorMessageText;\r\n e.error();\r\n });\r\n }\r\n\r\n function saveAndClose(event) {\r\n event.preventDefault();\r\n\r\n if ($scope.validator.validate()) {\r\n var log = {\r\n containerId: $scope.container.id,\r\n time: moment($scope.time).format('YYYY-MM-DDTHH:mm:ss'),\r\n logAction: $scope.logAction.name,\r\n logActionId: $scope.logAction.id,\r\n comment: $scope.comment,\r\n deviceId: $scope.device.id,\r\n }\r\n\r\n save(log).then(function (result) {\r\n $windowInstance.close(result);\r\n });\r\n }\r\n }\r\n\r\n function save(log) {\r\n var deferred = $q.defer();\r\n\r\n $rootScope.$broadcast('showGlobalBusyIndicator', 'containerTypeIndicator');\r\n\r\n containerService.addContainerLog(log)\r\n .then(result => deferred.resolve(result),\r\n () => deferred.reject())\r\n .finally(() => $rootScope.$broadcast('hideBusyIndicator', 'containerTypeIndicator'));\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function closeWindow(result) {\r\n $windowInstance.close(result);\r\n }\r\n\r\n function getDevices(e) {\r\n if (\r\n !$scope.container\r\n || !$scope.container.devices\r\n ) {\r\n return e.success([]);\r\n }\r\n\r\n $scope.device = $scope.container.fillPriorityDevice\r\n e.success($scope.container.devices);\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('LocationLogTabController', LocationLogTabController);\r\n\r\n LocationLogTabController.$inject = [\r\n '$scope',\r\n '$rootScope',\r\n '$kWindow',\r\n 'containerService',\r\n '$translate'\r\n ];\r\n\r\n function LocationLogTabController($scope, $rootScope, $kWindow, containerService, $translate) {\r\n var unwatchLocation = null;\r\n var containerLogs = [];\r\n\r\n $scope.dateRange = {};\r\n\r\n $scope.openMediaModal = openMediaModal;\r\n $scope.loadContainerLogs = loadContainerLogs;\r\n $scope.openNewLogModal = openNewLogModal;\r\n $scope.waitLocationLoaded = waitLocationLoaded;\r\n\r\n $scope.containerLogsGridOptions = {\r\n dataSource: {\r\n data: [],\r\n sort: { field: 'time', dir: 'desc' },\r\n },\r\n sortable: true,\r\n filterable: true,\r\n noRecords: true,\r\n messages: {\r\n noRecords: $translate.instant(\"G_NO_DATA\")\r\n },\r\n pageable: {\r\n pageSize: 100\r\n },\r\n columns: [\r\n {\r\n field: 'time',\r\n title: $translate.instant(\"CONTAINER_LOG_TAB_CONTROLLER_HEADER_TIME\"),\r\n template: `#= kendo.toString(kendo.parseDate(time), \"${$translate.instant(\"G_DEFAULT_DATE_FORMAT\")}\") #`,\r\n filterable: false,\r\n width: 150,\r\n },\r\n {\r\n field: 'deviceExternalId',\r\n title: $translate.instant(\"CONTAINER_LOG_TAB_CONTROLLER_HEADER_EXTERNAL_ID\"),\r\n width: 110,\r\n },\r\n {\r\n field: 'container.containerNumber',\r\n title: $translate.instant(\"CONTAINER_LOG_TAB_CONTROLLER_HEADER_CONTAINER_NUMBER\"),\r\n width: 110,\r\n },\r\n {\r\n field: 'fractionName',\r\n title: $translate.instant(\"CONTAINER_LOG_TAB_CONTROLLER_HEADER_FRACTION\"),\r\n width: 110,\r\n filterable: {\r\n multi: true,\r\n },\r\n },\r\n {\r\n field: 'logAction',\r\n title: $translate.instant(\"CONTAINER_LOG_TAB_CONTROLLER_HEADER_LOG_ACTION\"),\r\n width: 120,\r\n filterable: {\r\n multi: true,\r\n },\r\n },\r\n {\r\n field: 'comment',\r\n title: $translate.instant(\"CONTAINER_LOG_TAB_CONTROLLER_HEADER_COMMENT\")\r\n },\r\n {\r\n field: 'extUser',\r\n title: $translate.instant(\"CONTAINER_LOG_TAB_CONTROLLER_HEADER_EXTERNAL_USER\"),\r\n width: 100,\r\n },\r\n {\r\n field: 'image',\r\n title: $translate.instant(\"G_IMAGE\"),\r\n width: 70,\r\n sortable: false,\r\n filterable: false,\r\n template: function (dataItem) {\r\n if (dataItem.media.length) {\r\n return ''\r\n }\r\n return '';\r\n }\r\n }\r\n ],\r\n };\r\n\r\n function waitLocationLoaded() {\r\n showBusyIndicator('containerLogsGrid')\r\n if (!$scope.location) {\r\n unwatchLocation = $scope.$watch('location', handleLocationLoaded);\r\n } else {\r\n handleLocationLoaded();\r\n }\r\n }\r\n\r\n function handleLocationLoaded() {\r\n if (!$scope.location) return;\r\n\r\n if (unwatchLocation) {\r\n unwatchLocation();\r\n }\r\n\r\n loadContainerLogs();\r\n }\r\n\r\n function loadContainerLogs() {\r\n showBusyIndicator('containerLogsGrid')\r\n var filterList = getLogFilterList(\r\n $scope.location.containers,\r\n moment($scope.dateRange.from).format('YYYY-MM-DD'),\r\n moment($scope.dateRange.to).format('YYYY-MM-DD'),\r\n );\r\n if (!filterList) return;\r\n\r\n containerService.getLogsByFilterBulk(filterList).then(function (response) {\r\n containerLogs = response.map(extendContainerLog);\r\n $('#containerLogsGrid').getKendoGrid().dataSource.data(containerLogs);\r\n }).catch(function (error) {\r\n console.error(error);\r\n }).finally(function () {\r\n hideBusyIndicator('containerLogsGrid')\r\n });\r\n }\r\n\r\n function getLogFilterList(containers, from, to) {\r\n if (!containers || containers.length === 0) return null;\r\n\r\n return _.map(containers, function (container) {\r\n return {\r\n containerNumber: container.containerNumber,\r\n from: from,\r\n to: to,\r\n };\r\n })\r\n }\r\n\r\n function extendContainerLog(containerLog) {\r\n return {\r\n ...containerLog,\r\n deviceExternalId: containerLog.device\r\n ? containerLog.device.externalId\r\n : '',\r\n fractionName: containerLog.container.fraction\r\n ? containerLog.container.fraction.name\r\n : '',\r\n }\r\n }\r\n\r\n function openMediaModal(media) {\r\n var pictureUrls = media.map(m => m.pictureUrl);\r\n $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: false,\r\n title: $translate.instant(\"G_IMAGE\"),\r\n resizable: false,\r\n width: \"30%\",\r\n position: {\r\n top: \"5%\",\r\n left: \"35%\"\r\n },\r\n visible: false\r\n },\r\n templateUrl: 'app/shared/pictureCarouselModal/picture-carousel.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'PictureCarouselController',\r\n resolve: {\r\n pictureUrls: function () {\r\n return pictureUrls;\r\n }\r\n }\r\n });\r\n }\r\n\r\n function showBusyIndicator(id) {\r\n $rootScope.$broadcast('showBusyIndicator', {\r\n id: 'locationLog' + id,\r\n destination: '#' + id,\r\n message: $translate.instant(\"G_BUSY_INDICATOR\"),\r\n overlay: true,\r\n positionClass: {\r\n top: '50%',\r\n left: '0px',\r\n right: '0px'\r\n }\r\n });\r\n }\r\n\r\n function hideBusyIndicator(id) {\r\n $rootScope.$broadcast('hideBusyIndicator', 'locationLog' + id);\r\n }\r\n\r\n function openNewLogModal() {\r\n var windowInstance = $kWindow.open({\r\n options: {\r\n modal: true,\r\n movable: true,\r\n title: $translate.instant(\"CONTAINER_LOG_TAB_VIEW_NEW_LOG\"),\r\n resizable: true,\r\n height: 400,\r\n width: 400,\r\n visible: false\r\n },\r\n templateUrl: 'app/location/log/container-log-modal.html',\r\n windowTemplateUrl: 'app/shared/modal-base.html',\r\n controller: 'ContainerLogModalController',\r\n resolve: {\r\n containers: function () {\r\n return $scope.location && $scope.location.containers;\r\n }\r\n }\r\n });\r\n\r\n windowInstance.result.then(function (containerLog) {\r\n if (\r\n containerLog\r\n && moment(containerLog.time).isBetween($scope.dateRange.from, $scope.dateRange.to, 'days', '[]')\r\n ) {\r\n containerLogs.push(containerLog);\r\n $('#containerLogsGrid').getKendoGrid().dataSource.data(containerLogs);\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').factory('logActionService', logActionService);\r\n\r\n logActionService.$inject = [\r\n '$q',\r\n '$http'\r\n ];\r\n\r\n function logActionService($q, $http) {\r\n var service = {\r\n getLogActions: getLogActions,\r\n };\r\n\r\n return service;\r\n\r\n function getLogActions() {\r\n var deferred = $q.defer();\r\n \r\n $http.get(\"api/logAction\").then(\r\n function (result) {\r\n if (result && result.data) {\r\n deferred.resolve(result.data);\r\n } else {\r\n deferred.reject();\r\n }\r\n },\r\n function (result) {\r\n deferred.reject(result.data);\r\n }\r\n );\r\n return deferred.promise;\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular.module('UndergroundWebApp').controller('LocationPowerBITabController', LocationPowerBITabController);\r\n\r\n LocationPowerBITabController.$inject = [\r\n '$timeout',\r\n '$stateParams',\r\n '$rootScope',\r\n '$scope'\r\n ];\r\n\r\n function LocationPowerBITabController(\r\n $timeout,\r\n $stateParams,\r\n $rootScope,\r\n $scope\r\n ) {\r\n const minFrameWidth = 450;\r\n const minFrameHeight = 300;\r\n\r\n let windowSize = {\r\n width: $(document).width(),\r\n height: $(document).height()\r\n };\r\n\r\n $scope.frameWidth = Math.max(windowSize.width / 2 - 40, minFrameWidth);\r\n $scope.frameHeight = Math.max(windowSize.height - 224, minFrameHeight);\r\n\r\n $timeout(250).then(initController);\r\n\r\n function initController() {\r\n let locationId = $stateParams.locationId,\r\n filter = \"$filter=Locations/Id eq '\" + locationId + \"'\";\r\n\r\n if ($rootScope.externalReports && Array.isArray($rootScope.externalReports)) {\r\n let locationDetailsBaseUrl = $rootScope.externalReports.find(x => x.reportType === 'LocationDetailsStatisticsReport');\r\n if (locationDetailsBaseUrl) {\r\n $scope.powerBILink = locationDetailsBaseUrl.reportUrlBase + '&' + filter;\r\n\r\n //Needs to add iframe manually to avoid not loading powerbi frame\r\n //to avoid HTTP 404 because of unset src attribute value\r\n let powerBiFrame = $('