{"version":3,"sources":["webpack:///src/app/model/company.model.ts","webpack:///src/app/pages/event/event-edit/event-edit.component.html","webpack:///src/app/pages/event/event-edit/event-edit.component.ts","webpack:///src/app/model/validation.note.model.ts","webpack:///src/app/model/event.main.action.model.ts","webpack:///src/app/pages/registrations/registrations.module.ts","webpack:///src/app/pages/base-golden-panel/blank/blank.component.ts","webpack:///src/app/model/abstract.signal.model.ts","webpack:///xmldom (ignored)","webpack:///src/app/pages/event/event.module.ts","webpack:///src/app/model/simf.model.ts","webpack:///fs (ignored)","webpack:///src/app/model/dc.model.ts","webpack:///src/app/model/operation.model.ts","webpack:///src/app/pages/channel/channel-list/channel-list.component.html","webpack:///src/app/pages/channel/channel-list/channel-list.component.ts","webpack:///crypto (ignored)","webpack:///src/app/service/model/reactive.service.ts","webpack:///src/app/model/signal.model.ts","webpack:///src/app/pages/base-golden-panel/base-golden-panel.ts","webpack:///stream (ignored)","webpack:///src/app/pages/event/event-list/event-list.component.html","webpack:///src/app/pages/event/event-list/event-list.component.ts","webpack:///src/app/model/duct.model.ts","webpack:///src/app/service/model/event.service.ts","webpack:///src/app/pages/patrol/patrol-repetition-dialog/patrol-repetition-dialog.component.ts","webpack:///src/app/pages/patrol/patrol-repetition-dialog/patrol-repetition-dialog.component.html","webpack:///src/app/pages/map/map.component.html","webpack:///src/app/pages/map/map.component.ts","webpack:///src/app/model/alert.model.ts","webpack:///src/app/general/answer-list/answer-list.component.ts","webpack:///src/app/general/answer-list/answer-list.component.html","webpack:///src/app/general/operation/insert-point-dialog/insert-point-dialog.component.ts","webpack:///src/app/general/operation/insert-point-dialog/insert-point-dialog.component.html","webpack:///src/app/service/model/archive.service.ts","webpack:///src/app/pages/registrations/point/point-edit/point-edit.component.ts","webpack:///src/app/pages/registrations/point/point-edit/point-edit.component.html","webpack:///src/app/service/storage-service.ts","webpack:///src/app/general/tokml.ts","webpack:///src/app/general/system-check/service-response.ts","webpack:///src/app/pages/tracking/tracking.component.html","webpack:///src/app/pages/tracking/tracking.component.ts","webpack:///src/app/pages/map/map.module.ts","webpack:///src/app/pages/registrations/user/user-edit/user-edit.component.ts","webpack:///src/app/pages/registrations/user/user-edit/user-edit.component.html","webpack:///src/app/pages/registrations/form/form-filter-dialog/form-filter-dialog.component.ts","webpack:///src/app/pages/registrations/form/form-filter-dialog/form-filter-dialog.component.html","webpack:///src/app/model/inspection.model.ts","webpack:///src/app/pages/patrol/patrol-edit/patrol-edit.component.ts","webpack:///src/app/pages/patrol/patrol-edit/patrol-edit.component.html","webpack:///src/app/general/filter-component/filter.model.ts","webpack:///src/app/pages/registrations/form/question-form/question-form.component.ts","webpack:///src/app/pages/registrations/form/question-form/question-form.component.html","webpack:///src/app/model/location.model.ts","webpack:///src/app/pages/registrations/point/point-filter-dialog/point.filter.model.ts","webpack:///src/app/pages/verification/verification-edit/verification-edit.component.html","webpack:///src/app/pages/verification/verification-edit/verification-edit.component.ts","webpack:///src/app/model/pipe/location.pipe.ts","webpack:///src/environments/environment.ts","webpack:///src/app/pages/message-page/message-page.module.ts","webpack:///src/app/pages/registrations/observed-area/observed-area-list/observed-area-list.component.ts","webpack:///src/app/pages/registrations/observed-area/observed-area-list/observed-area-list.component.html","webpack:///src/app/general/operation/event-list-dialog/event-list-dialog.component.ts","webpack:///src/app/general/operation/event-list-dialog/event-list-dialog.component.html","webpack:///src/app/model/marker.model.ts","webpack:///src/app/pages/verification/verification-filter-dialog/verification-filter-dialog.component.ts","webpack:///src/app/pages/verification/verification-filter-dialog/verification-filter-dialog.component.html","webpack:///src/app/general/operation/import-points-dialog/import-points-dialog.component.ts","webpack:///src/app/general/operation/import-points-dialog/import-points-dialog.component.html","webpack:///src/app/pages/message-page/message-page.component.ts","webpack:///src/app/pages/message-page/message-page.component.html","webpack:///src/app/pages/registrations/registration-list-component.ts","webpack:///src/app/service/model/profile.service.ts","webpack:///src/app/general/import-geo-kml-dialog/import-geo-kml-dialog.component.ts","webpack:///src/app/general/import-geo-kml-dialog/import-geo-kml-dialog.component.html","webpack:///src/app/pages/registrations/observed-area/observed-area-filter/observed-area-filter.component.ts","webpack:///src/app/pages/registrations/observed-area/observed-area-filter/observed-area-filter.component.html","webpack:///src/app/pages/operation-edit.component.ts","webpack:///src/app/general/message/marker.filter.model.ts","webpack:///src/app/pages/channel/channel-filter/channel.filter.model.ts","webpack:///src/app/model/singleData.model.ts","webpack:///src/app/pages/registrations/patrolTeam/patrol-team-list/patrol-team-list.component.ts","webpack:///src/app/pages/registrations/patrolTeam/patrol-team-list/patrol-team-list.component.html","webpack:///src/app/pages/login/login.module.ts","webpack:///src/app/model/channel.model.ts","webpack:///src/app/service/util/date-utils.ts","webpack:///src/app/general/notification-dialog/notification-dialog.component.ts","webpack:///src/app/general/notification-dialog/notification-dialog.component.html","webpack:///src/app/pages/filtered-list-component.ts","webpack:///src/app/pages/central/central-list/central-list.component.ts","webpack:///src/app/pages/central/central-list/central-list.component.html","webpack:///src/app/general/login-error/login-error.component.ts","webpack:///src/app/general/login-error/login-error.component.html","webpack:///src/app/common/profile-class.decorator.ts","webpack:///src/app/pages/event/event-validation-note-dialog/event-validation-note-dialog.component.ts","webpack:///src/app/pages/event/event-validation-note-dialog/event-validation-note-dialog.component.html","webpack:///src/app/model/vehicle.signal.model.ts","webpack:///src/app/directives/ctrl-click.directive.ts","webpack:///src/app/service/model/event.main.actions.service.ts","webpack:///src/app/service/authorization/authorization.service.ts","webpack:///src/app/service/util/field-utils.ts","webpack:///src/app/pages/registrations/patrolTeam/patrol-team-edit/patrol-team-edit.component.ts","webpack:///src/app/pages/registrations/patrolTeam/patrol-team-edit/patrol-team-edit.component.html","webpack:///src/app/pages/verification/verification-list/verification-list.component.html","webpack:///src/app/pages/verification/verification-list/verification-list.component.ts","webpack:///src/app/service/model/layer.service.ts","webpack:///src/app/general/single-data-edit/single-data-edit.component.ts","webpack:///src/app/general/single-data-edit/single-data-edit.component.html","webpack:///src/app/pages/event/event-action-dialog/event-main-action-dialog.component.ts","webpack:///src/app/pages/event/event-action-dialog/event-main-action-dialog.component.html","webpack:///src/app/model/patrol.model.ts","webpack:///src/app/service/model/single.data.cache.service.ts","webpack:///src/app/service/model/vehicle.service.ts","webpack:///src/app/model/simple.model.ts","webpack:///src/app/pages/registrations/point/point-filter-dialog/point-filter-dialog.component.ts","webpack:///src/app/pages/registrations/point/point-filter-dialog/point-filter-dialog.component.html","webpack:///src/app/model/field.model.ts","webpack:///src/app/pages/patrol/patrol-repetition-edit-dialog/patrol-repetition-edit-dialog.component.ts","webpack:///src/app/pages/patrol/patrol-repetition-edit-dialog/patrol-repetition-edit-dialog.component.html","webpack:///src/app/service/model/observed.area.service.ts","webpack:///src/app/general/multiselect-autocomplete/multiselect-autocomplete.component.ts","webpack:///src/app/general/multiselect-autocomplete/multiselect-autocomplete.component.html","webpack:///src/app/service/util/language-utils.ts","webpack:///src/app/model/vehicle.model.ts","webpack:///src/app/pages/registrations/profile/profile-edit/profile-edit.component.ts","webpack:///src/app/pages/registrations/profile/profile-edit/profile-edit.component.html","webpack:///src/app/interceptors/auth-interceptor.ts","webpack:///src/app/pages/event/event-filter/event.filter.model.ts","webpack:///node_modules/moment/locale sync ^\\.\\/.*$","webpack:///src/app/service/model/operation.form.answers.service.ts","webpack:///src/app/pages/list-component.ts","webpack:///src/app/app.component.html","webpack:///src/app/app.component.ts","webpack:///src/app/pages/registrations/form/form-filter-dialog/form.filter.model.ts","webpack:///src/app/model/user.model.ts","webpack:///src/app/pages/patrol/patrol.module.ts","webpack:///src/app/pages/login/login-services/index.ts","webpack:///src/app/model/profile.model.ts","webpack:///src/app/service/model/channel.users.service.ts","webpack:///src/environments/environment-loader.ts","webpack:///src/app/model/observed.area.model.ts","webpack:///src/app/pages/registrations/placement/placement-edit/placement-edit.component.ts","webpack:///src/app/pages/registrations/placement/placement-edit/placement-edit.component.html","webpack:///src/app/common/constants.ts","webpack:///src/app/model/geo.model.ts","webpack:///src/app/pages/registrations/user/user-list/user-list.component.ts","webpack:///src/app/pages/registrations/user/user-list/user-list.component.html","webpack:///src/app/pages/registrations/company/company-edit/company-edit.component.ts","webpack:///src/app/pages/registrations/company/company-edit/company-edit.component.html","webpack:///src/app/pages/registrations/vehicle/vehicle-edit/vehicle-edit.component.ts","webpack:///src/app/pages/registrations/vehicle/vehicle-edit/vehicle-edit.component.html","webpack:///src/app/pages/login/login-services/user-login.service.ts","webpack:///src/app/service/model/registration.service.ts","webpack:///src/app/app.module.ts","webpack:///src/app/general/login-as/login-as.component.ts","webpack:///src/app/general/login-as/login-as.component.html","webpack:///src/app/pages/registrations/point/point-list/point-list.component.ts","webpack:///src/app/pages/registrations/point/point-list/point-list.component.html","webpack:///src/app/service/model/placement.service.ts","webpack:///src/app/service/loading/loading-list.service.ts","webpack:///src/app/pages/registrations/observed-area/observed-area-filter/observed-area.filter.model.ts","webpack:///src/app/model/pipe/user-model-toview.pipe.ts","webpack:///src/app/model/kilometerMark.model.ts","webpack:///src/app/model/verification.model.ts","webpack:///src/app/general/operation/import-points-kml-dialog/import-points-kml-dialog.component.ts","webpack:///src/app/general/operation/import-points-kml-dialog/import-points-kml-dialog.component.html","webpack:///src/app/general/global-spinner/global-spinner.component.ts","webpack:///src/app/general/global-spinner/global-spinner.component.html","webpack:///src/app/general/track-points-dialog/track-points-dialog.component.ts","webpack:///src/app/general/track-points-dialog/track-points-dialog.component.html","webpack:///src/app/model/patrolteam.model.ts","webpack:///src/app/pages/central/central-filter-dialog/central-filter.model.ts","webpack:///src/$_lazy_route_resource lazy namespace object","webpack:///src/app/model/attachment.model.ts","webpack:///src/app/error/global-error-handler.service.ts","webpack:///src/app/interceptors/invalid-token-api-service.ts","webpack:///src/app/pages/edit-component.ts","webpack:///src/app/general/base-map/base-map.component.html","webpack:///src/app/general/base-map/base-map.component.ts","webpack:///src/app/pages/verification/verification.module.ts","webpack:///src/app/service/model/entity.cache.service.ts","webpack:///src/app/service/model/verification.service.ts","webpack:///src/app/general/upload/upload.component.ts","webpack:///src/app/general/upload/upload.component.html","webpack:///src/app/model/patrol.repetition.model.ts","webpack:///src/app/service/model/company.service.ts","webpack:///src/app/service/model/alerts.service.ts","webpack:///src/app/service/model/patrol.team.service.ts","webpack:///src/app/service/model/patrol.service.ts","webpack:///src/app/general/confirmation-dialog/confirmation-dialog.component.ts","webpack:///src/app/general/confirmation-dialog/confirmation-dialog.component.html","webpack:///src/app/model/layer.filter.model.ts","webpack:///src/app/pages/patrol/patrol-filter-dialog/patrol-filter-dialog.component.ts","webpack:///src/app/pages/patrol/patrol-filter-dialog/patrol-filter-dialog.component.html","webpack:///src/app/general/general.module.ts","webpack:///src/app/pages/channel/channel.module.ts","webpack:///src/app/general/single-autocomplete/single-autocomplete.component.ts","webpack:///src/app/general/single-autocomplete/single-autocomplete.component.html","webpack:///src/app/pages/registrations/profile/profile-list/profile-list.component.ts","webpack:///src/app/pages/registrations/profile/profile-list/profile-list.component.html","webpack:///src/app/general/operation/import-points-xls-dialog/import-points-xls-dialog.component.ts","webpack:///src/app/general/operation/import-points-xls-dialog/import-points-xls-dialog.component.html","webpack:///src/app/general/filter-component/operation-filter-component.ts","webpack:///src/app/model/band.model.ts","webpack:///src/app/service/model/route-geographical-service.ts","webpack:///src/app/pages/registrations/vehicle/vehicle-list/vehicle-list.component.ts","webpack:///src/app/pages/registrations/vehicle/vehicle-list/vehicle-list.component.html","webpack:///src/app/pages/archive-list-component.ts","webpack:///src/app/pages/registrations/form/form-list/form-list.component.ts","webpack:///src/app/pages/registrations/form/form-list/form-list.component.html","webpack:///src/app/pages/registrations/form/form-edit/form-edit.component.ts","webpack:///src/app/pages/registrations/form/form-edit/form-edit.component.html","webpack:///src/app/model/form.model.ts","webpack:///src/app/model/enums.enum.ts","webpack:///src/app/service/util/list-utils.ts","webpack:///src/app/service/model/user.service.ts","webpack:///src/app/general/boolean-br.pipe.ts","webpack:///src/app/pages/registrations/placement/placement-list/placement-list.component.ts","webpack:///src/app/pages/registrations/placement/placement-list/placement-list.component.html","webpack:///src/app/model/route.model.ts","webpack:///src/app/model/common.model.ts","webpack:///src/app/general/system-check/system-check-dialog.component.ts","webpack:///src/app/general/system-check/system-check-dialog.component.html","webpack:///src/app/service/model/single.data.service.ts","webpack:///src/app/model/tracking.model.ts","webpack:///src/app/pages/central/central.module.ts","webpack:///src/app/model/results.model.ts","webpack:///src/app/service/model/point.service.ts","webpack:///src/app/service/model/channel.service.ts","webpack:///src/app/pages/patrol/patrol-filter-dialog/patrol-repetition.filter.model.ts","webpack:///src/app/pages/registrations/company/company-list/company-list.component.ts","webpack:///src/app/pages/registrations/company/company-list/company-list.component.html","webpack:///src/app/service/model/entity.service.ts","webpack:///src/app/general/multiselect-object-autocomplete/multiselect-object-autocomplete.component.ts","webpack:///src/app/general/multiselect-object-autocomplete/multiselect-object-autocomplete.component.html","webpack:///src/app/pages/patrol/patrol-list/patrol-list.component.html","webpack:///src/app/pages/patrol/patrol-list/patrol-list.component.ts","webpack:///src/app/general/single-data-list/single-data-list.component.ts","webpack:///src/app/general/single-data-list/single-data-list.component.html","webpack:///src/app/pages/verification/verification-filter-dialog/verification.filter.model.ts","webpack:///src/app/pages/patrol/patrol-filter-dialog/patrol.filter.model.ts","webpack:///src/app/general/message/message.component.ts","webpack:///src/app/general/message/message.component.html","webpack:///src/app/general/date-chooser/date-chooser.component.ts","webpack:///src/app/general/date-chooser/date-chooser.component.html","webpack:///src/app/general/test-data-generator/test-data-generator.service.ts","webpack:///src/app/model/inspection.point.model.ts","webpack:///src/app/service/model/operation.service.ts","webpack:///src/app/general/filter-component/filter-component.ts","webpack:///src/app/model/valve.model.ts","webpack:///src/app/pages/central/central.component.html","webpack:///src/app/pages/central/central.component.ts","webpack:///src/app/service/model/markers.service.ts","webpack:///src/app/service/model/websocket.signals.service.ts","webpack:///src/app/general/filter-component/operation.filter.model.ts","webpack:///src/app/pages/operation-list-component.ts","webpack:///src/app/pages/event/event-filter/event-filter.component.ts","webpack:///src/app/pages/event/event-filter/event-filter.component.html","webpack:///src/app/model/event.model.ts","webpack:///src/app/service/model/signals.service.ts","webpack:///src/app/model/entity.model.ts","webpack:///src/app/app-routing.module.ts","webpack:///src/app/service/model/tracking.service.ts","webpack:///src/app/model/question.model.ts","webpack:///src/app/pages/registrations/event-main-actions/event-main-actions-list/event-main-actions-list.component.ts","webpack:///src/app/pages/registrations/event-main-actions/event-main-actions-list/event-main-actions-list.component.html","webpack:///src/app/service/websocket/websocket.ts","webpack:///src/app/general/internationalization/mat-paginator-intl-br.ts","webpack:///src/app/pages/registrations/observed-area/observed-area-edit/observed-area-edit.component.ts","webpack:///src/app/pages/registrations/observed-area/observed-area-edit/observed-area-edit.component.html","webpack:///src/app/model/placement.model.ts","webpack:///src/app/general/autocomplete/autocomplete.component.ts","webpack:///src/app/pages/registrations/event-main-actions/event-main-actions-edit/event-main-actions-edit.component.ts","webpack:///src/app/pages/registrations/event-main-actions/event-main-actions-edit/event-main-actions-edit.component.html","webpack:///src/app/pages/tracking/tracking.module.ts","webpack:///src/app/service/model/form.service.ts","webpack:///src/main.ts","webpack:///src/app/model/filekml.model.ts","webpack:///src/app/pages/central/central-filter-dialog/central-filter-dialog.component.ts","webpack:///src/app/pages/central/central-filter-dialog/central-filter-dialog.component.html","webpack:///src/app/pages/login/login-services/authentication.service.ts"],"names":["CompanyModel","languageMap","$event","stopPropagation","EventEditComponent","logger","eventService","storageService","eventMainActionService","dialog","toastr","singleDataCacheService","entityCacheService","alertsService","verificationService","authorizationService","sanitizer","goldenLayout","container","EVENT_MODEL_LABEL","EVENT_TITLE_LABEL","EVENT_GROUP_LABEL","eventStatusDescription","eventStatus","alertPriorityDescription","eventSituationDescription","resultOccurrenceDescription","eventValidationDescription","permisionRuleOption","attachmentNumber","latLongPattern","latLongMask","validationNoteSelection","identifierEvent","editedEventSubject","editedEventObservable","asObservable","eventFields","seeFile","showCNCLGroup","stringCNCL","initializeFields","actionDisplayedColumns","validationNoteDisplayedColumns","isOperationArchiveButtonHiddenForUser","subscribeOnSaveIsFinished","subscribeOnAssociatedEventUpdate","saveFinishedSubscription","unsubscribe","reloadUsersSubscription","glUnSubscribeEvent","saveFinished$","subscribe","selectedAlerts","observables","forEach","alert","eventIdentifier","model","push","editRecord","pipe","alerts","success","error","glEmitEvent","glSubscribeEvent","e","event","id","debug","view","associatedEventId","associatedIdentifier","updateInitialView","date","format","IN_TREATMENT","buildValidationNoteDataSource","metadatas","loadMulipleValues","loadingListService","_this","onUsersLoad","updateValidationUsers","analystUsers","getFilteredUsers","ANALYSIS_CCPD","ADMINISTRATOR","COORDINATOR_CCPD","operatorUsers","CNCL","coturUsers","COORDINATOR_CNCL","loadUsers","onUsersReload","validationUsers","analyst","isUserAdministrator","filter","user","orderSimpleModelList","validationAnalyst","checkValidationAnalystData","timestamp","alertPriority","band","duct","location","coordinates","toFixed","sourceType","SIMF","scalePoint","simfAlertType","km","loadById","operationId","operation","verification","stretch","options","initializeAnalystAndOperatorCNCL","setAlertDataOnView","operationType","EVENT_VERIFICATION","getVerificationAlertData","dateToSend","Date","getTime","sources","getEditEventSources","getValues","canEditEventBySource","source","isStatusFinalized","validation","INCOMPLETE","loggedUser","userHasPermission","EDIT_END_EVENT","suspiciousTimestamp","stopTimestamp","sort","note1","note2","sourceSelectionChanged","copy","name","extension","buildActionDataSource","glUpdateTabTitle","modelName","isSaving","isCreating","stringDateTimeToTimestamp","startDate","endDate","suspiciousDate","stopDate","extractAttachmentFileName","loadFromServerBySourceType","actions","length","view_actions","a","v_a","find","action","comment","done","JSON","stringify","item","undefined","open","data","width","panelClass","actionsDataSource","dialogRef","afterClosed","note","author","getUserNameLoginTitle","validationNote","splice","validationNoteDataSource","onValidationNoteAdded","row","clear","isEmpty","openConfirmationSubscription","msg","title","okLabel","result","deleteSelectedValidationNotes","selected","selectedItem","index","indexOf","deselect","numSelected","numRows","isAllSeleceted","isAllSelectedValidationNotes","select","toggle","isSelected","DUCT","VALVE","checkConditionalRequiredFieldFilled","names","isStatusFinalizedAndChannel168","isViewStatusFinalized","subname","pastedValue","pasteLatLong","next","isHiddenButtonEditForUser","canEdit","updateAttachmentData","isHiddenButtonArchiveForUser","isOperationArchiveAllowed","loadingOn","exportEvent","response","loadingOff","filename","identifier","replace","isAdmin","canArchive","isControl","hasArchivalRequirements","status","FINALIZED","COMPLETE","toString","entities","archive","values","archiveButtonLabel","info","componentName","entity","selector","onClosedEvent","autocomplete","closePanel","isUserCCPDAnalyst","userFound","isEventValidated","isLoggedUserSameAsEventCreator","readOnly","currentUserAsField","CREATE_EDIT_EVENT_NOTES","userCanSelectValidationNotes","DELETE_EVENT_NOTES","hasValue","loggedUserProfile","userType","field","permissionOptions","getUserPermissionOptions","CHANGE_ANY_EVENT_FIELD","option","ALL_FIELD","SOME_FIELDS","fields","includes","isHiddenButtonCreateEditEvent","CREATE_EDIT_EVENT","isHiddenButtonDeleteEvent","DELETE_EVENT","isHiddenButtonDeleteValidationNotes","userCanDeleteValidationNotes","canEditCcpdAnalyst","canEditField","CCPD_ANALYST","canEditValidationAnalyst","VALIDATION_ANALYST","updateDiff","analystEvent","validationAnalystModel","file","size","clearOperationFile","message","attachmentFile","split","slice","join","pop","type","ONE","attachmentFile1","TWO","attachmentFile2","THREE","attachmentFile3","FOUR","attachmentFile4","FIVE","attachmentFile5","fileName","viewFile","removed","backup","back_attachmentFile1","back_attachmentFile2","back_attachmentFile3","back_attachmentFile4","back_attachmentFile5","attachmentOpFile1","attachmentOpFile2","attachmentOpFile3","attachmentOpFile4","attachmentOpFile5","saveEvent","mapViewToModel","saveCreatedModel","saveEditedModel","saveClickEvent","preventDefault","saveEventStatusFinalized","formElements","getFormElements","edit","glUpdateCreateId","entitySaved","entitySaveError","create","Map","set","getAttachmentFile","fileData","loadAttachmentFile","reloadEventMainActions","onEnableEditClick","onCopyClick","onDeleteClick","onExportClick","onArchiveClick","onLocationClick","onRevertClick","enterCanSave","leaveCanSave","onSaveClick","numbersOnly","onValidationChange","onActionAddValidationNote","onActionEditValidationNote","onDeleteManyValidationNoteClick","onPasteLatLong","addFile","openOperationFile","templateUrl","styleUrls","verificationListComponent","eventListComponent","ValidationNoteModel","EventMainActionModel","RegistrationsModule","forRoot","declarations","imports","BlankComponent","AbstractSignalModel","EventModule","exports","providers","SimfModel","feature","properties","simf","states","contents","showPopupLayerTables","description","DcModel","search","dc","time","occurrence","place","identificationMode","latLong","getLatLong","city","desc","OperationModel","priorityName","priority","PATROL","DISCONNECTED","value","text","CONNECTING","CONNECTED","TypeChannels","ChannelListComponent","userService","channelService","patrolService","channelUsersService","authenticationService","changeDetector","CHANNEL_GROUP_LABEL","CHANNEL_TITLE_LABEL","openedSideList","channelTypeDescription","selectedComponentType","CHANNEL_MESSAGE","allowedChannels","allowedChannelTypes","allowedPlacements","markersConnectionState","showMessages","channelUsersMap","membersPageSize","defaultPageSize","membersPageLength","sortOptions","pageSize","filterModel","markerFilterModel","displayedColumns","membersDisplayedColumns","membersSort","getDefaultMembersSortColumn","start","getDefaultMembersSortDirection","disableClear","updateTabTitle","getLocalUser","subscribeToPatrolUpdateEvent","subscribeToVerificationUpdateEvent","subscribeToRegistrationUpdateEvent","subscribeToNewChannelMessageReceived","subscribeOnAuthenticatedStatus","subscribeToMarkersWebsocketStatusCheck","getLoggedUserType","clearFilter","updateAllowedChannelTypes","updateAllowedPlacements","loadRecordsFromServer","channelsWithNewMessagesCount","channelCountWithNewMessages","authenticatedSubscription","authenticated$","authenticated","permission","LIST_CHANELS","glRemoveLayout","markersWebsocket","createSignalsWebsocket","markersWebsocketStateSubscription","state","loadPlacements","getPlacements","onChannelOptionFilterChange","onFilter","allChannelTypes","Object","keys","map","channelTypeNames","element","updateChannels","allChannels","getUnreadMessagesByUser","toPromise","then","updateInMemoryChannels","buildDataSource","err","updateDataSource","channelIds","channel","src","parse","channelTypes","t","placementNames","p","match","CORE","MANAGERIAL","referencedName","loadOperationSubscription","onNewMarkerReceivedSubscription","updateInMemoryChannelsSubscription","updatedChannel","findIndex","newMessagesCount","active","direction","selectedChannel","onChannelUpdated","updateChannelNewMessage","errMsg","statusText","getUserFromEmail","email","toLocaleLowerCase","token","setLocalUser","perm","ACCESS_TO_ALL_PLACEMENT","userPlacements","concat","placements","originPlacement","setSpecificPlacementIds","registrationType","USER","reloadUserData","CHANNEL","loadChannelUsers","PROFILE","profileId","loadProfile","CHANNEL_RESET","getMessageData","setUnreadMessagesInChannel","updateOperation","patrolTeamId","channelOperationTypes","PD_MOBILE","PD_TECHNICAL","CCPD","operationService","getRecord","currentOperation","selectedChannelhasTeamOrOperation","currentTeam","STARTED","loadOperation","resetUnreadChannelMessagesdByUser","get","users","b","fa","toLowerCase","fb","buildMembersDataSource","profile","getProfileById","membersDataSource","sortingDataAccessor","sortHeaderId","getPropertyByPath","useServerPagination","paginator","membersPaginator","renderComponent","resetUnreadChannelMessages","channelId","messageComponent","updateTitle","clearData","loadPatrolTeam","loadMarkers","loadPatrolTeams","patrolTeam","getPatrolTeamById","referencedId","updatePatrolTeamData","marker","getUnreadMessagesInChannel","loadCurrentOperationByTeam","patrolTeams","subtract","hours","utc","valueOf","loadFilteredListFromRestApi","operations","lastMessageReceivedTimestamp","formatDate","company","placement","getPlacementName","uf","login","getProfileName","property","lowerAndTrimText","popout","setMessageData","messageData","setListPopoutData","opened","sidenavToggle","applySearch","onRemoveSearch","onRefreshClick","onPageChanged","changeDetection","OnPush","sidenav","ReactiveService","httpClient","routeDeviationApiUrl","settings","route_deviation_address","simfApiUrl","simf_address","responseType","providedIn","SignalModel","LANDING_PAGE","BaseGoldenPanel","goldenLayoutComponent","goldenLayoutContainer","goldenLayoutInstance","getGoldenLayoutInstance","mainMenu","childNodes","btn","glRegisterDragMainButton","subscribeDragMainMenu","itemConfiguration","buildItemConfig","createDragSource","mainRoot","root","contentItems","getItemsById","on","contentItem","getMainMenuContainerById","parent","Error","remove","browserWindow","isStack","maxStack","i","config","componentState","originalId","setActiveContentItem","getWindow","focus","tabTitleAnimation","isClosable","addChild","recreateStack","mainStack","getMainStack","oldItem","addId","removeChild","isEditComponent","predicted","openPopouts","window","getGlInstance","itemInfo","getComponentInfo","activateContentItem","addComponentToMainRoot","check","c","isComponent","cmp","__ngComponent","viewIsChanged","checkChildrenSaved","close","nameLayout","isSubWindow","pageReadyCallback","creation_id","maximisedItemId","eventHub","emit","eventName","callback","off","height","tabTitle","substr","setTitle","elem","layoutManager","animate","display","startsWith","EventListComponent","ngZone","trackingService","markersService","insideEventEdition","columnsTitles","verificationFields","_readonly","readonly","eventUpdateSubscription","editedEventSubscription","eventUpdateWebsocket","destroy","subscribeOnChangeEditedEventId","initWebsocket","editedEventId","archived","ALL","filterByAssociatedEvent","ASSOCIATED","runOutsideAngular","createEventUpdateWebsocket","subscribeToEventUpdateWebsocket","entityService","checkInsideEventlistOrNotInsideEvent","exclude","toFilter","oldModel","checkFilterDates","checkFilterOccurrences","checkFilterStatus","checkFilterCommunicationChannel","checkFilterAnalyst","checkFilterSources","checkFilterKM","findAndUpdateModel","NOT_FOUND","stream","body","updateModelItem","val","occurrences","channels","communicationChannel","analysts","startKM","endKM","stretchStartKM","trim","stretchEndKM","targetPointKM","glOpenContainer","getEventStatus","valve","col","Number","toLocaleString","minimumFractionDigits","maximumFractionDigits","timestampToStringInDays","timestampToTimeString","getVerificationSatus","expired","patrolCoordinator","gs","regional","serviceType","vehicle","plate","timestampToStringInMinutes","taccpd","tacs","tapd","tta","terf","tvi","tsi","trivi","events","ws_data","lines","line","getEventExportColValue","verifications","getVerificationExportColValue","noAccessPoints","point","el","latitude","longitude","kms","selection","pointsDescription","requestedPoints","visitedPoints","noAccesVerificationPoints","inspections","inspection","inspectionPointNoAccess","parseInt","executedPoints","pointsDiff","EXCEL_EXTENSION","ws_name","wb","book_new","exportDate","dataSource","filteredData","buildDataArray","ws","aoa_to_sheet","book_append_sheet","eventsId","eventIds","currentVerifications","Promise","resolve","reject","operationsIds","successDataRead","loadListGreaterThanOneHundred","loadVerifications","currentEvent","eventId","sendDateMoment","eventMoment","createdAtMoment","endMoment","dateSituationFoundMoment","startInspMoment","startMovementMoment","eventCreatedAt","sentDate","duration","diff","secondsToHms","asSeconds","createdAt","dateSendEndVerification","eventCreatedMoment","dateSituationFound","startDateInspection","endDateInspection","endInspMoment","startDateMovement","aggregateInspectionsData","exportEventsToXls","loadListVerifications","targetPointLatLong","stretchStartLatLong","stretchEndLatLong","NOT_ASSOCIATED","changeAssociatedEvents","editedEventIdentifier","associateEvent","associateType","changeAssociatedEvent","changedEvents","selectEvents","getSelectedEvents","selectedEvents","rows","showIdentifier","deleteSelectedEntities","postListDeleteProcess","eventsToDelete","seconds","h","Math","floor","m","s","hDisplay","mDisplay","sDisplay","onCreateClick","onEditManyClick","onDeleteManyClick","onExportManyClick","onArchiveManyClick","onLocationManyClick","onCreateVerificationClick","onLinkEventClick","onUnLinkEventManyClick","onEditClick","onLinkEventManyClick","onAssociateEvent","onUnLinkEventClick","editReadOnly","DuctModel","typeValues","OilDuct","GasDuct","from","to","diameter","OBJECT_NAME","EventService","event_verifications_address","blobToFile","blob","arrayOfBlob","Array","File","pageIndex","params","startDateTime","endDateTime","append","analystId","ducts","valves","ARCHIVED","String","http","apiUrl","updateRecord","record","formData","baseUrl","PatrolRepetitionDialogComponent","confirmDialog","patrolRepetitionModel","add","startOf","viewStartDate","viewStartTime","scheduleOption","CUSTOM","startRule","EVERY_PERIOD","finishRule","FINISH_AFTER_QUANTITY","theEachQuantity","afterRepetitionQuantity","periodTypesView","unit","viewValue","unitPeriodSelected","daysOfWeekView","selectedDaysOfWeek","daysOfWeek","_observableListWeek","listweek$","patrol","referencePatrolId","referencePatrolIdentifier","loadFromServer","getPatrolRepetitionByReferencePatrolId","copyModel","eachPeriod","IN_THE_DAYS","neverFinish","afterNumberRepetitionsToFinish","FINISH_DATE","startTime","populateDaysOfWeek","viewEndDateFilter","day","checkBoxElem","checked","fillDaysOfWeek","isoWeekday","timeString","setDayOfWeekFromStartDate","dateString","minutes","milliseconds","todayDate","isBefore","isAfter","viewToModel","dayWeek","NEVER_FINISH","finishDate","applyStartDate","applyStartTime","changeStartRule","changeFinishRule","applyEndDate","onRemoveClick","HEADER_VERTICAL_SPACE","MAX_HEADER_VERTICAL_SPACE","SIDE_HORIZONTAL_SPACE","authentication","ARCGIS_TOKEN","FilterOption","AbstractMapObject","visible","listed","AlertMapObject","InspectionPointMapObject","TrackingMapObject","TeamTrackingMapObject","trackings","EventMapObject","OperationMapObject","EditionModeObject","GlassPanelObject","corner1","corner2","bounds","geoRectangle","color","fillOpacity","GLASS_PANEL_OPACITY","stroke","TIME_FORMAT","DATE_FORMAT","HistoricalTrackingObject","timeVisible","stateVisible","finishChanged","signals","accumDistance","MapComponent","routeGeographicalObjectService","markerService","MAP_TITLE_LABEL","locationMarkerLatLong","trackingObjectsMap","trackingsVisible","MOBILE_APP","VEHICLE","trackingsListedCount","trackingsCount","trackingsExpanded","teamTrackingObjectsMap","teamTrackingsVisible","teamTrackingsListedCount","teamTrackingsCount","teamTrackingsExpanded","alertObjectsMap","alertsVisible","alertsListedCount","alertsExpanded","alertIcon","iconUrl","ICON_URL_ALERT","iconSize","ICON_SIZE","iconAnchor","pointObjectsMap","pointsVisible","pointsListedCount","pointsExpanded","pointIcon","ICON_URL_POINT","eventObjectsMap","eventsVisible","eventsListedCount","eventsExpanded","eventIcon","ICON_URL_EVENT","historicalTrackingMap","historicalTrackingsVisible","historicalTrackingsListedCount","historicalTrackingsExpanded","markerIcon","ICON_URL_STATE_MARKER","ROUTE_ICON_SIZE","operationObjectsMap","operationsVisible","operationsListedCount","operationsCount","operationsExpanded","layersMap","layersVisible","layersExpanded","layersSearchMap","layersSearchExpanded","layersFilter","allDcYears","allBands","bandsFiltered","allResponsibles","allObservedAreas","areasFiltered","operationTypeDescription","filterOption","filterOptionALL","areaStatus","areaStatusDescriptions","kmIntToString","teamTrackingListOrder","localeCompare","trackingItemListOrder","signal","mobileObjectId","trackingListOrder","tracking","layerListOrder","layersOrder","baseMap","DC_HISTORY_ID","OBSERVED_AREA_ID","SIMF_ID","BAND_ID","OILDUCT_ID","GASDUCT_ID","KILOMETER_MARK_ID","VALVE_ID","TERMINAL_ID","REFINARY_ID","DELIVERY_POINT_ID","key","operationListOrder","historicalTrackingListOrder","alertListOrder","pointListOrder","inspectionPoint","eventListOrder","layerSearchListOrder","loadFormOptionsData","loadFromCache","subscribeOnFillData","subscribeOnPageMaximizedEvent","subscribeOnModelUpdate","subscribeToSaveEdit","subscribeToNewMarkersNotifications","subscribeOnLostSignalStatusCheck","editionMode","OperationId","clearEditionMode","onNewMarkerSubscription","searchTimeOut","clearTimeout","lostSignalStatusCheckInterval","clearInterval","initializeLayers","setTimeout","loadLastVehicleSignals","loadLastSignals","hasPopoutData","getPopoutData","restorePopoutData","getShowSpinner","glOnResize","fillData","onTrackingSelection","fit","trackingList","onTrackingListSelection","removeEditionMode","onRemoveEditionMode","updatedLayer","updateLayer","layerData","onLayerSelection","layerDataList","onLayerListSelection","onEditionModeSelection","warning","historicalTracking","onHistoricalTrackingSelection","historicalTrackingList","onHistoricalTrackingListSelection","historicalTrackingLastOperation","onHistoricalTrackingLastOperationSelection","historicalTrackingLastOperationList","onHistoricalTrackingLastOperationListSelection","historicalTrackingOperation","onHistoricalTrackingOperationSelection","historicalTrackingOperationList","onHistoricalTrackingOperationListSelection","historicalTrackingTeam","onHistoricalTrackingTeamSelection","historicalTrackingTeamList","onHistoricalTrackingTeamListSelection","historicalTrackingUser","onHistoricalTrackingUserSelection","historicalTrackingUserList","onHistoricalTrackingUserListSelection","historicalTrackingVehicle","onHistoricalTrackingVehicleSelection","historicalTrackingVehicleList","onHistoricalTrackingVehicleListSelection","onOperationIdSelection","mapEvent","OPERATION_LOCATION","onOperationSelection","MANY_OPERATION_LOCATION","onOperationListSelection","entityList","onAlertSelection","alertList","onAlertListSelection","onInspectionPointSelection","inspectionPointList","onInspectionPointListSelection","EVENT_LOCATION","onEventSelection","MANY_EVENT_LOCATION","onEventListSelection","OBSERVED_AREA_LOCATION","onObservedAreaSelection","MANY_OBSERVED_AREA_LOCATION","onObservedAreaListSelection","operationObjectsGet","onObservedAreaSaved","detectChanges","teamTracking","getPatrolTeamTitle","teamTrackingObject","markers","centerTrackingMarkers","highlightMarkers","removedFromMap","removeTrackingMarker","onTeamTrackingRemove","updateTrackingMarker","centerTrackingMarker","highlightMarker","setInterval","trace","trackingObject","updateIcon","found","getTrackingId","trackingRemove","searchValue","updateTeamTrackingListed","updateTeamTrackingListedCount","updateTrackingListed","updateTrackingListedCount","updateHistoricalTracking","specificPlacements","getSpecificPlacementIds","invalidInfo","isPermittedPlacement","selectTeamTracking","selectTracking","fitTrackingListBounds","latLongs","pad","BOUNDS_PAD_RATIO","getLatLongBounds","fitBounds","fitPoint","onHistoricalTracking","layerTypeToId","layer","hasLayer","addLayerToMap","geoLayer","filterGeoModel","geoLayerLatLongs","geometry","geometries","coordsToLatLngs","highlightBounds","highlightPolyline","lls","highlightLatLongPoints","updateGeoLayer","layerFilterIcon","removeLayerFromMap","area","initializeObservedAreaLayer","lastSavedArea","areasIds","updateFilter","geoLayers","areaList","newAreas","areaLatLongs","responsibleUserTypes","COORDINATOR_OPPD","PLANNER","loadVehicles","bandNames","responsiblesIds","responsible","layerFilterSort","bandIds","updateAllFilters","filterObservedArea","updateFilterBands","selectLayerFilter","reset","YEAR","years","layersFilterSelectDcYear","resetSearchLayer","STATE","layersFilterSelectState","resetAllLayersSearch","BAND","layersFilterSelectBand","AREA_STATUS","ACTIVE","layerFilterSelectObservedArea","AREA_RESPONSIBLE","AREA_ID","getPopupContent","operationMapObject","popupContent","getOperationObjectPopupContent","updateListedObject","updateOperationListedCount","fileKmlRoute","updateOperationFileDataRoute","removedKmlRoute","geoRoute","geoRouteBounds","operationObjectsDelete","updateOperationRoute","importKmlRoute","operationObjectsNew","operationObjectsUpdate","getBounds","fitOperationBounds","route","fileRouteKml","loadKML","geoPoints","geoPointsBounds","getOperationGeoPoints","operationList","fitOperationListBounds","polylines","getGeoRoutePolyline","distance","polyline","latLngs","getLatLngs","prevLatLng","latLngToTurfPoint","curLatLng","units","highlightGeoRoute","getSouthWest","getNorthEast","copyBounds","extend","onOperationRemoveClick","PLANNED","SENT","operationsIdList","target","formats","isValid","which","userId","optionsList","finishTime","historicSignals","compareSignalTime","getHistoricalTrackingId","getVehicleByPlate","sortHistoricalSignals","firstTimestamp","lastTimestamp","firstTimeMoment","firstTime","firstDate","lastTimeMoment","lastTime","lastDate","updateTimeFields","buildTrackingLine","teamUser","polyLine","loadFromServerByOperationIdAndOperationType","addHistoricalTrackingObject","signalsPerId","firstSignal","getTeamUser","teamId","loadHistoricalTrackingOperationMarkers","trackingLine","highlightLatLongLine","loadFromServerByMobileObjectId","userList","vehicleList","loadFromServerByTeamId","getHistoricalTrackingTitle","fitHistoricalTrackingBounds","inOperation","firstSignalTimestamp","startTimestamp","lastSignalTimestamp","finishTimestamp","stateMarker","createMarker","lat","lng","bindTooltip","getTooltipContent","stateMarkers","onNewMarkerReceived","markerType","TEXT_MESSAGE","AUDIO_MESSAGE","IMAGE_MESSAGE","VIDEO_MESSAGE","addStateMarker","addMarker","removeHistoricalTrackingStateMarkers","buildStateMarkers","removeMarker","timeMarkers","trackingDecorator","removeHistoricalTrackingLine","removeHistoricalTrackingTimeMarkers","onHistoricalTrackingRemoveClick","startTimeMoment","filterHistoricalTracking","finishTimeMoment","runTime","firstSignalMoment","lastSignalMoment","numberOfHours","reloadSignalsForHistoricalTracking","filterHistoricalSignals","isVehicle","showOperation","companyName","getCompany","getTitle","timestampToStringInSeconds","coordToString","radius","TRACKING_LINE_WEIGHT","TRACKING_LINE_COLOR","fill","tips","getTimeMarkerTooltipContent","bindPopup","minWidth","POPUP_MIN_WIDTH","latLng","lastLatLng","addTimeMarker","signalToTurfPoint","TIME_MARKER_DISTANCE","patterns","repeat","symbol","arrowHead","pixelSize","headAngle","polygon","pathOptions","weight","latLngsArray","buildTimeMarkers","dashArray","TRACKING_LINE_STYLE","getHistoricalTrackingPopupContent","addArrowsToTracking","updateListedCount","operationStatus","lastSignal","addLatLng","prevTimeLatLng","getLatLng","fitZoom","latlong","locationMarker","searchLatLngIcon","getLocationMarkerPopupContent","getLocationMarkerTooltipContent","fitMarker","clearSearchResults","fitAlertListBounds","alertMapObject","onAlertRemoveClick","pointList","inspectionPointObject","onPointRemoveClick","getInspectionPointLatLong","fitInspectionPointListBounds","latlongArray","eventMapObject","PLANNED_ROUTE_LINE_COLOR","PLANNED_ROUTE_LINE_WEIGHT","eventList","fitEventListBounds","updateDrawPolylineButton","autoRoute","updateEditionMode","setEditionMode","opacity","setOpacity","invoke","setStyle","timeMarker","updateObjectsOpacity","editionId","id_layer","kmlStr","strArray","Blob","layers","getDrawLayers","isMarker","removeDrawLayer","routeGroup","hasLine","addLayer","routeGeoJSON","toGeoJSON","kmlStringToFile","myDrawPanel","document","getElementById","observer","MutationObserver","mutations","button","getElementsByClassName","style","disconnect","observe","childList","subtree","rebuildKmlRoute","createdLayer","layerType","setIcon","getCriticalPointIcon","idlayer","editedLayers","layerGroup","getLayers","findInspectionFromMarker","deletedLayers","inspectionIndex","findInspectionIndexFromMarker","editStart","removeEditedRoute","addEditionRouteToMap","updateKmlRouteAndNotifyEdition","getEditedKmlRoute","tolerance","simp","turfOptions","highQuality","turfPolygon","leafletGeoJSON","simplify","simplifyPolyline","SIMPLIFY_POLYLINE_TOL","addDrawLayer","fitDrawLayer","getOperationPointMarkers","wasVisible","glassPanel","bringToFront","GLASS_OBJECT_OPACITY","shownDraw","addEditionOperationToMap","removeDrawLayers","highlight","highlightLine","HIGHLIGHT_CIRCLE_RADIUS","fillColor","HIGHLIGHT_FILL_COLOR","HIGHLIGHT_OPACITY","latLongLine","HIGHLIGHT_LINE_WEIGHT","HIGHLIGHT_LINE_COLOR","highLine","maximizing","sidenavcontent","nativeElement","getElementRef","parentElement","clientWidth","clientHeight","glContainerWidth","glContainerHeight","mapStyle","invalidateSize","savePopoutData","setPopoutData","alertsList","getAlertsList","pointsList","getPointsList","getOperationsIdList","operationsList","getOperationsList","eventsList","getEventsList","getHistoricalTrackingList","historicalTrackingOptionsList","getHistoricalTrackingOptionsList","layerFilter","count","object","operationObject","str","lastSearchResult","resetListedObjectsMap","layersSearchCount","searchLayer","dcs","year","geoData","searchResult","isLayerOptionToProfile","kmMark","layerPopupContent","result_count","geo","MAX_LAYER_RESULT","onLayerSearchClick","onAlertClick","onTrackingClick","onEventClick","onOperationClick","onHistoricalTrackingClick","onPointClick","searchCount","updateListedObjectsMap","showLastSearchResult","resetListedObjects","searchMapObjects","onAddLocationMarker","onRemoveLocationMarker","onZoomFitClick","keyupSearch","mapReady","layerReady","mapEditUpdate","eventClicked","verificationClicked","AlertModel","acknowledged","alertType","operationIdentifier","getSimfInfo","locationTimestamp","linebreak","alertId","endTime","cpsNumber","startChannel","endChannel","startOpticalDistanceMetres","endOpticalDistanceMetres","startLatitude","startLongitude","endLatitude","endLongitude","zoneName","lenght","alertLevel","toUpperCase","speed","externalType","externalId","AnswerListComponent","operationFormAnswersService","VERIFICATION_GROUP_LABEL","VERIFICATION_TITLE_LABEL","VERIFICATION_MODEL_LABEL","evidenceNumber","_operationId","_operationType","operationAnswersDisplayedColumns","loadAnswersFromRestApi","updateEvidenceFile","answers","answer","evidence1","getEvidenceFile","evidence2","evidence3","evidence4","evidence5","idFile","loadFileById","reader","FileReader","readAsDataURL","onload","_event","evidenceFileUrl1","evidenceFileUrl2","evidenceFileUrl3","evidenceFileUrl4","evidenceFileUrl5","image","Image","w","write","outerHTML","InsertPointDialogComponent","editing","oldLatlong","activities","inspectionPointId","ltlg","RegExp","accept","ArchiveService","records","changeOperationStatus","FINISHED","PointEditComponent","pointService","POINT_MODEL_LABEL","POINT_TITLE_LABEL","POINT_GROUP_LABEL","pointSourceValues","accessArrangementValues","accessTypeValues","blockTypeValues","roadConditionValues","numberOfOutputsValues","trafficVolumeValues","trafficPossibilityValues","residencesValues","videoMonitoringValues","areaUnderControlValues","vulnerabilityViewValues","categoryValues","accessCriticalityValues","pointStatus","pointStatusDescription","inspectionBooleanDescription","APPROVED","IN_ANALYSIS","createdTimestamp","splitted","createDateMiliseconds","kmStringToInt","isPointStatusEditingAllowed","replaceModelViewDateData","CREATE_EDIT_POINT","onStatusChange","StorageService","localUser","profileUser","loginAsUser","specificPlacementsId","localStorage","setItem","removeItem","getItem","tokml","geojson","initialOptions","documentName","documentDescription","simplestyle","xml","encoding","attValue","obj","att","documentElement","ele","Document","end","allowEmpty","styleHashesArray","_","valid","styleDefinition","styleReference","styleHash","hashStyle","isPoint","hasMarkerStyle","markerStyle","isPolygon","isLine","hasPolygonAndLineStyle","polygonAndLineStyle","PlacemarkElement","Placemark","extendeddata","any","children","features","Point","LineString","linearring","Polygon","outer","inner","outerRing","outerBoundaryIs","LinearRing","innerRings","innerBoundaryIs","MultiPoint","multi","MultiPolygon","MultiLineString","GeometryCollection","g","every","cds","pairs","charAt","lineStyle","hexToKmlColor","polyStyle","hash","hexColor","r","o","ServiceResponse","url","TrackingComponent","operationStatusDescription","TRACKING_TITLE_LABEL","TRACKING_GROUP_LABEL","USER_NOT_FOUND","signalsConnectionState","filteredTrackings","contextMenuPosition","x","y","loadCompanies","subscribeToSignalsWebsocketStatusCheck","subscribeOnSignalWebsocketConnected","subscribeOnVehicleSignalWebsocketConnected","signalsWebsocketStateSubscription","signalsWebsocketConnectionSubscription","vehicleSignalsWebsocketConnectionSubscription","signalsWebsocket","vehicleSignalsWebsocket","updateFilteredTrackings","onConnectCallback","log","createVehicleSignalsWebsocket","getTrackingList","removedFromTracking","track1","track2","indexToRemove","hasOperationLocation","fullDate","receivedTimestamp","lastMoment","dayOfYear","nowDay","getUserTitle","filterPredicate","getStringEntityForFilter","filterValue","searchInput","vehicleSignal","movimento","getDescription","lastUpdate","getLastUpdateTime","reduce","getProperty","console","contextMenuSelectedItem","clientX","clientY","contextMenu","menu","focusFirstItem","openMenu","VIEW_TRACKING_TEAM","onTrackingManyClick","onHistoricalTrackingManyClick","onOperationLocationManyClick","onRemoveManyClick","onOperationLocationClick","onRemoveItemClick","read","MapModule","UserEditComponent","USERS_MODEL_LABEL","USERS_TITLE_LABEL","USERS_GROUP_LABEL","passwordHide","userTypeKey","disableOtherPlacements","disableAppAccess","patrolTeamName","userFields","userTypeDescription","hide","subscribeToProfileReload","reloadProfilesSubscription","loadProfiles","replaceModelViewData","isAdminProfile","hasAppAccessPermission","isProfessionalProfile","permissions","PROFESSIONAL","ACCES_APP","hasAccessToAllPlacements","updateAppAccess","selectedProfile","getAppAccess","isSendingPasswordToUserAllowed","canDeleteUser","canEditUser","sendTeamInfoMessage","sendEmailWithPassword","listPlacements","unSelectAll","onOriginPlacementChanged","getAllProfiles","profiles","getProfiles","CREATE_EDIT_USER","SOME_PROFILE","onProfilesReload","newOriginPlacement","toggleSelection","onPasswordSendClick","onProfileChanged","FormFilterDialogComponent","formService","inMemoryFilterModel","updateFilterModel","forms","inspectionType","sourceFilter","targetFilter","InspectionModel","NOT_STARTED","CRITICAL_POINT","PatrolEditComponent","PATROL_MODEL_LABEL","PATROL_TITLE_LABEL","PATROL_GROUP_LABEL","disabledPlannerField","createOperationData","createdDate","stringDateToTimestamp","createdMoment","hasNonBasePoint","isInspectionsFilled","clearCopyData","savePredictedOption","backupModel","deletedPatrol","savePredictedPatrol","patrolRepetitionId","saveReferencePatrol","exportPatrol","endsWith","isPredicted","editJustThisPatrol","editFromThisPatrol","patrolRepetition","excludedDate","getStartOfDayUTC","excludedRepetitions","updatePatrolRepetition","oldPatrolRepetition","newPatrolRepetition","excluded","oldStartDate","unitPeriod","eachQuantity","updatePatrolRepetitionPromise","createPatrolRepetitionPromise","createPatrolRepetition","all","extraParams","getReferencePatrolById","getExtraParams","isPatrolDeletionAllowed","isHiddenButtonCreateEditPatrol","CREATE_EDIT_PATROL","isHiddenButtonDeletePatrol","DELETE_PATROL","onMessagesClick","filterByPlacement","filterByCompany","filterByService","setKmlRouteFile","OnChangeAutomaticRoute","onEditOnMapClick","onSavePointsToRegistrationClick","onImportPointsClick","onInsertPointClick","onKmlImportPointClick","onEditPointClick","onCopyPointClick","onDeletePointsClick","onMovePointUp","onMovePointDown","onDeletePointClick","onSaveToRegistrationClick","onPasteResultLatLong","ArchivedType","FilterModel","current","NON_ARCHIVED","QuestionCrudData","crudType","QuestionFormComponent","nodeType","nodeTypeDescription","evidenceRequirement","evidenceRequirementDescription","originalOrder","filteredNodeType","YESNO","TEXT","NUMBER","ACTIVEINACTIVE","VIOLATEDCOMPLETE","initializeForm","ADD","formQuizNode","createQuizNode","copyQuizNode","quizNode","EDIT","editQuestion","formModel","addQuestion","label","upsertQuestion","LocationModel","PointFilterModel","VerificationEditComponent","CANAL168","MANAGEMENT_REPORT","OTHER","standadFormatTime","verificationBandReleaseDescription","evaluationValues","originalPatrolTeamId","sentMoment","situationFoundMoment","dateSentEndVerification","abs","sendMoment","timeOutCanSend","canSend","requiredFields","isSent","exportVerification","viewPatrolTeamId","sendSentNotification","patrolTeamChanged","createTeamSentMarker","loadVerificationEvent","newManagerialMarker","createManagerialSentMarker","updateStatus","updatedVerification","mapModelToView","backupInitialView","verificationEvent","markerMessage","getTeamChannel","VERIFICATION_SENT_MESSAGE","WEB_APP","serverTimestamp","userName","channelName","uuid","notes","category","category168","subcategory168","startKm","endKm","startLatlong","endLatlong","address","street","local","product","situation","flow","stolenVolume","report","MANAGERIAL_MESSAGE","foundChannel","inMemoryChannelList","buildManagerialMessage","getChannelIdByReferenceId","isVerificationDeletionAllowed","isHiddenButtonCreateEditVerification","CREATE_EDIT_VERIFICATIONS","isHiddenButtonDeleteVerification","DELETE_VERIFICATIONS","isHiddenInformeGerencial","VIEW_INFORME_GERENCIAL_VERIFICATIONS","openConfirmSaveOpAndSendReportDialog","resp","newManagerialMessage","createManagementReportMarker","cancelLabel","enterCanSend","leaveCanSend","onSendClick","PointLocationPipe","LocationPipe","environment","production","development","hmg","allUsersCanUseApp","profileThresHold","profileClassToConsoleEnabled","authority_address","alerts_address","auth_address","events_address","markers_address","patrols_address","registrations_address","signals_address","tracking_address","web_address","websocket_address","websocket_http_address","CENTRAL_TITLE_LABEL","CENTRAL_GROUP_LABEL","TRACKING_MODEL_LABEL","ADMINISTRATION_GROUP_LABEL","COMPANY_MODEL_LABEL","COMPANY_TITLE_LABEL","COMPANY_GROUP_LABEL","PATROL_TEAM_MODEL_LABEL","PATROL_TEAM_TITLE_LABEL","PATROL_TEAM_GROUP_LABEL","PLACEMENT_MODEL_LABEL","PLACEMENT_TITLE_LABEL","PLACEMENT_GROUP_LABEL","PROFILES_MODEL_LABEL","PROFILES_TITLE_LABEL","PROFILES_GROUP_LABEL","VEHICLES_MODEL_LABEL","VEHICLES_TITLE_LABEL","VEHICLES_GROUP_LABEL","EVENT_MAIN_ACTIONS_MODEL_LABEL","EVENT_MAIN_ACTIONS_TITLE_LABEL","EVENT_MAIN_ACTIONS_GROUP_LABEL","FORM_MODEL_LABEL","FORM_TITLE_LABEL","FORM_GROUP_LABEL","OBSERVED_AREA_MODEL_LABEL","OBSERVED_AREA_TITLE_LABEL","OBSERVED_AREA_GROUP_LABEL","REGISTRATION_GROUP_LABEL","BANDS_GROUP_LABEL","GASDUCT_GROUP_LABEL","DC_GROUP_LABEL","KILOMETERMARK_GROUP_LABEL","DELIVERYPOINT_GROUP_LABEL","REFINARY_GROUP_LABEL","TERMINAL_GROUP_LABEL","STRETCH_GROUP_LABEL","OILDUCT_GROUP_LABEL","VALVE_GROUP_LABEL","SIMF_GROUP_LABEL","OPS_GROUP_LABEL","COMMUNICATION_CHANNEL_GROUP_LABEL","REPORT_SOURCE_GROUP_LABEL","CATEGORY_168_GROUP_LABEL","SUBCATEGORY_168_GROUP_LABEL","CITY_GROUP_LABEL","PRODUCT_GROUP_LABEL","STATE_GROUP_LABEL","INSPECTION_TYPE_GROUP_LABEL","HISTORIC_TITLE_LABEL","APP_TITLE","APP_VERSION","MessagePageModule","ObservedAreaListComponent","observedAreaService","statusDescription","typesDescription","OBSERVED_AREA","observedAreaModel","areaType","startedDate","EventListDialogComponent","eventsModel","eventFilterModel","startMoment","isAllSelected","onSelectClick","MarkerModel","inspectionName","VerificationFilterDialogComponent","patrolTeamService","layerService","dialogFilterModel","getLocalProfile","loadAnalysts","loadFilteredDataModel","ImportPointsDialogComponent","initialPageSize","pageLength","loadFilteredRawListFromRestApi","inspectionPoints","handleRestApiResult","checkImportedByOperation","creationDate","accessType","vulnerabilityView","reference","s1","s2","sortSelectedPoints","getPageData","_pageData","_orderData","ip","importedByOperation","openFilterDialog","onImportClick","MessagePageComponent","subscribeFillDataEvent","initializeComponent","componentType","RegistrationListComponent","ProfileService","ImportGeoKmlDialogComponent","singleDataService","dataType","uploadReplaceMode","fileSize","kmlFile","fileExt","validFilename","observations","importKml","errors","jsonData","first","restore","selectFile","ObservedAreaFilterComponent","inputFilterModel","responsibles","types","cities","bands","OperationEditComponent","filteredTeams","filteredCompanies","shiftDescription","serviceTypeDescription","inspectionStatusTypeDescription","pointSelection","denySavePointsToRegistration","editOnMap","electronicFencePoints","finishedPoints","subscribeOnLocationUpdate","pointDisplayedColumns","noAccessPointDisplayedColumns","alertFilterModel","removeFromMap","reloadCompaniesSubscription","reloadPatrolTeamsSubscription","tempId","generate","removeEdition","getOperationId","shift","clearKmlRoute","getEmptyPatrolTeam","buildPointsDataSource","initializeAnalystOrAuthor","copyKmlFiles","inspectionForms","extractKmlNameAndBuildRouteObject","updateOperationFromPatrolTeam","onCompaniesLoad","updateFilteredCompanies","updateCompanyForCopy","onCompaniesReload","loadPublishedForms","onPatrolTeamsLoad","updateFilteredTeams","updatePatrolTeamForCopy","onPatrolTeamsReload","validateRouteGeometry","sendEditionModeToMap","loadKMLFile","operationEdited","operationCreated","BASE","some","isInspectionFilled","copiedModel","updatedModel","getUpdatedOperation","update","pointsDataSource","updateSavePointsToRegistration","updateNoAccessInspection","buildAutoRoute","linesMsg","discardLabel","showDiscardButton","duplicatedList","points","wasCanceled","hasSaved","infoBand_OLD","infoBand_NEW","infoKM_OLD","infoKM_NEW","infoCity_OLD","infoCity_NEW","infoUF_OLD","infoUF_NEW","openConfirmDuplicatedPointDialog","savedInspectionPoint","saveDuplicatedPoints","createRecord","loadListFromRestApi","saveNewPoint","deleteSelectedPoints","insertPointDialogComponent","newPoint","importPointsKmlDialogComponent","resultGeoJson","getKmlRoute","stops","endpoint","routes","geoJson","buildKmlRoute","disableClose","ret","isAllSelectedPoints","openMap","openMessageComponent","OPERATION_MESSAGE","updatedInspections","modelInspections","viewInspections","initialViewInspections","initialView","updatedInspection","modelinspection","isp","updateInspection","viewInspection","initialViewInspection","form","form1","form2","canDelete","ON_THE_WAY","noAccessInspectionPoints","inspectionNoAccess","number","noAccessPointsDataSource","getCompanies","checkObjectInOptionData","getPatrolTeams","team","optionArray","listAnswerComponent","MarkerFilterModel","ChannelFilterModel","SingleDataModel","PatrolTeamListComponent","subscribeToSaveCompaniesData","subscribeToSaveUsersData","subscribeToSaveVehiclesData","PATROL_TEAM","userDataSubscription","teamName","vehiclePlate","userNames","coordinator","placementName","LoginModule","ChannelModel","DateUtils","test","containsOnlyNumbers","sec","min","hour","formatTime","stringDate","stringTime","isStart","dateSplit","month","timeSplit","tempStartDate","stringDateTime","endOf","NotificationDialogComponent","successMessage","errorMessage","FilteredListComponent","mapEvents","isLoading","hasListPopoutData","getListPopoutData","newFilterModel","hasLocation","CentralListComponent","alertClicked","locationClicked","operationMessagesClicked","operationClicked","acknowledgeClicked","dataSourceLoaded","loggedUserPermission","alertTypeDescription","simfAlertTypeDescription","sourceTypes","sourceApp","simfAlertTypes","audio","Audio","load","subscribeAndLoadAll","nameUser","permission_option","LIST_ALERTS","hasSourceTypePermission","loadFromServerBySearch","alert1","alert2","updateSimfInfo","filterAlertsToProfile","loadAlerts","cleanSelection","observedArea","observation","extra","getDuration","prioritiy","kmSimfToString","updateSimfAlert","durationToTimeString","priorities","vehicles","startScalePoint","endScalePoint","HIGH","ATTENTION_PATROL_CHECK","PANIC","filterNewAlert","checkAlertSound","play","existingAlertPos","link","showAlertDetails","showDetails","inMemoryDetailsAlert","sortedData","sortData","clickedAlert","onCreateEventClick","onAcknowledgeClick","LoginErrorComponent","logout","resetLogin","ProfileClassToConsole","prefix","threshold","getOwnPropertyNames","prototype","propName","descriptor","getOwnPropertyDescriptor","Function","windowsPerfomance","performance","fn","before","now","args","apply","after","defineProperty","EventValidationNoteDialogComponent","VehicleSignalModel","empresa","marca","motor","velocidade","gps","precisao","direcao","CtrlClickDirective","renderer","ctrlClickEvent","listen","ctrlKey","getSelection","removeAllRanges","EventMainActionsService","AuthorizationService","permissionsMap","entries","has","ALL_PROFILE","DELETE_USER","loggedUserType","LIST_PATROL_TEAM_ADMINISTRATION","LIST_USERS_ADMINISTRATION","LIST_VEHICLE_ADMINISTRATION","LIST_COMPANY_ADMINISTRATION","LIST_PLACEMENT_ADMINISTRATION","LIST_REGISTRATION_GROUP","ONLY_NOT_STARTED","ALL_VERIFICATIONS","ALL_PATROLS","isOperationEditingAllowed","CHANGE_EVENTS_FROM_ANY_SOURCE","SOME_SOURCE","CENTRAL_OPERATOR","FieldUtils","num","string","km_str","padLeadingZeros","coord","kmSimf","kmEdit","padEndZerosString","km1","km2","oldValue","newValue","clipboardData","getData","parseLatLong","$","cursorPosStart","prop","cursorPosEnd","PatrolTeamEditComponent","reloadVehiclesSubscription","coordinators","updateFormData","onVehiclesLoad","onVehiclesReload","clearCompanyDependentyFields","getVehicles","getUsers","professionals","CREATE_EDIT_PATROL_TEAM","professional1","professional2","professional3","professional1HasTeam","professional2HasTeam","professional3HasTeam","oldUsers","newUsers","oldUser","newUser","replaceUserData","userIndex","VerificationListComponent","_editedEvent","checkVerificationStartDate","getOperationStatus","exportXls","bandRelease","editedEvent","lastSync","verificationModel","LayerService","SingleDataEditComponent","dataInfo","getDataInfo","modelLabel","hasGeometry","hasNumber","opsNumber","EDIT_REGISTRATION_GROUP","updateName","EventMainActionDialogComponent","PatrolModel","SingleDataCacheService","metadata","hasDuct","hasOPS","pushValues","sortDucts","sortOPS","onLoadCallback","hasMeta","appendMetadata","loadMultipleListFromRestApi","updateValues","VehicleService","SimpleModel","PointFilterDialogComponent","bandSubscription","pipeStretchSubscription","PermissionOptions","PatrolRepetitionEditDialogComponent","editionOptions","justThisPatrolRadioButton","fromThisPatrolRadioButton","returnOption","cancel","ObservedAreaService","responsibleId","MultiselectAutocomplete","selectedData","displayFn","displayValue","_valueData","isArray","getDataControlObjectValue","_optionValue","dataControl","setValue","isUserInput","dataValue","_name","itemValue","valueDataChange","getDataControlPropertyValue","selectionChangedEvent","retValue","_data","focusInFunction","onOpenedEvent","valueData","LanguageUtils","k","addEnum","VehicleModel","ProfileEditComponent","profileService","eventFieldsDescription","userFieldsDescription","disableProfileList","disableAlertList","alertPermissionOptions","profilePermisionOptions","eventPermissionOptions","verificationPermisionOptions","patrolPermisionOptions","channelPermisionOptions","sourcePermissionOptions","alertTypeMap","enumToMap","categoryMap","profileMap","permissionOption","isProfileCreateEditAllowedForUser","updateAlertFields","setDualPermission","permision","verificationRadioChange","patrolRadioChange","profilesRadioChange","alertRadioChange","ACCES_WEB","ALL_SOURCE","removeAllOptions","EDIT_ALERT","LIST_EVENTS","LIST_VERIFICATIONS","LIST_PATROLS","DELETE_PATROL_TEAM","CREATE_EDIT_PLACEMENT","DELETE_PLACEMENT","CREATE_EDIT_COMPANY","DELETE_COMPANY","CREATE_EDIT_VEHICLE","DELETE_VEHICLE","LIST_MAIN_EVENT_ADMINISTRATION","CREATE_EDIT_MAIN_EVENT","DELETE_MAIN_EVENT","LIST_OBSERVED_AREA_ADMINISTRATION","CREATE_EDIT_OBSERVED_AREA","DELETE_OBSERVED_AREA","LIST_FORMS_ADMINISTRATION","CREATE_EDIT_FORM","DELETE_FORM","LIST_POINTS_ADMINISTRATION","DELETE_POINT","DELETE_REGISTRATION_GROUP","mapToObject","permission_one","permission_two","listToDelete","permisionOptions","changeMap","selectAlertFields","selectChannelFields","selectSourceFields","selectEventsFields","selectProfileFields","AuthInterceptor","request","addToken","handle","req","headers","clone","EventFilterModel","webpackContext","webpackContextResolve","__webpack_require__","code","webpackContextKeys","module","OperationFormAnswersService","fileId","ListComponent","viewContextMenu","subscribeToSaveData","subscribeToDeleteData","subscribeToListUpdateData","getDefaultSortColumn","getDefaultSortDirection","checkPermissions","op","saveData","fromList","removeFromList","new_entity","loadFromRestApi","postLoadProcess","selectionUpdate","removeAccentsFromString","normalize","errorDetails","selectedEntities","errorCount","successCount","removeFromListAndNotify","deletedRecord","colsValues","getExportColValue","parseDataToArray","INITIAL_LAYOUT","content","maximiseAllItems","hasHeaders","constrainDragToContainer","reorderEnabled","selectionEnabled","popoutWholeStack","blockedPopoutsThrowError","closePopoutsOnUnload","showPopoutIcon","showMaximiseIcon","showCloseIcon","dimensions","borderWidth","minItemHeight","minItemWidth","headerHeight","dragProxyWidth","dragProxyHeight","labels","maximise","minimise","AppComponent","router","msalGuardConfig","msalService","msalBroadcastService","registeredDrag","layout$","countClick","isUserLogin","_destroying$","initLanguageUtils","showSettings","inProgress$","None","initLogin","setIntervalToReloadToken","reloadToken","instance","getAllAccounts","getAccessTokenByMsal","account","accessTokenRequest","scopes","msalInstance","acquireTokenSilent","accessTokenResponse","accessToken","createUserSession","homeAccountId","storage","getConfiguration","cache","cacheLocation","secret","resetLayout","baseGoldenPanel","subscribeInconsistentData","createSession","existUser","showLoginError","interactionType","Popup","authRequest","loginPopup","setActiveAccount","loginRedirect","authenticationSubscription","inconsistentDataSubscription","notificationSubscription","websocketConnectSubscription","markersWebsocketSubscription","registrationUpdateWebsocketSubscription","resetChannelWebsocketSubscription","patrolUpdateWebsocketSubscription","verificationUpdateWebsocketSubscription","vehicleSignalsWebsocketSubscription","signalsWebsocketSubscription","registrationUpdateWebsocket","resetChannelWebsocket","patrolUpdateWebsocket","verificationUpdateWebsocket","complete","layout","setEventHub","init","addLanguageMap","adminMenu","mapButton","glRegisterDragMainMenu","glOpenContainerFromMainMenu","glResetLayout","auth","navigate","initialize","subscribeOnMarkerWebsocketConnected","subscribeOnMarkersWebsocket","subscribeToRegistrationUpdateWebsocket","subscribeToResetChannelWebsocket","subscribeToVerificationUpdateWebsocket","subscribeToPatrolUpdateWebsocket","subscribeToSignalsWebsocketStream","subscribeToVehicleSignalsWebsocketStream","idata$","i_data","createResetChannelWebsocket","unreadMessages","updateUserUnreadMessages","notifyNewMarkerReceived","createMarkersWebsocket","notifyWebsocketConnected","createPatrolUpdateWebsocket","operationUpdateEvent","createVerificationUpdateWebsocket","processReceivedSignal","signalInJson","updateTracking","logoutSSO","logoutRedirect","registerDragElements","serializable","getSerializableState","getLoggedProfileName","isHiddenButtonListAlert","isHiddenButtonTrackingTeam","isHiddenButtonListEvents","isHiddenButtonListVerification","isHiddenButtonListPatrols","isHiddenButtonListChannels","isHiddenButtonAdministration","isAdministrationGroupHidden","isHiddenButtonRegistration","isRegistrationGroupHidden","isHiddenButtonListPatrolTeam","isHiddenButtonListUsers","isHiddenButtonListProfiles","LIST_PROFILE_ADMINISTRATION","isHiddenButtonListVehicles","isHiddenButtonListCompany","isHiddenButtonListPlacement","isHiddenButtonMainEvents","isHiddenButtonObservedArea","isHiddenButtonForms","isHiddenButtonPoints","isHiddenButtonRegistrationGroup","hasUserProfile","createRegistrationsUpdateWebsocket","openAlertLogoutDialog","reloadValues","reloadObjects","openLoginAsDialogSubscription","newProfile","setLoginAsUser","setLocalProfile","reload","stateChanged","onBeforeUnload","FormFilterModel","UserModel","PatrolModule","ProfileModel","ChannelUsersService","environmentLoader","xmlhttp","XMLHttpRequest","method","responseText","send","ObservedAreaModel","PlacementEditComponent","placementService","NO_PROFILE_ID","API_VERSION_ENDPOINT","LAST_SIGNALS","LAST_OPERATION_SIGNALS","LAST_VEHICLE_SIGNALS","DEFAULT_PAGE_INDEX","DEFAULT_SORT","MARKERS_PAGE_SIZE","CHANNEL_PAGE_SIZE","MEMBERS_PAGE_SIZE","LARGE_PAGE_SIZE","SORT_NAME_ASC","SORT_PLATE_ASC","SORT_OPS_ASC","SORT_TIMESTAMP_DESC","SORT_TIMESTAMP_ASC","SORT_RECEIVED_SERVER_TIMESTAMP_DESC","FILTER_OPTION_ALL","MAX_FILE_SIZE","TEAM_NOT_FOUND","APP_SIGNAL_INVALID","ESP","MAX_TIME_OF_TRACE","Icons","ICON_URL_BASE","ICON_URL_BASE_VERIFICATION","ICON_URL_CRITICAL_POINT","ICON_URL_PROFESSIONAL","ICON_URL_PROFESSIONAL_OFFLINE","ICON_URL_PROFESSIONAL_PATROL","ICON_URL_PROFESSIONAL_PATROL_OFFLINE","ICON_URL_PROFESSIONAL_VERIFICATION","ICON_URL_PROFESSIONAL_VERIFICATION_OFFLINE","ICON_URL_VEHICLE","ICON_URL_VEHICLE_OFFLINE","ICON_URL_VEHICLE_PATROL","ICON_URL_VEHICLE_PATROL_OFFLINE","ICON_URL_VEHICLE_VERIFICATION","ICON_URL_VEHICLE_VERIFICATION_OFFLINE","ICON_URL_MARKER","MapInfo","BAND_COLOR","OILDUCT_COLOR","GASDUCT_COLOR","SIMF_COLOR","DUCT_WEIGHT","LAYERS_ICON_SIZE","AUTO_ROUTE_LINE_COLOR","AUTO_ROUTE_LINE_WEIGHT","DRAW_LINE_COLOR","DRAW_LINE_WEIGHT","OBSERVED_AREA_LINE_COLOR","OBSERVED_AREA_LINE_WEIGHT","OBSERVED_AREA_LINE_STYLE","TRACKING_ICON_SIZE","MARKER_ICON_SIZE","DEFAULT_LATITUDE","DEFAULT_LONGITUDE","DEFAULT_ZOOM","FIT_ZOOM","REAL_TIME_SIGNALS_REFRESH_INTERVAL","MAX_DISTANCE_KM","LOCAL_USER_KEY","LOGIN_AS_USER_KEY","POPOUT_DATA_KEY","PROFILE_USER_KEY","SPECIFICS_PLACEMENTS","LOST_SIGNAL_LIMIT","SIGNAL_ICON_UPDATE_INTERVAL","LAST_SIGNALS_TRACKING_LIMIT","SHIFT_DURATION","HttpError","MOUSE_ENTER_TIME","PAGE_READY_PREFIX","FILL_DATA_PREFIX","PAGE_MAXIMIZED_PREFIX","LOCATION_UPDATE_PREFIX","UPDATE_DATA_PREFIX","SAVE_DATA_PREFIX","LIST_UPDATE_PREFIX","DELETE_DATA_PREFIX","ASSOCIATED_EVENT_UPDATE_PREFIX","REGISTRATION_UPDATE_EVENT","PATROL_UPDATE_EVENT","VERIFICATION_UPDATE_EVENT","MAP_PAGE","MESSAGE_PAGE","TRACKING_PAGE","MAX_TAB_TITLE","LatLongPattern","pattern","LatLongMask","PointSourceValues","AccessArrangementValues","AccessTypeValues","BlockTypeValues","RoadConditionValues","NumberOfOutputsValues","TrafficVolumeValues","TrafficPossibilityValues","ResidencesValues","VideoMonitoringValues","EvaluationValues","AreaUnderControlValues","VulnerabilityViewValues","CategoryValues","AccessCriticalityValues","InspectionTypeValues","GeoModel","simple","Refinary","DeliveryPoint","Terminal","UserListComponent","patrolTeamMap","subscribeToSavePlacementsData","subscribeToDeletePlacementsData","loadProfilesFromServer","loadPatrolTeamsFromServer","onProfilesLoad","specificPlacementsIds","userToBeEdited","usersToDelete","questionMsg","reloadUsersAndDeleteUsers","userListToDelete","ids","u","loadUsersByIds","resultList","usersInTeams","getProfessionalProfileId","checkTeamListInPatrolsAndDeleteUsers","patrolTeamIdList","listActiveStatus","patrolList","hideOkButton","checkTeamListInVerificationsAndDeleteUsers","verificationList","cpf","mobile","mobilePhone","userProfile","getTeam","appAccess","CompanyEditComponent","companyService","VehicleEditComponent","vehicleService","UserLoginService","_user","user$","put","RegistrationService","isIE","navigator","userAgent","msalConfig","clientId","authority","redirectUri","origin","postLogoutRedirectUri","navigateToLoginRequestUrl","SessionStorage","storeAuthStateInCookie","system","loggerOptions","loggerCallback","logLevel","Verbose","piiLoggingEnabled","MSALInstanceFactory","MSALGuardConfigFactory","Redirect","componentTypes","AppModule","provide","useClass","useFactory","useValue","deps","preventDuplicates","enableHtml","level","DEBUG","timestampFormat","serverLogLevel","ERROR","bootstrap","LoginAsComponent","loginAs","PointListComponent","INSPECTION_POINT","pointUpdateSubscription","usersSubscription","importPointsXlsDialogComponent","PlacementService","LoadingListService","loadingSubject","loading$","showSpinner","spinnerCount","subscribeToLoading","loadingSubscription","loading","ObservedAreaFilterModel","ToViewPipe","KilometerMarkModel","stretchName","bandName","VerificationModel","ImportPointsKmlDialogComponent","importPointsKml","_layers","old_length","GlobalSpinnerComponent","mode","strokeWidth","TrackPointsDialogComponent","loadOperations","getTimestamp","getPropertyByPathDefault","deltaDistance","deltaTime","deltaDistanceKm","deltaTimestamp","updateExtraData","substring","endTimestamp","pushTitle","ops","PatrolTeamModel","phone","CentralFilterModel","getTodayStartDate","getTodayEndDate","webpackEmptyAsyncContext","AttachmentModel","GlobalErrorHandlerService","_injector","positionClass","timeOut","onLine","exceptionName","run","InvalidTokenApiService","errorResponse","EditComponent","isBusySaveConfirm","updatingModel","_saveFinished","subscribeToDataEvents","hasEditPopoutData","getEditPopoutData","openModel","fillDataCallback","onDeleteData","onModelUpdate","restoreInitialView","glContainerClose","constructor","getObjectName","isTimestamp","originalModel","differences","changes","pathChecked","path","kind","getDiffStr","rhs","checkUpdate","replaceRunTimeData","diffMsg","getModelChangesMsg","dlg","cancelTooltip","okTooltip","setModel","setEditPopoutData","modelId","loadData","clearPreviousData","createData","updateViewFromPopout","restoreFiles","changed","lhs","postEntityDeleteProcess","openAlertDialog","afterLoadData","currentUser","isRequiredFieldFilled","getRequiredFieldNames","n","timeOutCanSave","canSave","getRequiredFields","o1","o2","showSaveConfirmDialog","openConfirmDialog","openSimpleConfirmDialog","fieldName","attachmentData","fr","readAsArrayBuffer","URL","createObjectURL","ZOOM_LEVEL_TO_SHOW_KILOMETER_MARKS","CLUSTERING_ZOOM_LEVEL","BaseMapComponent","lightBaseLayerName","streetBaseLayerName","hybridBaseLayerName","CONTEXTMENU","contextmenu","contextmenuItems","onCreateEvent","onCreateVerification","startWithStreet","markerLayers","vehicleTrackingLayer","createClusterGroup","userTrackingLayer","geoLayerParam","trackingMarker","include","drawLayer","_filterMap","layersControl","generateGeoLayers","baseLayers","generateBaseLayers","startBaseLayerName","zoom","center","drawOptions","position","draw","icon","repeatMode","shapeOptions","circle","circlemarker","rectangle","featureGroup","selectedPathOptions","drawLocal","toolbar","finish","undo","buttons","handlers","tooltip","cont","save","clearAll","editDisabled","removeDisabled","subtext","baseStreetGoogle","maxZoom","subdomains","baseHybridGoogle","mapboxAccessToken","mapboxAttribution","mapboxUrlTemplate","lightStreet","attribution","tileSize","zoomOffset","baseStreet","baseHybrid","baseLayer","initializeBandLayer","initializeDeliveryPointLayer","initializeGasductLayer","initializeOilductLayer","initializeSimfLayer","initializeKmMarkersLayer","initializeRefinaryLayer","initializeTerminalLayer","initializeValveLayer","initializeDcsHistoryLayer","observedAreas","fixLayerType","showOnMap","initializeGeoLayer","getBands","getDeliveryPoints","deliveryPoints","getGasDucts","gasDucts","getOilDucts","oilDucts","getSimf","simfs","getKilometerMarks","kilometerMarks","allKmMarks","getRefinary","refinaries","getTerminal","terminals","getValve","getDCsHistory","fixDcName","filter_icon","VIEW_MAP_DC_HISTORY_ID","VIEW_MAP_OBSERVED_AREA_ID","VIEW_MAP_SIMF","VIEW_MAP_BAND","VIEW_MAP_OILDUCT","VIEW_MAP_GASDUCT","VIEW_MAP_KILOMETER_MARK","VIEW_MAP_VALVE","VIEW_MAP_TERMINAL","VIEW_MAP_REFINARY","VIEW_MAP_DELIVERY_POINT","createGeoLayer","showCoverageOnHover","disableClusteringAtZoom","iconCreateFunction","cluster","childCount","getChildCount","html","className","transformData","pointToLayer","maxWidth","polygonsWithCenters","onEachFeature","areaCenter","getCenter","centerMarker","addTo","setGeoLayerOpacity","addToMap","removeLayer","cacheItem","searchTrackingMarker","newLatLng","setLatLng","setPopupContent","setTooltipContent","createTrackingMarker","fitTrackingMarker","openPopup","fitTrackingMarkers","eachLayer","isTrackingMarker","clearLayers","autoPan","addressResultsGroup","geosearch","arcgisOnlineProvider","searchControl","placeholder","allowMultipleResults","useMapBounds","countries","maxResults","results","latlng","getAddressMarkerPopupContent","LongLabel","getAddressMarkerTooltipContent","MeasureControl","TITLE","d","measureControl","addMeasureControl","addSearchAddressControl","getZoom","checkKmMarksZoomLevel","drawControl","getLayerId","geoModel","hasStates","checkFilterByStates","hasBand","checkFilterByBand","hasStatus","checkObservedAreaFilterByStatus","hasResponsible","checkObservedAreaFilterByResponsible","isValidObservedArea","checkObservedAreaFilterByAreaId","hasYear","checkDcHistoryFilterByYear","myStates","filterMap","isBandValid","myBandId","bandId","myBandName","myStatus","myResponsible","isValidArea","myAreaId","myYear","filterKmMarksByZoom","updateLayerOnMap","fitFilteredLayer","showAll","group","setView","geoBounds","popup","relatedTarget","onMapZoomEnd","onMapMoveEnd","onMapReady","VerificationModule","EntityCacheService","companies","allProfiles","publishedForms","usersReload","vehiclesReload","companiesReload","patrolTeamsReload","profilesReload","placementsReload","formsReload","userTypes","profileIds","warn","published","loadedProfiles","assign","PLACEMENT","COMPANY","FORM","VerificationService","fillOperationType","pageSizeStr","pageIndexStr","numberOfCalls","trunc","slicedOperationIds","UploadComponent","button_text","file_icon","file_label","file_placeholder","onFileSelected","viewFileSelected","files","uploadFileInput","PatrolRepetitionModel","CompanyService","AlertsService","defaultFilter","observable","processAlertLevels","newList","attributeName","listOfObjects","attributeValues","kmStringToSimf","specifiedFilter","extractAttributeList","PatrolTeamService","PatrolService","postAsFormData","post","referencePatrolIds","endDatePlusWeek","patrolRepetitions","ConfirmationDialogComponent","LayerFilterModel","PatrolFilterDialogComponent","patrols","GeneralModule","ChannelModule","SingleAutocomplete","_extraData","extraData","controlColor","someInput","nvalue","sval","setErrors","openPanel","onSearchChange","onSelectionEvent","ProfileListComponent","admProfile","ImportPointsXlsDialogComponent","xlsFile","imported","importXls","OperationFilterComponent","BandModel","ductList","RouteGeographicalService","getRouteStyle","getPointsMarker","baseIcon","cleanProperties","styleUrl","point_icon_size","cpClassName","activityText","getTagDateOperationForPointsPopupContent","noAccess","hasFilledForms","labelDateOperation","dateOperation","getPointsPopupContent","getPointsTooltipContent","setInternalIds","geoPoint","geomLayers","geomId","geomLayer","fileReader","geoRouteData","getRoutePopupContent","iconName","kmlUrl","VehicleListComponent","ArchiveListComponent","denyArchiving","denyRemoveMany","checkRemoveRequirements","archiveUpdate","updateArchiveRequirement","updateRemoveRequirement","updated","entityArchiveUpdate","isOperationCreatingAllowed","checkArchivalRequirements","someArchived","someNotArchived","FormListComponent","userPlacementId","getUserPlacementId","formUpdateSubscription","selectedForms","disabled","selectedForm","checkManyUserPlacements","FormEditComponent","quizNodeType","questionCrudType","getChildren","node","hasNestedChild","treeControl","questions","subscribeOnQuizDataChanges","quizDataSubscription","onQuizDataChange","quizData","renderChanges","handleQuestionCrud","removeQuestion","questionCrudData","openQuestionDialog","successed","isPublished","onPublishClick","FormModel","AlertType","AlertTypeDescription","SimfAlertTypeDescription","AlertPriorityDescription","AlertPriority","AlertPriorityValue","EventSituationDescription","ResultOccurrenceDescription","SourceTypeDescription","SourceType","EventValidation","EventValidationDescription","ShiftDescription","ServiceTypeDescription","UserType","UserTypeDescription","OperationStatus","OperationStatusDescription","PointStatus","PointStatusDescription","VerificationBandReleaseDescription","EventStatus","EventStatusDescription","OperationType","OperationTypeDescription","MarkerType","MarkerTypeDescription","PointType","InspectionBooleanDescription","InspectionStatusType","InspectionStatusTypeDescription","QuestionType","EvidenceRequirement","EvidenceRequirementDescription","NodeType","NodeTypeDescription","CrudType","ObservedAreaType","ObservedAreaTypeDescription","ObservedAreaStatus","ObservedAreaStatusDescription","MapEvents","PredictedDialogRuleOption","ChannelType","ChannelTypeDescription","Permission","PermisionRuleOption","EventFields","EventFieldsDescription","UserFields","UserFieldsDescription","FilterByAssociatedEvent","RegistrationType","AttachmentNumber","EvidenceNumber","ListUtils","list","array","self","UserService","BooleanBRPipe","PlacementListComponent","RouteModel","CommonModel","appVersion","version","SystemCheckDialogComponent","registrationService","signalsService","webSocketSignalsService","reactiveService","alertResponse","authResponse","eventResponse","markerResponse","patrolResponse","reactiveRouteDeviationResponse","reactiveSIMFResponse","registrationResponse","signalResponse","trackingResponse","webResponse","websocketResponse","getServiceVersion","getRouteDeviationVersion","getSIMFVersion","SingleDataService","singleData","propsObject","propsMap","FormData","TrackingModel","getBaseTitle","mainTitle","CentralModule","ResultsModel","PointService","objectModel","ChannelService","channelUpdated","unreadMessagesByChannel","enrichChannelList","userUnreadMessages","userid","resetUnreadMessagesByUser","isAnalystCCPDProfile","enrichChannel","inMemoryChannel","updateChannel","setUnreadMessagesdByChannel","notifyChannelUpdated","referenceId","old_channel","PatrolRepetitionFilterModel","CompanyListComponent","website","cnpj","EntityService","filteredLoadFromRestApi","reportProgress","ErrorEvent","MultiselectObjectAutocompleteComponent","displayData","PatrolListComponent","booleanPipe","subscribeLoadRecordsFromServer","patrolStartDate","excludePredictedPatrol","dialogRepetitionRef","deletePatrolRepetition","createdPatrolRepetition","getServiceTypeDescription","patrolInspectionType","predictedPatrols","updatePredictedPatrols","predictedPatrolsByReferenceIdMap","patrolsWithSameReferenceId","enable","loadPatrolRepetitionFromRestApi","patrolRepetitionsToUpdate","updatePatrolRepetitions","onPatrolRepetitionClick","SingleDataListComponent","groupLabel","titleLabel","importGeoKmlDialogComponent","single","VerificationFilterModel","PatrolFilterModel","MessageComponentType","MessageComponentData","FilterSelectionOptions","MessageComponent","filterSelectionOptions","dateUtils","parentTabUpdate","webUserColors","webColorIndex","sendingMessage","webColorsMax","webColors","matList","matListElement","subscribeOnMessageListChange","messageListChangeSubscription","onMarkerWebsocketConnectedSubscription","noMoreMessage","isNearBottom","showScrollDownButton","currentPage","messageText","fetchedPages","allMarkers","filteredMarkers","filterSelection","VERIFICATION","NO_OPERATION","matListItems","last","lastListItem","scrollToPosition","scrollHeight","onMarkerWebsocketConnected","newMarker","insertMarker","prepareMarkersResources","lastMarker","sortMessages","filterMarkers","marker1","marker2","allOperationMarkers","mediaFilesProcessed","mediaFiles","reverse","endScrollMode","filteredMarkersLength","newFilteredMarkersLength","fetchedPage","getSpinnerCount","paginateMarkers","mediaFileLength","fileUrl","bypassSecurityTrustUrl","keyCode","shiftKey","sendMessage","isProfessional","isTeamChannel","checkFilterMatchMarker","filterMatch","filterOptions","scroll","top","left","behavior","isUserNearBottom","scrollTop","offsetHeight","scrolled","DateChooserComponent","_required","dateChangedEvent","invalid","_disabled","input","onKeyUpEvent","onKeyPressEvent","onDateChangeEvent","exportAs","required","TestDataGeneratorService","getSamplePatrolTeam","getSampleUser","patrolStart","getSampleInspection","locationIndex","getSampleLocationModel","getSampleCompany","user1","user2","getSampleVehicle","signalType","posNow","pos1minAgo","pos2minAgo","pos3minAgo","pos4minAgo","callNumber","pos5","pos4","pos3","pos2","pos1","getSampleVerification","verificationIndex","PENDING","actionIndex","occurrenceKM","occurrenceLatLong","zipCode","getSampleResult","getSampleAction","event2","event3","event4","event5","event6","event7","InspectionPointModel","OperationService","objectName","PAUSED","FilterComponent","filtered","archivedFilterType","handleFilterDates","reloadAnalystUsersSubscription","viewFilterStartDate","viewFilterEndDate","analystUserTypes","viewFilterStartTime","viewFilterEndTime","ValveModel","CentralComponent","appAlertsTitle","simfAlertsTitle","verificationStretch","closeWindows","alertsConnectionState","appAlertSelection","appAlertComponent","simfAlertSelection","simfAlertComponent","subscribeToWebsocket","appDisplayedColumns","simfDisplayedColumns","appFilterModel","simfFilterModel","alertsWebsocket","alertsWebsocketSubscription","websocketStateSubscription","createAlertsWebsocket","subscribeOnAlertWebsocket","subscribeOnWebsocketState","subscribeToWebsocketConnected","onNewAlertReceived","updatedAlertId","specificPlacement","handleNewAlert","listComponent","updateExistingAlert","insertNewAlert","selectEventToLink","linkAlertsToEvent","getSelectedAlerts","foundAlertEvent","updateDetails","alertItem","getAlertFromList","selectedAlert","hasOperation","acknowledgmentAuthor","acknowledgmentDate","detailsChanged","detailsAlert","getVerificationStretch","changeDetails","onSaveDetailsClick","acknowledgeAlerts","updateSearchFilter","hasAccessSimf","onCreateEventManyClick","onAcknowledgeManyClick","onDetailsClick","MarkersService","newMarkerReceived","markerWebsocketConnected","connected","createHttpParams","operationIds","opId","inspectionId","INFO_MESSAGE","createTeamInfoMarker","WebSocketSignalsService","OperationFilterModel","OperationListComponent","subscribeToOperationUpdateEvent","operationWebsocketConnectedSubscription","operationUpdateWebsocket","subscribeOnOperationWebsocketConnect","checkFilterPatrolTeam","checkFilterPlacement","canHasHistoricalTracking","opDateName","opDate","filterStartDate","filterEndDate","getLastOperationSignals","lastSignalsJSON","lastSignals","updatedCount","EventFilterComponent","EventModel","SignalsService","EntityModel","component","canActivate","redirectTo","isIframe","opener","AppRoutingModule","useHash","initialNavigation","TrackingService","startedOperations","trackingMap","loadingLastSignals","loadingLastVehicleSignals","loadAll","signalReceived","updateTrackings","notify","updateTrackingInfo","notifyMap","notifyTrackingList","updateInfo","isNewerSignal","vehicleSignalReceived","enriched","companyId","placementId","updateVehicleSignal","invalidCount","invalidCode","loadAtMap","trackLimit","getLastSignals","processLastSignal","reportTrackingList","notifyMapList","getLastVehicleSignals","getOperation","getUserById","loaded","signalMoment","currentDay","iconUrlValue","isLostSignal","isTheSignalLost","buildIconAccordingToSignal","httpParams","QuestionModel","OPTIONAL","EventMainActionsListComponent","eventMainActionsService","EVENT_MAIN_ACTION","eventMainAction","Websocket","socketUrl","streamUrl","WEBSOCKET_STUCK_CONN_COUNT","WEBSOCKET_CONN_CHECK_RATE","countWebsocketClosedCheck","stompConfig","passcode","heartbeat_in","heartbeat_out","reconnect_delay","stompService","messages","subscribeOnWebsocketTest","setCheckStateInterval","publish","deactivate","websocketTestSubscription","stateCheckInterval","activate","connected$","checkWebsocketState","client","connect","WEBSOCKET_TOPIC","watch","internalCreateWebsocket","topic","WEBSOCKET_URL","MatPaginatorIntlBr","itemsPerPageLabel","nextPageLabel","previousPageLabel","lastPageLabel","firstPageLabel","getRangeLabel","page","max","startIndex","endIndex","ObservedAreaEditComponent","observedAreasService","areaTypeDescriptions","volumeCheckDate","isLatLongValid","isStretchStartLatLongValid","isStretchEndLatLongValid","PlacementModel","Autocomplete","scrollEvent","panelOpen","updatePosition","newData","valueChanges","disable","addEventListener","nfilter","displayName","optionValue","EventMainActionsEditComponent","TrackingModule","FormService","quizDataSubject","forModel","childNode","quizNodes","onlyQuestions","targetNode","foundNode","findParentNode","ANSWER","sourceQuestion","parentNode","newQuestion","checkSubQuestions","notifyQuizDataChange","originalQuestion","editedQuestion","question","deletedQuestion","env","bootstrapModule","FileKmlModel","TypeAlerts","CentralFilterDialogComponent","alertTypeDescriptionFiltered","filterAlertTypeByProfile","operationTypes","serviceTypes","typeAlerts","isSomeFieldsOption","isAllFieldsOption","isAllowedField","AuthenticationService","cookieService","authenticatedSubject","inconsistentData","deleteAll","logoutErase","navigated","injectUpdate","updateUserToken","keyPermission","setLoggedProfileUser","onUserProfileLoad","unique_name","getLoginAsUser","loadUserData","loadAllProfiles"],"mappings":"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;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA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A;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;UAyJaqjG,a;;;;;cAAAA;;;;2BAAAA,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AAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;AAYA,UAAYs/G,SAAZ;;AAAA,i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","file":"main-es5.js","sourcesContent":["import LanguageUtils from '../service/util/language-utils';\r\nimport {EntityModel} from './entity.model';\r\nimport { PlacementModel } from './placement.model';\r\n\r\nexport class CompanyModel extends EntityModel {\r\n cnpj: string;\r\n name: string;\r\n address: string;\r\n phone: string;\r\n website: string;\r\n email: string;\r\n observations: string;\r\n uf: string;\r\n placement: PlacementModel;\r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['address'] = 'Endereço';\r\n LanguageUtils.languageMap['phone'] = 'Telefone';\r\n LanguageUtils.languageMap['email'] = 'E-mail';\r\n LanguageUtils.languageMap['website'] = 'Website';\r\n LanguageUtils.languageMap['cnpj'] = 'CNPJ';\r\n LanguageUtils.languageMap['placement'] = 'Lotação';\r\n LanguageUtils.languageMap['uf'] = 'UF';\r\n }\r\n}\r\n","
\r\n\r\n
\r\n Evento: {{view['identifier']}}\r\n
\r\n {{ getEventStatus() }}\r\n ({{ resultOccurrenceDescription[view['result']['occurrence']] }})\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n Hora\r\n \r\n query_builder\r\n Campo Obrigatório\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n Quem?\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n Relacionado ao Evento\r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n CNCL\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n Horário de Suspeita\r\n \r\n query_builder\r\n \r\n\r\n \r\n \r\n\r\n \r\n Horário de Parada\r\n \r\n query_builder\r\n \r\n\r\n \r\n \r\n\r\n \r\n Hora de Início\r\n \r\n query_builder\r\n \r\n\r\n \r\n \r\n\r\n \r\n Hora de Fim\r\n \r\n query_builder\r\n \r\n\r\n \r\n \r\n\r\n \r\n Vazão - m³/h\r\n \r\n \r\n\r\n \r\n Volume Subtraído (m³)\r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n Canal 168\r\n
\r\n
\r\n\r\n \r\n ID Chamada 168\r\n \r\n Campo Obrigatório se Status Concluído e Canal 168\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n Dados de Validação\r\n
\r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n Notas de Validação\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Data/Hora {{element?.date | date:'dd/MM/yyyy HH:mm'}} Analista {{element?.author}} Nota {{element?.note}}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n KM\r\n \r\n Formato inválido para o KM.\r\n \r\n \r\n KM (Lat, Long)\r\n \r\n Formato inválido para o KM (Lat, Long)).\r\n \r\n \r\n Início Trecho (KM)\r\n \r\n Formato inválido para o Início do trecho (KM).\r\n \r\n \r\n Fim Trecho (KM)\r\n \r\n Formato inválido para o Fim do trecho (KM).\r\n \r\n \r\n Início Trecho (Lat, Long)\r\n \r\n Formato inválido para o Início do trecho (Lat, Long).\r\n \r\n \r\n Fim Trecho (Lat, Long)\r\n \r\n Formato inválido para o Fim do trecho (Lat, Long).\r\n \r\n \r\n \r\n \r\n CEP\r\n \r\n \r\n \r\n Logradouro\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n KM Ocorrência\r\n \r\n Formato inválido para o KM da Ocorrência.\r\n \r\n \r\n \r\n Lat, Long Ocorrência\r\n \r\n Formato inválido para o Lat, Long da Ocorrência.\r\n \r\n
\r\n
\r\n \r\n \r\n Notas\r\n \r\n \r\n
\r\n
\r\n Ações Principais (de acordo com a Origem)\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
Descrição {{ item.action }} Executada \r\n \r\n \r\n Comentários do Analista {{ item.comment }} \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n","import { Component, Inject, OnInit, OnDestroy } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { EventModel } from 'src/app/model/event.model';\r\nimport { EventService } from 'src/app/service/model/event.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { saveAs } from 'file-saver/dist/FileSaver';\r\nimport {\r\n AlertPriorityDescription,\r\n EventSituationDescription,\r\n ResultOccurrenceDescription,\r\n EventStatusDescription,\r\n EventValidationDescription,\r\n EventStatus,\r\n EventFields,\r\n PermisionRuleOption,\r\n Permission,\r\n UserType,\r\n EventValidation,\r\n SourceType,\r\n SimfAlertTypeDescription\r\n} from '../../../model/enums.enum';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { EventMainActionDialogComponent } from '../event-action-dialog/event-main-action-dialog.component';\r\nimport { EventValidationNoteDialogComponent } from '../event-validation-note-dialog/event-validation-note-dialog.component';\r\nimport { LatLongPattern,\r\n LatLongMask,\r\n FILL_DATA_PREFIX,\r\n SAVE_DATA_PREFIX,\r\n MAX_FILE_SIZE,\r\n } from '../../../common/constants';\r\nimport { forkJoin, Observable, Subject, Subscription } from 'rxjs';\r\nimport { ResultsModel } from 'src/app/model/results.model';\r\n\r\nimport * as moment from 'moment';\r\n\r\nimport { UserModel } from 'src/app/model/user.model';\r\nimport { EventMainActionsService } from 'src/app/service/model/event.main.actions.service';\r\nimport { EventMainActionModel } from '../../../model/event.main.action.model';\r\nimport { AuthorizationService } from '../../../service/authorization/authorization.service';\r\nimport { ConfirmationDialogComponent } from 'src/app/general/confirmation-dialog/confirmation-dialog.component';\r\nimport { ValidationNoteModel } from 'src/app/model/validation.note.model';\r\nimport { AlertModel } from 'src/app/model/alert.model';\r\nimport { AlertsService } from '../../../service/model/alerts.service';\r\nimport FieldUtils from 'src/app/service/util/field-utils';\r\nimport { ViewChild } from '@angular/core';\r\nimport { VerificationListComponent } from '../../verification/verification-list/verification-list.component';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { OperationType, SourceTypeDescription, AttachmentNumber } from '../../../model/enums.enum';\r\nimport { VerificationModel } from '../../../model/verification.model';\r\nimport { VerificationService } from '../../../service/model/verification.service';\r\nimport { first } from 'rxjs/operators';\r\nimport { ASSOCIATED_EVENT_UPDATE_PREFIX } from '../../../common/constants';\r\nimport { EventListComponent } from '../event-list/event-list.component';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport ListUtils from '../../../service/util/list-utils';\r\nimport { EditComponent } from '../../edit-component';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { AttachmentModel } from '../../../model/attachment.model';\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\nimport { SingleAutocomplete } from 'src/app/general/single-autocomplete/single-autocomplete.component';\r\nimport { Moment } from 'moment-timezone';\r\n\r\n@ProfileClassToConsole()\r\n@Component({\r\n selector: 'app-event-edit',\r\n templateUrl: './event-edit.component.html',\r\n styleUrls: ['../../../app.component.scss', './event-edit.component.scss']\r\n})\r\nexport class EventEditComponent extends EditComponent implements OnInit, OnDestroy {\r\n\r\n /** ENUMS */\r\n eventStatusDescription = EventStatusDescription;\r\n eventStatus = EventStatus;\r\n alertPriorityDescription = AlertPriorityDescription;\r\n eventSituationDescription = EventSituationDescription;\r\n resultOccurrenceDescription = ResultOccurrenceDescription;\r\n eventValidationDescription = EventValidationDescription;\r\n permisionRuleOption = PermisionRuleOption;\r\n attachmentNumber = AttachmentNumber\r\n\r\n latLongPattern = LatLongPattern;\r\n latLongMask = LatLongMask;\r\n\r\n /** The list of columns to display on the validation note grid */\r\n validationNoteDisplayedColumns: string[];\r\n\r\n /** The list of columns to display on the action grid */\r\n actionDisplayedColumns: string[];\r\n\r\n /** The data source for validation note table */\r\n validationNoteDataSource: MatTableDataSource;\r\n\r\n /** The data source for action table */\r\n actionsDataSource: MatTableDataSource;\r\n\r\n selectedAlerts: AlertModel[];\r\n\r\n /** The structure to control validation note grid selection */\r\n validationNoteSelection = new SelectionModel(true, []);\r\n\r\n /* Identificador do evento que é passado para a lista de verificações */\r\n identifierEvent:string = null;\r\n\r\n /** Os usuários carregados do serviço do ccpd-registrations */\r\n validationUsers: UserModel[];\r\n analystUsers: UserModel[];\r\n operatorUsers: UserModel[];\r\n coturUsers: UserModel[];\r\n\r\n /* Lista de verificações */\r\n @ViewChild('verificationList', { static: true }) verificationListComponent: VerificationListComponent;\r\n\r\n /* Lista de eventos */\r\n @ViewChild('eventList', { static: true }) eventListComponent: EventListComponent;\r\n\r\n /* seleccão simples */\r\n @ViewChild('selector', { static: false }) selector: SingleAutocomplete;\r\n\r\n editedEventSubject: Subject = new Subject();\r\n editedEventObservable = this.editedEventSubject.asObservable();\r\n eventFields = EventFields;\r\n\r\n saveFinishedSubscription: Subscription;\r\n private reloadUsersSubscription: Subscription;\r\n\r\n isHiddenButtonCreateEditEvent: boolean; \r\n isHiddenButtonDeleteEvent: boolean; \r\n isHiddenButtonEditForUser: boolean;\r\n isHiddenButtonDeleteValidationNotes: boolean;\r\n isHiddenButtonArchiveForUser: boolean;\r\n\r\n canEditCcpdAnalyst: boolean; \r\n canEditValidationAnalyst: boolean;\r\n\r\n // arquivos axexo\r\n attachmentFile1 : File;\r\n attachmentFile2 : File;\r\n attachmentFile3 : File;\r\n attachmentFile4 : File;\r\n attachmentFile5 : File;\r\n\r\n //arquivos backup, em caso de eliminar um ou mais arquivo e desfazer as modificações\r\n back_attachmentFile1 : File;\r\n back_attachmentFile2 : File;\r\n back_attachmentFile3 : File;\r\n back_attachmentFile4 : File;\r\n back_attachmentFile5 : File;\r\n\r\n seeFile : boolean = true;\r\n showCNCLGroup: boolean = false;\r\n stringCNCL = \"CNCL\";\r\n\r\n constructor(logger: NGXLogger,\r\n public eventService: EventService,\r\n storageService: StorageService,\r\n private eventMainActionService: EventMainActionsService,\r\n protected dialog: MatDialog,\r\n toastr: ToastrService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n public entityCacheService: EntityCacheService,\r\n private alertsService: AlertsService,\r\n private verificationService: VerificationService,\r\n public authorizationService: AuthorizationService,\r\n private sanitizer: DomSanitizer,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, eventService, dialog, environment.EVENT_MODEL_LABEL, environment.EVENT_TITLE_LABEL, storageService,\r\n 'events-edit', environment.EVENT_GROUP_LABEL, toastr, authorizationService, goldenLayout, container);\r\n }\r\n\r\n ngOnInit(){\r\n this.initializeFields(); // Precisa vir antes da super.ngOnInit\r\n super.ngOnInit(); \r\n this.actionDisplayedColumns = ['action', 'done', 'comment', 'edit'];\r\n this.validationNoteDisplayedColumns = ['select', 'date', 'author','note'];\r\n this.isOperationArchiveButtonHiddenForUser();\r\n\r\n this.subscribeOnSaveIsFinished()\r\n this.subscribeOnAssociatedEventUpdate();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.saveFinishedSubscription?.unsubscribe(); \r\n this.reloadUsersSubscription?.unsubscribe();\r\n this.glUnSubscribeEvent(ASSOCIATED_EVENT_UPDATE_PREFIX + 'events-edit');\r\n }\r\n\r\n subscribeOnSaveIsFinished(){\r\n this.saveFinishedSubscription = this.saveFinished$.subscribe(() => {\r\n if(this.selectedAlerts) {\r\n\r\n const observables: Observable[] = [];\r\n\r\n this.selectedAlerts.forEach((alert:AlertModel) => {\r\n alert.eventIdentifier = this.model['identifier'];\r\n observables.push(this.alertsService.editRecord(alert));\r\n });\r\n\r\n forkJoin(observables).pipe(first()).subscribe( (alerts: AlertModel[]) => {\r\n this.toastr.success('Alerta(s) vinculado(s) ao evento com sucesso.');\r\n }, error => {\r\n this.logger.error(error);\r\n this.toastr.error('Ocorreu uma falha ao vincular o(s) alerta(s) ao evento ' + this.model['identifier']);\r\n },\r\n () => {\r\n this.selectedAlerts = null;\r\n });\r\n\r\n this.glEmitEvent(FILL_DATA_PREFIX + 'central', {selectedAlerts: this.selectedAlerts});\r\n }\r\n })\r\n }\r\n\r\n private subscribeOnAssociatedEventUpdate(){\r\n this.glSubscribeEvent(ASSOCIATED_EVENT_UPDATE_PREFIX + 'events-edit', (e) => {\r\n let event = e as EventModel;\r\n if (event.id == this.id) {\r\n this.logger.debug(\"EventEditComponent-OnAssociatedEventUpdate\");\r\n this.view['associatedEventId'] = event.associatedEventId;\r\n this.model['associatedEventId'] = event.associatedEventId;\r\n this.view['associatedIdentifier'] = event.associatedIdentifier;\r\n this.model['associatedIdentifier'] = event.associatedIdentifier;\r\n this.updateInitialView('associatedEventId');\r\n this.updateInitialView('associatedIdentifier');\r\n }\r\n });\r\n }\r\n\r\n initializeFields(){\r\n this.view = {};\r\n\r\n // Inicializando campos para evitar erros no HTML\r\n this.view['result'] = new ResultsModel();\r\n this.view['time'] = '';\r\n this.view['suspiciousTime'] = '';\r\n this.view['stopTime'] = '';\r\n this.view['startTime'] = '';\r\n\r\n let date = moment();\r\n this.view['date'] = date.format('DD/MM/yyyy');\r\n this.view['time'] = date.format('HH:mm');\r\n\r\n this.view['endDate'] = '';\r\n this.view['startDate'] = '';\r\n this.view['suspiciousDate'] = '';\r\n this.view['stopDate'] = '';\r\n this.view['endTime'] = '';\r\n\r\n this.view['status'] = EventStatus.IN_TREATMENT;\r\n\r\n this.view['identifier'] = \"[NOVO]\";\r\n this.identifierEvent = this.view['identifier'];\r\n\r\n this.view['validationNotes'] = [];\r\n\r\n this.buildValidationNoteDataSource();\r\n }\r\n\r\n loadFormOptionsData() {\r\n this.logger.debug('EventEditComponent.loadFormOptionsData()');\r\n\r\n const metadatas: string[] = [\r\n \"Product\",\r\n \"State\",\r\n \"Band\",\r\n \"Duct\",\r\n \"Valve\",\r\n \"PipeStretch\",\r\n \"CommunicationChannel\",\r\n \"ReportSource\",\r\n \"Category168\",\r\n \"Subcategory168\",\r\n \"City\"];\r\n\r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n\r\n let _this = this; // Necessário por causa do contexto das callacks\r\n const onUsersLoad = function() {\r\n _this.updateValidationUsers();\r\n\r\n _this.analystUsers = _this.entityCacheService.getFilteredUsers([UserType.ANALYSIS_CCPD, UserType.ADMINISTRATOR, UserType.COORDINATOR_CCPD]);\r\n _this.operatorUsers = _this.entityCacheService.getFilteredUsers([UserType.CNCL]);\r\n _this.coturUsers = _this.entityCacheService.getFilteredUsers([UserType.COORDINATOR_CNCL]);\r\n };\r\n this.entityCacheService.loadUsers(this.loadingListService, onUsersLoad);\r\n this.reloadUsersSubscription = this.entityCacheService.onUsersReload().subscribe(onUsersLoad);\r\n }\r\n\r\n /**A lista de validação de usuários garante que: \r\n * 1) o mesmo analista não pode criar e validar o evento, por tanto é removido da lista \r\n * 2) Se é administrador, não é removido da lista pois ele pode criar/validar o evento, além de selecionar um usuário da lista\r\n * A lista de usuários filtrados aqui, garante que na função onValidationChange, seja selecionado o usuário de acordo com as regras 1 e 2.\r\n */\r\n private updateValidationUsers(){\r\n const event = this.view as EventModel;\r\n\r\n this.validationUsers = this.entityCacheService.getFilteredUsers([UserType.ANALYSIS_CCPD, UserType.ADMINISTRATOR, UserType.COORDINATOR_CCPD]);\r\n \r\n if (event.analyst && !this.isUserAdministrator()) {\r\n // Retira o Analista CCPD da lista de opções para Analista Validação\r\n this.validationUsers = this.validationUsers.filter(user => user.id != event.analyst.id);\r\n ListUtils.orderSimpleModelList(this.validationUsers);\r\n \r\n // Se já existia um selecionado, verifica se é igual ao analista\r\n if (event.validationAnalyst && event.analyst.id == event.validationAnalyst.id) {\r\n event.validationAnalyst = null; // Analista de Validação não pode ser o mesmo que Analista CCPD\r\n }\r\n }\r\n\r\n this.checkValidationAnalystData();\r\n }\r\n\r\n analystSelectionChanged(){\r\n this.updateValidationUsers();\r\n }\r\n\r\n private setAlertDataOnView(alert: AlertModel) {\r\n const timestamp = moment(alert.timestamp);\r\n this.view['date'] = timestamp.format('DD/MM/yyyy');\r\n this.view['time'] = timestamp.format('HH:mm');\r\n\r\n this.view['alertLevel'] = alert.alertPriority;\r\n this.view['band'] = alert.band;\r\n this.view['duct'] = alert.duct;\r\n this.view['targetPointLatLong'] = alert.location.coordinates[0].toFixed(6) + ',' + alert.location.coordinates[1].toFixed(6); // inicialização do GeoPoint para alertas está errada, está sendo feito (x=latitude e y=longitude)\r\n\r\n if (alert.sourceType == SourceType.SIMF) {\r\n this.view['targetPointKM'] = alert.scalePoint;\r\n this.view['source'] = SimfAlertTypeDescription[alert.simfAlertType];\r\n }\r\n else {\r\n this.view['targetPointKM'] = alert.km;\r\n this.view['source'] = SourceTypeDescription[alert.sourceType];\r\n }\r\n }\r\n\r\n private getVerificationAlertData(alert: AlertModel){\r\n this.verificationService.loadById(alert.operationId).pipe(first()).subscribe( (operation: OperationModel) => {\r\n let verification: VerificationModel = operation;\r\n this.view['stretch'] = (verification && verification.stretch) ? verification.stretch : '';\r\n }, error => this.logger.error(error));\r\n }\r\n\r\n createData(options?) {\r\n this.logger.debug('EventEditComponent.createData()');\r\n\r\n this.model = new EventModel();\r\n this.view = {};\r\n\r\n this.initializeFields();\r\n \r\n this.initializeAnalystAndOperatorCNCL();\r\n\r\n if (options && options.selectedAlerts) {\r\n this.selectedAlerts = options.selectedAlerts;\r\n\r\n this.setAlertDataOnView(this.selectedAlerts[0]);\r\n\r\n if (this.selectedAlerts[0].operationType == OperationType.EVENT_VERIFICATION) {\r\n this.getVerificationAlertData(this.selectedAlerts[0]);\r\n }\r\n }else {\r\n this.selectedAlerts = null;\r\n }\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n this.model['identifier'] = null;\r\n this.model['analyst'] = null;\r\n this.model['status'] = EventStatus.IN_TREATMENT;\r\n this.model['archived'] = false;\r\n\r\n const dateToSend = (new Date()).getTime();\r\n this.model['date'] = dateToSend;\r\n this.model['suspiciousTime'] = '';\r\n this.model['stopTime'] = '';\r\n this.model['startTime'] = '';\r\n this.model['validation'] = null;\r\n this.model['validationAnalyst'] = null;\r\n this.model['validationNotes'] = [];\r\n this.model['actions'] = [];\r\n this.model['result'] = new ResultsModel();\r\n this.model['suspiciousDate'] = '';\r\n this.model['stopDate'] = '';\r\n this.model['startDate'] = '';\r\n this.model['endDate'] = '';\r\n this.model['associatedEventId'] = null;\r\n this.model['associatedIdentifier'] = null;\r\n }\r\n\r\n getSources() {\r\n const sources = this.authorizationService.getEditEventSources();\r\n if (!sources) return this.singleDataCacheService.getValues('ReportSource');\r\n }\r\n\r\n canCopy(): boolean {\r\n if (!this.id) return false;\r\n\r\n // Não preciso testar permissão de criar/editar porque o botão está escondido nesse caso\r\n\r\n // Verifica a permissão de alterar eventos por origem\r\n const event = this.model as EventModel;\r\n return this.authorizationService.canEditEventBySource(event.source);\r\n }\r\n \r\n canEdit(): boolean {\r\n if (!this.model) return false;\r\n\r\n // Não preciso testar permissão de criar/editar porque o botão está escondido nesse caso\r\n\r\n const event = this.model as EventModel;\r\n\r\n // Verifica a permissão de alterar eventos por origem\r\n if (!this.authorizationService.canEditEventBySource(event.source)) {\r\n return false;\r\n }\r\n\r\n if(this.isStatusFinalized()){\r\n // Se o evento está concluído e validação está incompleta, o analista CCPD do evento tem permissão de editar novamente o evento, \r\n // mesmo que o perfil dele não tenha permissão de alternar eventos concluídos\r\n if ((event.validation == EventValidation.INCOMPLETE && this.loggedUser.id == event.analyst.id)) {\r\n return true;\r\n }\r\n\r\n if(!this.authorizationService.userHasPermission(Permission.EDIT_END_EVENT)) {\r\n return false;\r\n }\r\n }\r\n \r\n return true;\r\n }\r\n\r\n mapModelToView() {\r\n this.logger.debug('EventEditComponent.mapModelToView()');\r\n\r\n super.mapModelToView();\r\n\r\n if (!this.model['result']) {\r\n this.view['result'] = new ResultsModel();\r\n }\r\n\r\n if (!this.model['status']) {\r\n this.view['status'] = EventStatus.IN_TREATMENT;\r\n }\r\n\r\n let date: Moment;\r\n if (this.model['date']) {\r\n date = moment(this.model['date']);\r\n }\r\n else {\r\n date = moment();\r\n }\r\n this.view['date'] = date.format('DD/MM/yyyy');\r\n this.view['time'] = date.format('HH:mm');\r\n\r\n if (this.model['endDate']) {\r\n date = moment(this.model['endDate']);\r\n this.view['endDate'] = date.format('DD/MM/yyyy');\r\n this.view['endTime'] = date.format('HH:mm');\r\n }else {\r\n this.view['endDate'] = '';\r\n this.view['endTime'] = '';\r\n\r\n }\r\n\r\n if (this.model['suspiciousDate']) {\r\n date = moment(this.model['suspiciousDate']);\r\n this.view['suspiciousDate'] = date.format('DD/MM/yyyy');\r\n this.view['suspiciousTime'] = date.format('HH:mm');\r\n }else { \r\n if (this.model['suspiciousTime']) { //Evento antigo\r\n const suspiciousTimestamp = moment(this.model['suspiciousTime']);\r\n this.view['suspiciousDate'] = suspiciousTimestamp.format('DD/MM/yyyy');\r\n this.view['suspiciousTime'] = suspiciousTimestamp.format('HH:mm');\r\n }else{\r\n this.view['suspiciousDate'] = '';\r\n this.view['suspiciousTime'] = '';\r\n }\r\n }\r\n\r\n if (this.model['stopDate']) {\r\n date = moment(this.model['stopDate']);\r\n this.view['stopDate'] = date.format('DD/MM/yyyy');\r\n this.view['stopTime'] = date.format('HH:mm');\r\n }else {\r\n if (this.model['stopTime']) { //Evento antigo\r\n const stopTimestamp = moment(this.model['stopTime']);\r\n this.view['stopDate'] = stopTimestamp.format('DD/MM/yyyy');\r\n this.view['stopTime'] = stopTimestamp.format('HH:mm');\r\n }else{\r\n this.view['stopDate'] = '';\r\n this.view['stopTime'] = '';\r\n } \r\n\r\n }\r\n \r\n if(this.model['startDate']){\r\n date = moment(this.model['startDate']);\r\n this.view['startDate'] = date.format('DD/MM/yyyy');\r\n this.view['startTime'] = date.format('HH:mm');\r\n }else { \r\n this.view['startDate'] = '';\r\n this.view['startTime'] = '';\r\n }\r\n\r\n if (!this.model['identifier']){\r\n this.view['identifier'] = \"[NOVO]\";\r\n this.identifierEvent = this.view['identifier'] //Um evento novo é tratado para carregar a lista de verificações vazia\r\n }\r\n else{\r\n this.identifierEvent = this.model['identifier']; //Seta o valor do identificador do evento para carregar a lista de verificações\r\n }\r\n\r\n this.logger.debug('Identificador do evento: ' + this.identifierEvent);\r\n\r\n if (!this.model['validationNotes'])\r\n this.view['validationNotes'] = [];\r\n\r\n this.view['validationNotes'].sort((note1, note2) => (note1.date < note2.date) ? 1 : -1);\r\n\r\n if(this.model['source']){\r\n this.sourceSelectionChanged(this.model['source']);\r\n }\r\n\r\n if (this.copy){\r\n this.view['analyst'] = null;\r\n this.view['operatorCNCL'] = null;\r\n this.initializeAnalystAndOperatorCNCL();\r\n }\r\n\r\n if (this.model['attachmentOpFile1']) {\r\n this.view['attachmentFile1'] = this.model['attachmentOpFile1'].name + \".\" + this.model['attachmentOpFile1'].extension;\r\n }\r\n\r\n if (this.model['attachmentOpFile2']) {\r\n this.view['attachmentFile2'] = this.model['attachmentOpFile2'].name + \".\" + this.model['attachmentOpFile2'].extension;\r\n }\r\n\r\n if (this.model['attachmentOpFile3']) {\r\n this.view['attachmentFile3'] = this.model['attachmentOpFile3'].name + \".\" + this.model['attachmentOpFile3'].extension;\r\n }\r\n\r\n if (this.model['attachmentOpFile4']) {\r\n this.view['attachmentFile4'] = this.model['attachmentOpFile4'].name + \".\" + this.model['attachmentOpFile4'].extension;\r\n }\r\n\r\n if (this.model['attachmentOpFile5']) {\r\n this.view['attachmentFile5'] = this.model['attachmentOpFile5'].name + \".\" + this.model['attachmentOpFile5'].extension;\r\n }\r\n\r\n this.buildActionDataSource();\r\n this.buildValidationNoteDataSource();\r\n\r\n this.glUpdateTabTitle(this.modelName + ': ' + this.view['identifier']);\r\n }\r\n\r\n mapViewToModel() {\r\n if (this.isSaving && this.isCreating())\r\n this.view['identifier'] = null;\r\n\r\n super.mapViewToModel();\r\n\r\n const date = DateUtils.stringDateTimeToTimestamp(this.view['date'], this.view['time'], true);\r\n this.model['date'] = date;\r\n\r\n const startDate = DateUtils.stringDateTimeToTimestamp(this.view['startDate'], this.view['startTime'], true);\r\n this.model['startDate'] = startDate;\r\n\r\n const endDate = DateUtils.stringDateTimeToTimestamp(this.view['endDate'], this.view['endTime'], true);\r\n this.model['endDate'] = endDate;\r\n\r\n const suspiciousDate = DateUtils.stringDateTimeToTimestamp(this.view['suspiciousDate'], this.view['suspiciousTime'], true);\r\n this.model['suspiciousDate'] = suspiciousDate;\r\n this.model['suspiciousTime'] = null;\r\n\r\n const stopDate = DateUtils.stringDateTimeToTimestamp(this.view['stopDate'], this.view['stopTime'], true);\r\n this.model['stopDate'] = stopDate;\r\n this.model['stopTime'] = null;\r\n\r\n this.extractAttachmentFileName();\r\n\r\n }\r\n\r\n /**\r\n * Carrega as ações principais dada uma origem\r\n */\r\n reloadEventMainActions() {\r\n this.eventMainActionService.loadFromServerBySourceType(this.view['source']).pipe(first()).subscribe( (actions: EventMainActionModel[]) => {\r\n if (!this.view['actions'] || this.view['actions'].length == 0 || !actions) {\r\n this.view['actions'] = actions || [];\r\n }\r\n else {\r\n let view_actions = this.view['actions'] as EventMainActionModel[];\r\n\r\n actions.forEach(a => {\r\n // Se encontrou a mesma, copia os dados existentes\r\n const v_a = view_actions.find(v_a => v_a.action == a.action && v_a.sourceType == a.sourceType)\r\n if (v_a) {\r\n a.comment = v_a.comment;\r\n a.done = v_a.done;\r\n }\r\n });\r\n\r\n this.view['actions'] = actions;\r\n }\r\n this.updateInitialView('actions');\r\n this.buildActionDataSource();\r\n }, error => {\r\n this.logger.error(`Erro ao obter as ações principais para a origem\r\n ${JSON.stringify(this.view['source'])} :\r\n ${JSON.stringify(error)}`);\r\n });\r\n }\r\n\r\n // ########################################################\r\n // GRID METHODS ACTIONS\r\n // #######################################################\r\n\r\n /**\r\n * Ação de alteração na execução de uma ação\r\n */\r\n onChangeActionDone(item: EventMainActionModel) {\r\n if (item['done'] === undefined) {\r\n item['done'] = true;\r\n } else {\r\n item['done'] = !item['done'];\r\n }\r\n }\r\n\r\n onActionEdit(item: EventMainActionModel){\r\n this.dialog.open(EventMainActionDialogComponent, {\r\n data: item,\r\n width: '28rem',\r\n panelClass: 'sipd-modal'\r\n });\r\n }\r\n\r\n /**\r\n * Atualiza o datasource das TableDataSource do cliente. A tabela das ações principais\r\n */\r\n buildActionDataSource(){\r\n this.actionsDataSource = new MatTableDataSource(this.view['actions']);\r\n }\r\n\r\n /***************************************** */\r\n\r\n onActionAddValidationNote() {\r\n let dialogRef = this.dialog.open(EventValidationNoteDialogComponent, {\r\n width: '28rem',\r\n panelClass: 'sipd-modal'\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe( (note: string) => {\r\n if (note && note != '') {\r\n let date = new Date().getTime();\r\n let author = this.getUserNameLoginTitle(this.loggedUser);\r\n\r\n let validationNote = new ValidationNoteModel(date, author, note);\r\n this.view['validationNotes'].splice(0, 0, validationNote);\r\n this.validationNoteDataSource.data = this.view['validationNotes'];\r\n this.onValidationNoteAdded();\r\n }\r\n });\r\n }\r\n /* Abre o diálogo com os dados da nota de validação a ser editada */\r\n onActionEditValidationNote(row: ValidationNoteModel, event: Event){\r\n\r\n let dialogRef = this.dialog.open(EventValidationNoteDialogComponent, {\r\n width: '28rem',\r\n data: row,\r\n panelClass: 'sipd-modal'\r\n }).afterClosed().pipe(first()).subscribe( (note: string) => {\r\n if (note) {\r\n row.note = note;\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => dialogRef?.unsubscribe());\r\n this.validationNoteSelection.clear();\r\n }\r\n\r\n buildValidationNoteDataSource(){\r\n this.validationNoteDataSource = new MatTableDataSource(this.view['validationNotes']);\r\n }\r\n\r\n onDeleteManyValidationNoteClick() {\r\n if (this.validationNoteSelection.isEmpty()) return;\r\n\r\n const openConfirmationSubscription = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: \"Remover Nota(s) selecionada(s)?\",\r\n title: 'Remover Nota',\r\n okLabel: 'Remover'\r\n }\r\n }).afterClosed().pipe(first()).subscribe( (result: boolean) => {\r\n if(result){\r\n this.deleteSelectedValidationNotes();\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => openConfirmationSubscription?.unsubscribe());\r\n }\r\n\r\n\r\n private deleteSelectedValidationNotes(){\r\n this.validationNoteSelection.selected.forEach( (selectedItem: ValidationNoteModel) => {\r\n const index = this.view['validationNotes'].indexOf(selectedItem);\r\n if (index !== -1) {\r\n this.view['validationNotes'].splice(index, 1);\r\n }\r\n this.validationNoteSelection.deselect(selectedItem);\r\n });\r\n\r\n this.validationNoteDataSource.data = this.view['validationNotes'];\r\n }\r\n\r\n /** Whether the number of selected elements matches the total number of rows. */\r\n isAllSelectedValidationNotes() {\r\n const numSelected = this.validationNoteSelection.selected.length;\r\n let numRows = 0;\r\n if(this.validationNoteDataSource && this.validationNoteDataSource.data){\r\n numRows = this.validationNoteDataSource.data.length;\r\n }\r\n return numSelected === numRows;\r\n }\r\n\r\n masterToggleValidationNotes() {\r\n let isAllSeleceted = this.isAllSelectedValidationNotes();\r\n if(isAllSeleceted) {\r\n this.validationNoteSelection.clear();\r\n }\r\n else if(this.validationNoteDataSource) {\r\n this.validationNoteDataSource.data.forEach(row => this.validationNoteSelection.select(row));\r\n }\r\n }\r\n\r\n onCheckboxValidationNoteClick(row){\r\n this.validationNoteSelection.toggle(row);\r\n }\r\n\r\n /** The tip for the checkbox on the passed row */\r\n checkboxTipValidationNotes(row?: ValidationNoteModel): string {\r\n if (!row) {\r\n return `${this.isAllSelectedValidationNotes() ? 'Desmarcar' : 'Selecionar'} Todos`;\r\n }\r\n return `${this.validationNoteSelection.isSelected(row) ? 'Desmarcar' : 'Selecionar'} Item`;\r\n }\r\n\r\n\r\n // ########################################################\r\n // GRID SELECTION CONTROL - Action\r\n // ########################################################\r\n\r\n /**\r\n * Verifica se a tag da ocorrência deve ou não aparecer\r\n */\r\n showOccurrenceTag() {\r\n return this.view['result'] && this.view['result']['occurrence']\r\n && (ResultOccurrenceDescription[this.view['result']['occurrence']] === ResultOccurrenceDescription.DUCT\r\n || ResultOccurrenceDescription[this.view['result']['occurrence']] === ResultOccurrenceDescription.VALVE);\r\n }\r\n\r\n /**\r\n * Verifica se uma ação foi executada\r\n */\r\n isActionDone(item: any) {\r\n return item['done'] === true;\r\n }\r\n\r\n /**\r\n * Método utilitário que sinaliza que os requisitos de preenchimento do formulário foram preenchidos.\r\n * Os campos obrigatórios devem ser verificados aqui para impedir que a ação de salvar avance.\r\n * @returns True caso todos os campos obrigatórios estejam devidamente preenchidos e false caso contrário\r\n */\r\n isRequiredFieldFilled(): boolean {\r\n if (!this.view['status'] ||\r\n !this.view['date'] ||\r\n !this.view['time'] ||\r\n !(DateUtils.stringDateTimeToTimestamp(this.view['date'], this.view['time'], true)) ||\r\n !this.view['communicationChannel'] ||\r\n !this.view['source'] ||\r\n !this.checkConditionalRequiredFieldFilled()) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['status']) names.push('Status');\r\n if (!this.view['date']) names.push('Data');\r\n if (!this.view['time']) names.push('Hora');\r\n if (!this.view['communicationChannel']) names.push('Canal de Comunicação');\r\n if (!this.view['source']) names.push('Origem');\r\n if (this.isStatusFinalizedAndChannel168()) {\r\n if (!this.view['callId168']) names.push('ID Chamada 168');\r\n if (!this.view['category168']) names.push('Categoria 168');\r\n if (!this.view['subcategory168']) names.push('Subcategoria 168');\r\n }\r\n return names;\r\n }\r\n\r\n /**\r\n * Verifica se as condições de preenchimento obrigatório foram satisfeitas. As regras listadas são:\r\n * 1) ID Chamada 168: obrigatório quando o status for \"Concluído\" e canal \"168\";\r\n * 2) Categoria 168: obrigatório quando o status for \"Concluído\" e canal \"168\";\r\n * 3) Subcategoria 168: obrigatório quando o status for \"Concluído\" e canal \"168\"\r\n * @returns True caso todas as condições de preenchimento estejam satisfeitas e false caso contrário.\r\n */\r\n private checkConditionalRequiredFieldFilled(): boolean {\r\n // Campos Obrigatórios quando status for \"Concluído\" e Canal 168\r\n if (this.isStatusFinalizedAndChannel168()) {\r\n // Regra 1) ID Chamada 168: obrigatório quando o status for \"Concluído\" e canal \"168\"\r\n if (!this.view['callId168']) {\r\n return false;\r\n }\r\n\r\n // Regra 2) Categoria 168: obrigatório quando o status for \"Concluído\" e canal \"168\"\r\n if (!this.view['category168']) {\r\n return false;\r\n }\r\n\r\n // Regra 3) Subcategoria 168: obrigatório quando o status for \"Concluído\" e canal \"168\"\r\n if (!this.view['subcategory168']) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n isStatusFinalizedAndChannel168(): boolean {\r\n // Aqui é diferente dos outros casos, usa a view porque é antes de salvar\r\n return this.isViewStatusFinalized() && this.view['communicationChannel'] == 'Canal 168';\r\n }\r\n\r\n onPasteLatLong(event: ClipboardEvent, name: string, subname?: string){\r\n let pastedValue = FieldUtils.pasteLatLong(event, subname? this.view[name][subname]: this.view[name]);\r\n if (pastedValue != null) {\r\n if (subname) this.view[name][subname] = pastedValue;\r\n else this.view[name] = pastedValue;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n getEventStatus(): string {\r\n if (this.view['archived'])\r\n return \"Arquivado\";\r\n else if (this.view['status'])\r\n return EventStatusDescription[this.view['status']];\r\n else\r\n return '';\r\n }\r\n\r\n hasLocation(): boolean {\r\n return this.view &&\r\n ((this.view['targetPointLatLong']) ||\r\n (this.view['stretchStartLatLong'] && this.view['stretchEndLatLong']));\r\n }\r\n\r\n protected afterLoadData(options){\r\n this.editedEventSubject.next(this.model as EventModel);\r\n this.isHiddenButtonEditForUser = !this.canEdit(); //checkPermisions é chamada antes do modelo ser inicializado\r\n this.updateAttachmentData(); // carrega os arquivos anexo do evento\r\n }\r\n\r\n isOperationArchiveButtonHiddenForUser() {\r\n this.isHiddenButtonArchiveForUser = !this.authorizationService.isOperationArchiveAllowed(); \r\n }\r\n\r\n onExportClick() {\r\n this.loadingListService.loadingOn();\r\n this.eventService.exportEvent(this.model as EventModel).pipe(first()).subscribe(response => {\r\n this.loadingListService.loadingOff();\r\n\r\n let filename = `${(this.model as EventModel).identifier}.zip`;\r\n filename = filename.replace(/[\\x00-\\x1f?<>:\"/\\\\*|]/g, '_');\r\n saveAs(response, filename);\r\n },\r\n error =>{\r\n this.loadingListService.loadingOff();\r\n this.logger.error(error);\r\n });\r\n }\r\n\r\n canArchive(): boolean{\r\n if (!this.model)\r\n return false;\r\n\r\n if (this.authorizationService.isAdmin())\r\n return true;\r\n\r\n let canArchive = this.authorizationService.isControl();\r\n if (canArchive) {\r\n if (!this.hasArchivalRequirements(this.model as EventModel))\r\n canArchive = false;\r\n }\r\n\r\n return canArchive;\r\n }\r\n\r\n // Verifica os requisitos do model para arquivamento\r\n hasArchivalRequirements(model: EventModel): boolean{\r\n\r\n if(model.status != EventStatus.FINALIZED){ // Verifica se o status é Concluído\r\n return false;\r\n }\r\n\r\n if(model.validation != EventValidation.COMPLETE){ // Verifica se a validação é Completo\r\n return false;\r\n }\r\n\r\n if( this.authorizationService.isControl()){ // Se for perfil ANALYSIS_CCPD, verifica se os eventos foram criados por ele\r\n if(!model.analyst || model.analyst.id !== this.loggedUser.id.toString()){\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n onArchiveClick(){\r\n let entities: EntityModel[] = [];\r\n entities.push(this.model);\r\n this.eventService.archive(entities).pipe(first()).subscribe( values => {\r\n let archiveButtonLabel = this.model['archived'] ? 'Arquivar' : 'Desarquivar';\r\n this.toastr.info('Ação de ' + archiveButtonLabel + ' ' + this.modelName + ' foi realizada com sucesso.');\r\n this.view['archived'] = this.model['archived'];\r\n this.updateInitialView('archived');\r\n this.glEmitEvent(SAVE_DATA_PREFIX + this.componentName, {entity: this.model});\r\n }, error => this.logger.error(error));\r\n }\r\n\r\n /**\r\n * Evento disparado quando é feita uma seleção na caixa \"Validação\".\r\n * Regras:\r\n *
    \r\n *
  1. Se o usuário marcar \"Completo\", deve ser exibido um diálogo solicitando a confirmação da validação.
  2. \r\n *
  3. Se o usuário logado for Analista CCPD, a caixa de seleção \"Analista Validação\" é preenchida automaticamente com seu nome (outros perfis não\r\n * deveriam validar, e o Administrador determina o valor de todos os campos).
  4. \r\n *
\r\n */\r\n onValidationChange(event) {\r\n if (event === undefined) return;\r\n\r\n if (event === EventValidation.COMPLETE) {\r\n\r\n const openConfirmationSubscription = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: \"ATENÇÃO: após a validação do evento, esta ação só poderá ser desfeita por um Administrador. Confirma a operação?\",\r\n title: 'Validar Evento',\r\n okLabel: 'Validar'\r\n }\r\n }).afterClosed().pipe(first()).subscribe( (result: boolean) => {\r\n if (!result) {\r\n this.view['validation'] = undefined;\r\n this.view['validationAnalyst'] = undefined;\r\n return;\r\n }\r\n // Força o selector fechar\r\n this.selector.onClosedEvent(event);\r\n this.selector.autocomplete.closePanel();\r\n },\r\n error => this.logger.error(error),\r\n () => openConfirmationSubscription?.unsubscribe());\r\n }\r\n\r\n // seleciona o analista de validação da lista de usuários validados\r\n if (this.isUserCCPDAnalyst() || this.isAdmin()) {\r\n\r\n const userFound = this.validationUsers.find((user) => {\r\n return user.id === this.loggedUser.id;\r\n });\r\n \r\n this.view['validationAnalyst'] = userFound;\r\n }\r\n }\r\n\r\n /**\r\n * Regras para que a caixa de seleção \"Validação\" seja desabilitada ou não:\r\n *
    \r\n *
  1. A caixa sempre estará habilitada para usuários Administradores.
  2. \r\n *
  3. Se o evento estiver concluído (mas não validado) E o usuário logado for Analista CCPD E não for aquele que criou o evento, habilita.
  4. \r\n *
  5. Para todos os demais casos, a caixa fica desabilitada.
  6. \r\n *
\r\n * @returns true se a caixa deve ser desabilitada, false para ser habilitada.\r\n */\r\n disableValidationComponentRules(): boolean {\r\n if (this.isUserAdministrator()) return false;\r\n if (this.isStatusFinalized() && !this.isEventValidated() && this.isUserCCPDAnalyst() && !this.isLoggedUserSameAsEventCreator() ) return false; // Concluído + não já estar validado + é analista CCPD + não é o mesmo da criação\r\n return true;\r\n }\r\n\r\n /**\r\n * Regras para desabilitar o botão de alteração de status do evento:\r\n *
    \r\n *
  1. Se for Administrador, sempre poderá alterar;
  2. \r\n *
  3. Se o evento estiver concluído, não poderá mais ter seu status alterado (salvo por um Administrador);
  4. \r\n *
  5. Se estiver em modo de visualização, o status não poderá ser alterado, somente em modo de edição.
  6. \r\n *
\r\n * @returns se a botão deve ser desabilitado, false para ser habilitado.\r\n */\r\n disableStatusChangeComponent(): boolean {\r\n if (this.isUserAdministrator()) return false;\r\n if (this.isStatusFinalized()) return true;\r\n return this.readOnly;\r\n }\r\n\r\n /**\r\n * Regras para atualização das caixas de seleção \"Validação\" e \"Analista Validação\" após inserção de uma nota de validação:\r\n *
    \r\n *
  1. Se o evento estiver concluído E o usuário logado for Analista CCPD E diferente daquele que criou o evento E o evento ainda não tiver sido validado, \r\n * o campo \"Validação\" deve assumir o valor \"Incompleto\" e o campo \"Analista Validação\" deve receber o nome do usuário logado.
  2. \r\n *
\r\n */\r\n onValidationNoteAdded() {\r\n if (this.isStatusFinalized() && (this.isUserCCPDAnalyst() || this.isAdmin()) && !this.isLoggedUserSameAsEventCreator() && !this.isEventValidated()) {\r\n this.view['validation'] = EventValidation.INCOMPLETE;\r\n this.currentUserAsField('validationAnalyst');\r\n }\r\n }\r\n\r\n /** Indica se o usuário logado pode ou não adicionar notas de validação. Regras:\r\n *
    \r\n *
  1. Administradores sempre podem adicionar notas de validação.
  2. \r\n *
  3. Usuários não-administradores só podem adicionar notas de validação se tiverem a permissão para tal E o evento tiver sido concluído E não forem\r\n * aquele que criou o evento.
  4. \r\n *
\r\n */\r\n userCanAddValidationNotes(): boolean {\r\n if (this.isUserAdministrator()) return true;\r\n return this.authorizationService.userHasPermission(Permission.CREATE_EDIT_EVENT_NOTES) && \r\n this.isStatusFinalized() &&\r\n !this.isLoggedUserSameAsEventCreator();\r\n }\r\n\r\n /** Indica se o usuário logado pode ou não selecionar notas de validação (somente Administradores). */\r\n userCanSelectValidationNotes(): boolean {\r\n return this.isUserAdministrator();\r\n }\r\n\r\n /** Indica se o usuário logado pode ou não editar notas de validação (somente Administradores E exatamente 1 nota deve estar selecionada). */\r\n userCanEditValidationNotes(): boolean {\r\n return this.userCanSelectValidationNotes() && this.validationNoteSelection?.selected.length == 1;\r\n }\r\n\r\n /** \r\n * Indica se o usuário logado pode ou não remover notas de validação. Regras:\r\n *
    \r\n *
  1. Usuários administradores sempre podem remover notas.
  2. \r\n *
  3. Usuários não-administradores devem possuir permissão específica.
  4. \r\n *
\r\n */\r\n userCanDeleteValidationNotes(): boolean {\r\n return this.isUserAdministrator() || this.authorizationService.userHasPermission(Permission.DELETE_EVENT_NOTES);\r\n }\r\n\r\n /**\r\n * Indica se o botão para remover notas (assumindo que o usuário POSSA remover notas) deve estar desabilitado ou não (ao menos uma nota deve estar selecionada).\r\n */\r\n disableDeleteValidationNotes(): boolean {\r\n if (this.validationNoteSelection.hasValue()) return false;\r\n return true;\r\n }\r\n\r\n /** Indica se o evento está concluído ou não. */\r\n isStatusFinalized(): boolean {\r\n if (!this.model) return;\r\n // Usa o modelo, precisa já ter sido salvo para estar realmente concluído\r\n return this.model['status'] === EventStatus.FINALIZED;\r\n }\r\n\r\n isViewStatusFinalized(): boolean {\r\n if (!this.view) return;\r\n // Usa a view, precisa para antes de salvar\r\n return this.view['status'] === EventStatus.FINALIZED;\r\n }\r\n\r\n /** Indica se o evento foi validado ou não. */\r\n isEventValidated(): boolean {\r\n if (!this.model) return;\r\n // Usa o modelo, precisa já ter sido salvo para estar realmente concluído\r\n return this.model['validation'] === EventValidation.COMPLETE;\r\n }\r\n\r\n /** Indica se o usuário logado é ou não um administrador. */\r\n isUserAdministrator(): boolean {\r\n return this.loggedUserProfile.userType === UserType.ADMINISTRATOR;\r\n }\r\n\r\n /** Indica se o usuário logado possui ou não o perfil \"Analista CCPD\". */\r\n isUserCCPDAnalyst(): boolean {\r\n return this.loggedUserProfile.userType === UserType.ANALYSIS_CCPD;\r\n }\r\n\r\n /** Indica se o usuário logado foi o mesmo que criou o evento. */\r\n isLoggedUserSameAsEventCreator(): boolean {\r\n return this.loggedUser.id == this.view['analyst']?.id;\r\n }\r\n \r\n /**Verifica se o usuário tem permissão para editar o campo*/\r\n canEditField(field: string){\r\n if(this.isUserAdministrator()) return true;\r\n\r\n const permissionOptions = this.authorizationService.getUserPermissionOptions(Permission.CHANGE_ANY_EVENT_FIELD);\r\n \r\n if (permissionOptions && permissionOptions.option === PermisionRuleOption.ALL_FIELD) return true; \r\n\r\n if(permissionOptions && permissionOptions.option === PermisionRuleOption.SOME_FIELDS)\r\n return !permissionOptions.fields.includes(field); // tem que ser negado porque é a lista dos campos que não podem ser editados. \r\n \r\n return false;\r\n }\r\n\r\n checkPermissions(){\r\n this.isHiddenButtonCreateEditEvent = !this.authorizationService.userHasPermission(Permission.CREATE_EDIT_EVENT); \r\n this.isHiddenButtonDeleteEvent = !this.authorizationService.userHasPermission(Permission.DELETE_EVENT); \r\n this.isHiddenButtonDeleteValidationNotes = !this.userCanDeleteValidationNotes();\r\n\r\n this.canEditCcpdAnalyst = this.canEditField(this.eventFields.CCPD_ANALYST)\r\n this.canEditValidationAnalyst = this.canEditField(this.eventFields.VALIDATION_ANALYST); \r\n }\r\n\r\n onEnableEditClick() {\r\n if (this.canEdit()) {\r\n this.readOnly = false;\r\n\r\n this.initializeAnalystAndOperatorCNCL(true);\r\n }\r\n }\r\n\r\n private initializeAnalystAndOperatorCNCL(updateDiff?: boolean){\r\n // Se o Analista CCPD não existe, então é inicializado com o usuário corrente se este for do perfil Analista CCPD, Administrador ou Coordenador CCPD\r\n if (!this.view['analyst']){\r\n if (this.loggedUserProfile.userType == UserType.ANALYSIS_CCPD || \r\n this.loggedUserProfile.userType == UserType.ADMINISTRATOR ||\r\n this.loggedUserProfile.userType == UserType.COORDINATOR_CCPD){\r\n this.currentUserAsField('analyst');\r\n if (updateDiff) this.updateInitialView('analyst');\r\n }\r\n }\r\n\r\n // Se o Operador CNCL não existe, então é inicializado com o usuário corrente se este for do perfil Analista CNCL ou Coordenador CNCL\r\n if (!this.view['operatorCNCL']){\r\n if (this.loggedUserProfile.userType == UserType.CNCL || \r\n this.loggedUserProfile.userType == UserType.COORDINATOR_CNCL) {\r\n this.currentUserAsField('operatorCNCL');\r\n if (updateDiff) this.updateInitialView('operatorCNCL');\r\n }\r\n }\r\n }\r\n\r\n /**Verifica se na lista existe o analista salvo no evento, em caso não adiciona na lista \r\n * Usado só para visualização do evento\r\n */\r\n checkValidationAnalystData(){\r\n if(!this.model) return;\r\n if(this.copy) return;\r\n\r\n let analystEvent = this.model['validationAnalyst'];\r\n if(analystEvent){\r\n let validationAnalystModel = this.validationUsers.find( validationAnalyst => analystEvent.id == validationAnalyst.id);\r\n if(!validationAnalystModel)\r\n this.validationUsers.push(analystEvent);\r\n }\r\n }\r\n\r\n /** Adiciona um arquivo anexo\r\n * file: arquivo\r\n * attachmentNumber: número de anexo\r\n */\r\n addFile(file: File, attachmentNumber: AttachmentNumber): void {\r\n this.logger.debug('EventEditComponent.addFile()');\r\n\r\n if (file) { // Usuário selecionou um arquivo\r\n\r\n this.logger.debug('File size : ', file.size);\r\n // 1. Valida o peso do arquivo <=2Mb\r\n if(file.size > MAX_FILE_SIZE){ \r\n this.clearOperationFile(true, attachmentNumber, false);\r\n const title = 'Arquivo Inválido!';\r\n const message = 'Só podem ser carregados arquivos com até 2Mb';\r\n this.toastr.error(message, title); \r\n return; \r\n }\r\n\r\n let attachmentFile = new AttachmentModel();\r\n let filename = file.name.replace(/[\\x00-\\x1f?<>:\"/\\\\*|]/g, '_');\r\n attachmentFile.name = filename.split('.').slice(0, -1).join('.');\r\n attachmentFile.extension = file.name.split('.').pop();\r\n attachmentFile.type = file.type;\r\n\r\n switch(attachmentNumber){\r\n case AttachmentNumber.ONE:\r\n this.attachmentFile1 = file;\r\n this.view['attachmentFile1'] = this.attachmentFile1.name;\r\n this.view['attachmentOpFile1'] = attachmentFile;\r\n break;\r\n case AttachmentNumber.TWO:\r\n this.attachmentFile2 = file;\r\n this.view['attachmentFile2'] = this.attachmentFile2.name;\r\n this.view['attachmentOpFile2'] = attachmentFile;\r\n break; \r\n case AttachmentNumber.THREE:\r\n this.attachmentFile3 = file;\r\n this.view['attachmentFile3'] = this.attachmentFile3.name;\r\n this.view['attachmentOpFile3'] = attachmentFile;\r\n break; \r\n case AttachmentNumber.FOUR:\r\n this.attachmentFile4 = file;\r\n this.view['attachmentFile4'] = this.attachmentFile4.name;\r\n this.view['attachmentOpFile4'] = attachmentFile;\r\n break; \r\n case AttachmentNumber.FIVE:\r\n this.attachmentFile5 = file;\r\n this.view['attachmentFile5'] = this.attachmentFile5.name;\r\n this.view['attachmentOpFile5'] = attachmentFile;\r\n break; \r\n }\r\n }\r\n else {\r\n this.clearOperationFile(true, attachmentNumber, true);\r\n }\r\n }\r\n\r\n openOperationFile(fileName: string, attachmentNumber: AttachmentNumber) : void {\r\n switch(attachmentNumber){\r\n case AttachmentNumber.ONE:\r\n this.viewFile(this.attachmentFile1 , this.view['attachmentOpFile1'] );\r\n break;\r\n case AttachmentNumber.TWO:\r\n this.viewFile(this.attachmentFile2 , this.view['attachmentOpFile2']);\r\n break;\r\n case AttachmentNumber.THREE:\r\n this.viewFile(this.attachmentFile3 , this.view['attachmentOpFile3']);\r\n break;\r\n case AttachmentNumber.FOUR:\r\n this.viewFile(this.attachmentFile4 , this.view['attachmentOpFile4']);\r\n break;\r\n case AttachmentNumber.FIVE:\r\n this.viewFile(this.attachmentFile5 , this.view['attachmentOpFile5']);\r\n break;\r\n }\r\n } \r\n \r\n clearOperationFile(removed, attachmentNumber: AttachmentNumber, backup: boolean){\r\n switch(attachmentNumber){\r\n case AttachmentNumber.ONE:\r\n if(backup) this.back_attachmentFile1 = this.attachmentFile1;\r\n this.attachmentFile1 = undefined;\r\n this.view['attachmentFile1'] = undefined;\r\n this.view['attachmentOpFile1'] = undefined;\r\n break;\r\n case AttachmentNumber.TWO:\r\n if(backup) this.back_attachmentFile2 = this.attachmentFile2;\r\n this.attachmentFile2 = undefined;\r\n this.view['attachmentFile2'] = undefined;\r\n this.view['attachmentOpFile2'] = undefined;\r\n break;\r\n case AttachmentNumber.THREE:\r\n if(backup) this.back_attachmentFile3 = this.attachmentFile3;\r\n this.attachmentFile3 = undefined;\r\n this.view['attachmentFile3'] = undefined;\r\n this.view['attachmentOpFile3'] = undefined;\r\n break;\r\n case AttachmentNumber.FOUR:\r\n if(backup) this.back_attachmentFile4 = this.attachmentFile4;\r\n this.attachmentFile4 = undefined;\r\n this.view['attachmentFile4'] = undefined;\r\n this.view['attachmentOpFile4'] = undefined;\r\n break; \r\n case AttachmentNumber.FIVE:\r\n if(backup) this.back_attachmentFile5 = this.attachmentFile5;\r\n this.attachmentFile5 = undefined;\r\n this.view['attachmentFile5'] = undefined;\r\n this.view['attachmentOpFile5'] = undefined;\r\n break;\r\n }\r\n }\r\n \r\n restoreFiles(){\r\n if(this.back_attachmentFile1) this.attachmentFile1 = this.back_attachmentFile1;\r\n if(this.back_attachmentFile2) this.attachmentFile2 = this.back_attachmentFile2;\r\n if(this.back_attachmentFile3) this.attachmentFile3 = this.back_attachmentFile3;\r\n if(this.back_attachmentFile4) this.attachmentFile4 = this.back_attachmentFile4;\r\n if(this.back_attachmentFile5) this.attachmentFile5 = this.back_attachmentFile5;\r\n }\r\n\r\n private extractAttachmentFileName(){\r\n \r\n let operation : EventModel = this.model;\r\n \r\n if(operation.attachmentOpFile1)\r\n operation.attachmentOpFile1 = this.view['attachmentOpFile1'];\r\n \r\n if(operation.attachmentOpFile2)\r\n operation.attachmentOpFile2 = this.view['attachmentOpFile2'];\r\n \r\n if(operation.attachmentOpFile3)\r\n operation.attachmentOpFile3 = this.view['attachmentOpFile3'];\r\n \r\n if(operation.attachmentOpFile4)\r\n operation.attachmentOpFile4 = this.view['attachmentOpFile4'];\r\n \r\n if(operation.attachmentOpFile5)\r\n operation.attachmentOpFile5 = this.view['attachmentOpFile5'];\r\n \r\n }\r\n\r\n saveEventStatusFinalized() {\r\n const openConfirmationSubscription = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: \"ATENÇÃO: após salvar evento como concluído, esta ação só poderá ser desfeita por um Administrador. Confirma a operação?\",\r\n title: 'Salvar Evento',\r\n okLabel: 'Salvar'\r\n }\r\n }).afterClosed().pipe(first()).subscribe( (result: boolean) => {\r\n if (result) {\r\n this.saveEvent();\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => openConfirmationSubscription?.unsubscribe());\r\n }\r\n\r\n saveEvent(){\r\n this.mapViewToModel(); \r\n \r\n if(this.isCreating()){\r\n this.saveCreatedModel();\r\n\r\n }\r\n else {\r\n this.saveEditedModel();\r\n } \r\n }\r\n\r\n onSaveClick(saveClickEvent?: any): void {\r\n this.logger.debug('EventEditComponent.onSaveClick()');\r\n saveClickEvent?.preventDefault();\r\n\r\n if (this.view['status'] == this.eventStatus.FINALIZED &&\r\n this.model['status'] != this.eventStatus.FINALIZED) {\r\n this.saveEventStatusFinalized();\r\n }\r\n else {\r\n this.saveEvent();\r\n }\r\n\r\n }\r\n \r\n saveEditedModel(){\r\n this.logger.debug('EventEditComponent.saveEditedModel');\r\n \r\n const formElements = this.getFormElements();\r\n \r\n this.eventService.edit(this.model, formElements).pipe(first()).subscribe( entity => {\r\n // Atualizando o ID dos componentes criados.\r\n // Com isso a próxima ação de salvar será reconhecida como uma edição\r\n this.id = entity.id;\r\n this.glUpdateCreateId(this.id);\r\n this.entitySaved(entity);\r\n \r\n },\r\n error => this.entitySaveError(error));\r\n\r\n }\r\n\r\n saveCreatedModel(){\r\n this.logger.debug('EventEditComponent.saveCreatedModel');\r\n\r\n const formElements = this.getFormElements();\r\n\r\n this.eventService.create(this.model, formElements).pipe(first()).subscribe( entity => {\r\n // Atualizando o ID dos componentes criados.\r\n // Com isso a próxima ação de salvar será reconhecida como uma edição\r\n this.id = entity.id;\r\n this.glUpdateCreateId(this.id);\r\n this.entitySaved(entity);\r\n \r\n },\r\n error => this.entitySaveError(error));\r\n }\r\n\r\n /**\r\n * Mapeia elementos que serão inseridos nas chamadas de criação/edição dos eventos\r\n */\r\n getFormElements() {\r\n const formElements = new Map();\r\n \r\n if(this.attachmentFile1){\r\n formElements.set('attachmentOpFile1', this.attachmentFile1);\r\n }\r\n\r\n if(this.attachmentFile2){\r\n formElements.set('attachmentOpFile2', this.attachmentFile2);\r\n }\r\n\r\n if(this.attachmentFile3){\r\n formElements.set('attachmentOpFile3', this.attachmentFile3);\r\n }\r\n\r\n if(this.attachmentFile4){\r\n formElements.set('attachmentOpFile4', this.attachmentFile4);\r\n }\r\n\r\n if(this.attachmentFile5){\r\n formElements.set('attachmentOpFile5', this.attachmentFile5);\r\n }\r\n\r\n return formElements;\r\n }\r\n\r\n updateAttachmentData() {\r\n if(this.model['attachmentOpFile1']) \r\n this.getAttachmentFile(this.model['attachmentOpFile1'], AttachmentNumber.ONE );\r\n\r\n if(this.model['attachmentOpFile2'])\r\n this.getAttachmentFile(this.model['attachmentOpFile2'], AttachmentNumber.TWO );\r\n\r\n if(this.model['attachmentOpFile3'])\r\n this.getAttachmentFile(this.model['attachmentOpFile3'], AttachmentNumber.THREE);\r\n\r\n if(this.model['attachmentOpFile4'])\r\n this.getAttachmentFile(this.model['attachmentOpFile4'], AttachmentNumber.FOUR);\r\n\r\n if(this.model['attachmentOpFile5'])\r\n this.getAttachmentFile(this.model['attachmentOpFile5'], AttachmentNumber.FIVE);\r\n \r\n }\r\n \r\n getAttachmentFile(fileData: AttachmentModel, attachmentNumber: AttachmentNumber){\r\n this.eventService.loadAttachmentFile(fileData).pipe(first()).subscribe( (file) => {\r\n switch(attachmentNumber){\r\n case AttachmentNumber.ONE:\r\n this.attachmentFile1 = file;\r\n break;\r\n case AttachmentNumber.TWO:\r\n this.attachmentFile2 = file;\r\n break;\r\n case AttachmentNumber.THREE:\r\n this.attachmentFile3 = file;\r\n break;\r\n case AttachmentNumber.FOUR:\r\n this.attachmentFile4 = file;\r\n break; \r\n case AttachmentNumber.FIVE: \r\n this.attachmentFile5 = file;\r\n break;\r\n } \r\n }, (error: any) => this.logger.error(error));\r\n }\r\n\r\n sourceSelectionChanged(source){\r\n this.showCNCLGroup = source.indexOf (this.stringCNCL) != -1 ? true : false;\r\n //Carrega a lista de Ações Principais na aba Resultados de acordo com a origem selecionada\r\n this.reloadEventMainActions();\r\n }\r\n}\r\n","\r\nexport class ValidationNoteModel {\r\n \r\n public date: number;\r\n public author: string;\r\n public note: string;\r\n\r\n constructor(date:number, author:string, note:string) {\r\n this.date = date;\r\n this.author = author;\r\n this.note = note;\r\n }\r\n}\r\n","import LanguageUtils from '../service/util/language-utils';\r\nimport {EntityModel} from './entity.model';\r\n\r\nexport class EventMainActionModel extends EntityModel {\r\n sourceType: string;\r\n action: string;\r\n comment: string;\r\n done: boolean;\r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['sourceType'] = 'Origem';\r\n LanguageUtils.languageMap['action'] = 'Ação Principal';\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CompanyEditComponent } from './company/company-edit/company-edit.component';\r\nimport { CompanyListComponent } from './company/company-list/company-list.component';\r\nimport { PlacementEditComponent } from './placement/placement-edit/placement-edit.component';\r\nimport { PlacementListComponent } from './placement/placement-list/placement-list.component';\r\nimport { UserEditComponent } from './user/user-edit/user-edit.component';\r\nimport { UserListComponent } from './user/user-list/user-list.component';\r\nimport { VehicleEditComponent } from './vehicle/vehicle-edit/vehicle-edit.component';\r\nimport { VehicleListComponent } from './vehicle/vehicle-list/vehicle-list.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { PatrolTeamEditComponent } from './patrolTeam/patrol-team-edit/patrol-team-edit.component';\r\nimport { PatrolTeamListComponent } from './patrolTeam/patrol-team-list/patrol-team-list.component';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { IConfig, NgxMaskModule } from 'ngx-mask';\r\nimport { EventMainActionsListComponent } from './event-main-actions/event-main-actions-list/event-main-actions-list.component';\r\nimport { EventMainActionsEditComponent } from './event-main-actions/event-main-actions-edit/event-main-actions-edit.component';\r\nimport { GeneralModule } from 'src/app/general/general.module';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { PointListComponent } from './point/point-list/point-list.component';\r\nimport { PointEditComponent } from './point/point-edit/point-edit.component';\r\nimport { PointFilterDialogComponent } from './point/point-filter-dialog/point-filter-dialog.component';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { FormEditComponent } from './form/form-edit/form-edit.component';\r\nimport { FormListComponent } from './form/form-list/form-list.component';\r\nimport { FormFilterDialogComponent } from './form/form-filter-dialog/form-filter-dialog.component';\r\nimport { QuestionFormComponent } from './form/question-form/question-form.component';\r\nimport {MatTreeModule} from '@angular/material/tree';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { ObservedAreaListComponent } from './observed-area/observed-area-list/observed-area-list.component';\r\nimport { ObservedAreaEditComponent } from './observed-area/observed-area-edit/observed-area-edit.component';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { ObservedAreaFilterComponent } from './observed-area/observed-area-filter/observed-area-filter.component';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { ProfileListComponent } from './profile/profile-list/profile-list.component' ;\r\nimport { ProfileEditComponent } from './profile/profile-edit/profile-edit.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\n\r\nexport const options: Partial | (() => Partial) = null;\r\n\r\n@NgModule({\r\n declarations: [\r\n CompanyEditComponent,\r\n CompanyListComponent,\r\n PatrolTeamEditComponent,\r\n PatrolTeamListComponent,\r\n PlacementEditComponent,\r\n PlacementListComponent,\r\n UserEditComponent,\r\n UserListComponent,\r\n VehicleEditComponent,\r\n VehicleListComponent,\r\n EventMainActionsListComponent,\r\n EventMainActionsEditComponent,\r\n PointListComponent,\r\n PointEditComponent,\r\n PointFilterDialogComponent,\r\n FormEditComponent,\r\n FormListComponent,\r\n FormFilterDialogComponent,\r\n QuestionFormComponent,\r\n ObservedAreaListComponent,\r\n ObservedAreaEditComponent,\r\n ObservedAreaFilterComponent,\r\n ProfileListComponent,\r\n ProfileEditComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n FlexLayoutModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatSlideToggleModule,\r\n MatInputModule,\r\n MatTableModule,\r\n MatTabsModule,\r\n MatSortModule,\r\n MatTreeModule,\r\n MatButtonModule,\r\n MatPaginatorModule,\r\n MatCheckboxModule,\r\n MatSelectModule,\r\n MatDialogModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatDividerModule,\r\n MatDatepickerModule,\r\n MatRadioModule,\r\n MatMenuModule,\r\n MatSlideToggleModule,\r\n MatSidenavModule,\r\n MatExpansionModule,\r\n MatChipsModule,\r\n MatAutocompleteModule,\r\n GeneralModule,\r\n ReactiveFormsModule,\r\n NgxMaskModule.forRoot(),\r\n ]\r\n})\r\nexport class RegistrationsModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-blank',\r\n templateUrl: './blank.component.html',\r\n styleUrls: ['./blank.component.scss']\r\n})\r\nexport class BlankComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","/**\r\n * Classe abstrata de sinais recebidos do app ou veículo.\r\n */\r\nexport abstract class AbstractSignalModel {\r\n\r\n public mobileObjectId: string; // userId para App, plate para Veículo\r\n public timestamp: number;\r\n\r\n public latitude: number;\r\n public longitude: number;\r\n public sourceType: string;\r\n\r\n public teamId: string;\r\n public operationId: string;\r\n public operationType: string;\r\n public operationStatus: string;\r\n \r\n public receivedTimestamp: number;\r\n\r\n constructor(){}\r\n}\r\n","/* (ignored) */","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { EventListComponent } from './event-list/event-list.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { RouterModule } from '@angular/router';\r\nimport { EventService } from 'src/app/service/model/event.service';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { EventFilterComponent } from './event-filter/event-filter.component';\r\nimport { EventEditComponent } from './event-edit/event-edit.component';\r\nimport { EventMainActionDialogComponent } from './event-action-dialog/event-main-action-dialog.component';\r\nimport { GeneralModule } from 'src/app/general/general.module';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\n\r\n\r\nimport { EventValidationNoteDialogComponent } from './event-validation-note-dialog/event-validation-note-dialog.component';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { VerificationModule } from '../verification/verification.module';\r\nimport { VerificationService } from '../../service/model/verification.service';\r\nimport { PatrolService } from '../../service/model/patrol.service';\r\n\r\n@NgModule({\r\n declarations: [\r\n EventListComponent,\r\n EventFilterComponent,\r\n EventEditComponent,\r\n EventMainActionDialogComponent,\r\n EventValidationNoteDialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n MatFormFieldModule,\r\n FlexLayoutModule,\r\n MatInputModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n MatExpansionModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatDividerModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatChipsModule,\r\n MatRadioModule,\r\n MatDialogModule,\r\n MatDatepickerModule,\r\n MatSelectModule,\r\n MatGridListModule,\r\n MatMenuModule,\r\n MatTabsModule,\r\n MatSlideToggleModule,\r\n MatSidenavModule,\r\n GeneralModule,\r\n VerificationModule,\r\n NgxMaskModule.forRoot()\r\n ],\r\n exports: [\r\n EventListComponent\r\n ],\r\n providers: [\r\n EventService,\r\n PatrolService,\r\n VerificationService\r\n ]\r\n})\r\nexport class EventModule { }\r\n","import { GeoModel } from './geo.model';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nexport class SimfModel extends GeoModel{\r\n band: string; // Nome da faixa\r\n bandId: string; // Id da faixa\r\n stretch: string; // Nome do trecho\r\n extension: string;\r\n\r\n nameCombo: string; // Para o filtro de alertas\r\n\r\n public static getPopupContent(feature): string{\r\n\r\n if (feature && feature.properties){\r\n \r\n const simf = feature.properties as SimfModel;\r\n\r\n let states: string = simf.states ? simf.states.toString() : '';\r\n let contents: string = `
SIMF
\r\n
${ simf.name }
\r\n
Faixa: ${simf.band? simf.band: ''}
\r\n
Trecho: ${simf.stretch? simf.stretch: ''}
\r\n
Extensão (m): ${simf.extension? simf.extension: ''}
\r\n
UF(s): ${states}
\r\n `;\r\n if (!environment.showPopupLayerTables || simf.description == null || simf.description === \"\") { \r\n return contents;\r\n }\r\n else {\r\n return contents + \"

\" + simf.description\r\n }\r\n }\r\n\r\n return `
Sem Dados
`;\r\n }\r\n}\r\n\r\n\r\n","/* (ignored) */","import { GeoModel } from './geo.model';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nexport class DcModel extends GeoModel {\r\n duct: string; // Nome do duto\r\n occurrence: string;\r\n date: string;\r\n time: string;\r\n km: string;\r\n city: string;\r\n year: string;\r\n place: string;\r\n identificationMode: string;\r\n\r\n public static getPopupContent(feature, search: boolean = false): string{\r\n const dc = feature.properties as DcModel;\r\n\r\n // Obs: Não tem nome\r\n \r\n let states: string = dc.states ? dc.states.toString() : '';\r\n let date: string = dc.date ? dc.date : '';\r\n let time: string = dc.time ? dc.time : '';\r\n let occurrence: string = dc.occurrence ? dc.occurrence : '';\r\n let place: string = dc.place ? dc.place : '';\r\n let duct: string = dc.duct ? dc.duct : '';\r\n let identificationMode: string = dc.identificationMode ? dc.identificationMode : '';\r\n let latLong: string = GeoModel.getLatLong(dc);\r\n let km: string = dc.km ? dc.km : '';\r\n let city: string = dc.city ? dc.city : '';\r\n let contents:string = `
DC
\r\n
${ dc.name }
\r\n
Local: ${place}
\r\n
Ocorrência: ${occurrence}
\r\n
Modo de Identificação: ${identificationMode}
\r\n
Data/Hora: ${date} ${time}
\r\n
Duto/Trecho: ${duct}
\r\n
KM: ${km}
\r\n
Cidade: ${city}
\r\n
UF(s): ${states}
\r\n
Lat, Long: ${!search? latLong: ''}
\r\n `;\r\n\r\n if (!environment.showPopupLayerTables || dc.description == null || dc.description === \"\") { \r\n return contents;\r\n }\r\n else {\r\n return contents + \"
\" + dc.description\r\n }\r\n }\r\n\r\n public static updateName(dc: DcModel) {\r\n if (!dc.name) {\r\n let desc: Array = dc.description.split(\"
\");\r\n dc.name = desc[0];\r\n if (desc[1] !== undefined) {\r\n dc.name += \", \" + desc[1];\r\n }\r\n }\r\n }\r\n}\r\n","import { RouteModel } from './route.model';\r\nimport { InspectionModel } from './inspection.model';\r\nimport { PatrolTeamModel } from './patrolteam.model';\r\nimport { CommonModel } from './common.model';\r\nimport { FormModel } from './form.model';\r\nimport { OperationStatusDescription, OperationType, OperationTypeDescription } from './enums.enum';\r\nimport { PlacementModel } from './placement.model';\r\nimport { CompanyModel } from './company.model';\r\nimport { AttachmentModel } from './attachment.model';\r\nimport LanguageUtils from '../service/util/language-utils';\r\n\r\nexport abstract class OperationModel extends CommonModel {\r\n startDate: number; // Em Rondas é a data prevista de início, em Verificações é inicializada com o mesmo valor de sentDate\r\n updatedAt: number;\r\n priority: boolean;\r\n expired: boolean;\r\n observations: string;\r\n route: RouteModel;\r\n inspections: InspectionModel[];\r\n patrolTeam: PatrolTeamModel;\r\n type: string;\r\n autoRoute: boolean;\r\n forms: FormModel[];\r\n stretch: string;\r\n band: string;\r\n duct: string;\r\n km: string;\r\n placement : PlacementModel;\r\n company: CompanyModel;\r\n serviceType: string;\r\n executedPoints: string;\r\n valve: string;\r\n latLong: string;\r\n stretchStartKM: string;\r\n stretchEndKM: string;\r\n stretchStartLatLong: string;\r\n stretchEndLatLong: string;\r\n situationFound: string;\r\n dateSituationFound: number;\r\n attachmentOpFile1: AttachmentModel;\r\n attachmentOpFile2: AttachmentModel;\r\n attachmentOpFile3: AttachmentModel;\r\n attachmentOpFile4: AttachmentModel;\r\n attachmentOpFile5: AttachmentModel;\r\n\r\n // usados apenas no front-end: \r\n lastSync: number;\r\n\r\n static getPopupContent(operation: OperationModel): string {\r\n const priorityName = operation.priority? (operation.type==OperationType.PATROL? \" (Bloqueada)\": \" (Prioritária)\"): \"\";\r\n return `
${OperationTypeDescription[operation.type] } ${operation.identifier} - ${ OperationStatusDescription[operation.status ] + priorityName }
\r\n ${operation.type == OperationType.PATROL? '
Nome da Ronda: ' + (operation as any).name + '
' : ''}\r\n `;\r\n }\r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['priority'] = 'Prioritária/Bloqueada';\r\n LanguageUtils.languageMap['route'] = 'KML de Rota';\r\n LanguageUtils.languageMap['inspections'] = 'Pontos';\r\n LanguageUtils.languageMap['patrolTeam'] = 'Equipe';\r\n LanguageUtils.languageMap['situationFound'] = 'Quadro Encontrado';\r\n LanguageUtils.languageMap['valve'] = 'Válvula';\r\n LanguageUtils.languageMap['attachmentOpFile1'] = 'Anexo 1';\r\n LanguageUtils.languageMap['attachmentOpFile2'] = 'Anexo 2';\r\n LanguageUtils.languageMap['attachmentOpFile3'] = 'Anexo 3';\r\n LanguageUtils.languageMap['attachmentOpFile4'] = 'Anexo 4';\r\n LanguageUtils.languageMap['attachmentOpFile5'] = 'Anexo 5';\r\n LanguageUtils.languageMap['autoRoute'] = 'Rota Automatizada';\r\n LanguageUtils.languageMap['forms'] = 'Formulários';\r\n LanguageUtils.languageMap['valve'] = 'Válvula';\r\n }\r\n}\r\n","
\r\n\r\n
\r\n \r\n
{{title}}
[ {{getListCount()}} ]\r\n
\r\n
\r\n \r\n search\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n sync\r\n refresh\r\n sync_problem\r\n {{markersConnectionState.text}}\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n Filtro\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
# \r\n
{{ (element?.newMessagesCount > 99)? '99+' : element?.newMessagesCount }}
\r\n
Nome do Canal {{ element?.name }} Data/Hora {{ element?.lastMessageReceivedTimestamp | date:'dd/MM/yyyy HH:mm:ss' }} Empresa {{ element?.company?.name }} Tipo {{ channelTypeDescription[element?.type] }} Lotação {{ getPlacementName(element) }} UF {{ element?.company?.uf }}
\r\n
\r\n\r\n \r\n \r\n\r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n Participantes do Canal: {{ selectedChannel ? selectedChannel?.name : \"Selecione o Canal\" }} \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
Nome {{ element?.name }} Login {{ element?.login }} Empresa {{ element?.company?.name }} Lotação {{ getUserPlacementName(element) }} Perfil {{ getProfileName(element) }}
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n","import { ChangeDetectorRef, Component, Inject, OnDestroy, OnInit, ViewChild, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs';\r\nimport { first, map } from 'rxjs/operators';\r\nimport { MarkerFilterModel } from 'src/app/general/message/marker.filter.model';\r\nimport { MessageComponent, MessageComponentType } from 'src/app/general/message/message.component';\r\nimport { ChannelModel } from 'src/app/model/channel.model';\r\nimport { ChannelType, ChannelTypeDescription, OperationStatus, OperationType, Permission, UserType } from 'src/app/model/enums.enum';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { PatrolTeamModel } from 'src/app/model/patrolteam.model';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { ChannelService } from 'src/app/service/model/channel.service';\r\nimport { PatrolService } from 'src/app/service/model/patrol.service';\r\nimport { VerificationService } from 'src/app/service/model/verification.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { OperationService } from 'src/app/service/model/operation.service';\r\nimport { OperationFilterModel } from 'src/app/general/filter-component/operation.filter.model';\r\nimport { CHANNEL_PAGE_SIZE, ESP, MEMBERS_PAGE_SIZE, PATROL_UPDATE_EVENT, REGISTRATION_UPDATE_EVENT, SHIFT_DURATION, VERIFICATION_UPDATE_EVENT } from 'src/app/common/constants';\r\nimport { ListComponent } from '../../list-component';\r\nimport { ChannelFilterModel } from '../channel-filter/channel.filter.model';\r\nimport { RegistrationType } from '../../../model/enums.enum';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { AuthenticationService } from '../../login/login-services/authentication.service';\r\nimport { MarkerModel } from 'src/app/model/marker.model';\r\nimport { Websocket } from 'src/app/service/websocket/websocket';\r\nimport { StompState } from '@stomp/ng2-stompjs';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport ListUtils from 'src/app/service/util/list-utils';\r\nimport { PlacementModel } from 'src/app/model/placement.model';\r\nimport * as moment from 'moment';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { UserModel } from 'src/app/model/user.model';\r\nimport { ChannelUsersService } from 'src/app/service/model/channel.users.service';\r\nimport { ChannelUsersModel } from 'src/app/model/channel.users.model';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { UserService } from 'src/app/service/model/user.service';\r\n\r\n/** WEBSOCKET STATES */\r\nconst DISCONNECTED = { value: 0, text: 'Mensagens Desconectado' };\r\nconst CONNECTING = { value: 1, text: 'Mensagens Conectando' };\r\nconst CONNECTED = { value: 2, text: 'Mensagens Conectado' };\r\n\r\nexport class TypeChannels {\r\n name : string; // Enum do tipo\r\n value : string; // Descrição do tipo\r\n};\r\n\r\n@ProfileClassToConsole()\r\n@Component({\r\n selector: 'app-channel-list',\r\n templateUrl: './channel-list.component.html',\r\n styleUrls: ['./channel-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ChannelListComponent extends ListComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild('sidenav') sidenav: MatSidenav;\r\n openedSideList: boolean = false;\r\n\r\n channelTypeDescription = ChannelTypeDescription;\r\n\r\n selectedChannel: ChannelModel;\r\n\r\n markerFilterModel: MarkerFilterModel;\r\n filterModel: ChannelFilterModel\r\n\r\n // Depeendem do canal selecionado\r\n currentTeam: PatrolTeamModel;\r\n currentOperation: OperationModel;\r\n\r\n selectedComponentType = MessageComponentType.CHANNEL_MESSAGE;\r\n\r\n // Lista de todos os canais sem restrições\r\n allChannels: ChannelModel[];\r\n\r\n // this.model vai conter a lista de canais filtrada pelo filtro\r\n\r\n // Lista de canais permitidos ao usuário logado\r\n allowedChannels: ChannelModel[] = [];\r\n \r\n // Lista de tipos canais permitidos ao usuário logado\r\n allowedChannelTypes: TypeChannels[] = [];\r\n \r\n // Lista de lotações permitidos ao usuário logado\r\n allowedPlacements: PlacementModel [] = [];\r\n\r\n private loadOperationSubscription: Subscription;\r\n private onNewMarkerReceivedSubscription: Subscription;\r\n private updateInMemoryChannelsSubscription: Subscription;\r\n\r\n authenticatedSubscription: Subscription;\r\n\r\n markersConnectionState: {value: number, text: string} = DISCONNECTED;\r\n private markersWebsocket: Websocket;\r\n private markersWebsocketStateSubscription: Subscription;\r\n\r\n /** Componentes de mensagem */\r\n @ViewChild('messageComponent', { static: true }) messageComponent: MessageComponent;\r\n\r\n @ViewChild('membersPagination', { static: true }) membersPaginator: MatPaginator;\r\n\r\n @ViewChild('membersMatSort', { static: true }) membersSort: MatSort\r\n \r\n membersDataSource: MatTableDataSource;\r\n\r\n /** The list of columns to display on the grid */\r\n membersDisplayedColumns: string[];\r\n\r\n showMessages: boolean = true;\r\n\r\n channelUsersMap = new Map();\r\n\r\n membersPageSize = environment.defaultPageSize;\r\n membersPageLength = undefined;\r\n\r\n constructor(logger: NGXLogger,\r\n storageService: StorageService,\r\n protected toastr: ToastrService,\r\n public authorizationService: AuthorizationService,\r\n dialog: MatDialog,\r\n private userService: UserService,\r\n private channelService: ChannelService,\r\n public entityCacheService: EntityCacheService,\r\n private patrolService: PatrolService,\r\n private channelUsersService: ChannelUsersService,\r\n private verificationService: VerificationService,\r\n private authenticationService: AuthenticationService,\r\n protected changeDetector: ChangeDetectorRef,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, channelService, dialog, toastr, 'channels', environment.CHANNEL_GROUP_LABEL, environment.CHANNEL_TITLE_LABEL,\r\n \"Canal\", storageService, changeDetector, goldenLayout, container);\r\n logger.debug('ChannelListComponent.constructor()');\r\n\r\n this.sortOptions = 'lastMessageReceivedTimestamp,DESC';\r\n this.pageSize = CHANNEL_PAGE_SIZE;\r\n this.membersPageSize = MEMBERS_PAGE_SIZE;\r\n\r\n this.filterModel = new ChannelFilterModel();\r\n this.markerFilterModel = new MarkerFilterModel();\r\n }\r\n\r\n ngOnInit(): void { \r\n this.logger.debug('ChannelListComponent.ngOnInit()');\r\n \r\n this.displayedColumns = ['newMessagesCount',\r\n 'name',\r\n 'lastMessageReceivedTimestamp',\r\n 'company.name',\r\n 'type',\r\n 'company.placement.name',\r\n 'company.uf'];\r\n\r\n this.membersDisplayedColumns = ['name',\r\n 'login',\r\n 'company.name',\r\n 'originPlacement.name',\r\n 'profile.name'];\r\n\r\n super.ngOnInit();\r\n\r\n this.membersSort.sort({id: this.getDefaultMembersSortColumn(), start: this.getDefaultMembersSortDirection(), disableClear: false});\r\n\r\n this.updateTabTitle();\r\n this.loggedUser = this.storageService.getLocalUser();\r\n this.subscribeToPatrolUpdateEvent();\r\n this.subscribeToVerificationUpdateEvent();\r\n this.subscribeToRegistrationUpdateEvent();\r\n\r\n this.subscribeToNewChannelMessageReceived();\r\n this.subscribeOnAuthenticatedStatus();\r\n this.subscribeToMarkersWebsocketStatusCheck();\r\n\r\n if (!this.authorizationService.getLoggedUserType()) {\r\n this.allowedChannelTypes = [];\r\n this.allowedPlacements = [];\r\n this.clearFilter();\r\n }\r\n else {\r\n this.updateAllowedChannelTypes(); // Depende de autenticação\r\n this.updateAllowedPlacements(); // Depende de autenticação\r\n this.clearFilter();\r\n this.loadRecordsFromServer(); \r\n }\r\n }\r\n\r\n protected getDefaultMembersSortColumn(): string {\r\n return \"name\";\r\n }\r\n\r\n protected getDefaultMembersSortDirection(): 'asc' | 'desc' {\r\n return 'asc';\r\n }\r\n\r\n private updateTabTitle() {\r\n const title = environment.CHANNEL_GROUP_LABEL;\r\n const channelsWithNewMessagesCount = this.channelService.channelCountWithNewMessages();\r\n if (channelsWithNewMessagesCount > 0) {\r\n this.glUpdateTabTitle(title + ' (' + channelsWithNewMessagesCount + ')');\r\n } else {\r\n this.glUpdateTabTitle(title);\r\n }\r\n }\r\n\r\n /**Como a tela de mensagem é carregado no início, é preciso verificar se o usuario tem permissão e se sim, realizar o filtro precisa das permissões do usuário */\r\n subscribeOnAuthenticatedStatus() {\r\n this.authenticatedSubscription = this.authenticationService.authenticated$.subscribe(authenticated => {\r\n this.logger.debug('ChannelListComponent.OnAuthenticatedStatus() - ' + authenticated);\r\n if (authenticated) {\r\n\r\n if(!this.authorizationService.userHasPermission(this.permission.LIST_CHANELS)){\r\n this.glRemoveLayout('channels');\r\n return;\r\n } \r\n\r\n this.loggedUser = this.storageService.getLocalUser();\r\n this.updateAllowedChannelTypes(); // Depende de autenticação\r\n this.updateAllowedPlacements(); // Depende de autenticação\r\n this.clearFilter();\r\n this.loadRecordsFromServer();\r\n }\r\n });\r\n }\r\n\r\n /** Verifica o estado da conexão com o websocket de sinais */\r\n private subscribeToMarkersWebsocketStatusCheck(){\r\n this.markersWebsocket = Websocket.createSignalsWebsocket();\r\n this.markersWebsocketStateSubscription = this.markersWebsocket.state().subscribe((state: StompState) => {\r\n if (state === 0 || state === 3){\r\n this.markersConnectionState = DISCONNECTED;\r\n }else if (state === 1){\r\n this.markersConnectionState = CONNECTING;\r\n }else if (state === 2){\r\n this.markersConnectionState = CONNECTED;\r\n }\r\n }, error => this.logger.error(error));\r\n }\r\n\r\n updateAllowedPlacements() {\r\n this.entityCacheService.loadPlacements(this.loadingListService, () =>{\r\n this.allowedPlacements = this.entityCacheService.getPlacements();\r\n \r\n this.onChannelOptionFilterChange(); \r\n this.onFilter(true); \r\n });\r\n }\r\n\r\n updateAllowedChannelTypes() {\r\n const allChannelTypes: TypeChannels [] = Object.keys(ChannelTypeDescription).map((name) => {\r\n return {\r\n name,\r\n value: ChannelTypeDescription[name as keyof typeof ChannelTypeDescription],\r\n };\r\n });\r\n\r\n this.allowedChannelTypes = [];\r\n\r\n if (this.authorizationService.isAdmin()) {\r\n // Acrescenta todos\r\n this.allowedChannelTypes = allChannelTypes;\r\n }\r\n else {\r\n // Só acrescenta se está na lista do perfil\r\n const permissionOptions = this.authorizationService.getUserPermissionOptions(this.permission.LIST_CHANELS);\r\n if (permissionOptions && permissionOptions.fields && permissionOptions.fields.length > 0) {\r\n const channelTypeNames = permissionOptions.fields;\r\n allChannelTypes.forEach(element => {\r\n if(channelTypeNames.find(name => name === element.name)) {\r\n this.allowedChannelTypes.push(element);\r\n } \r\n });\r\n }\r\n }\r\n }\r\n\r\n buildDataSource() {\r\n // Tem uma lista de canais guardada no channelService que contém também a contagem de mensagens não lidas\r\n // this.model vai ser atualizado com a contagem\r\n this.channelService.updateChannels(this.model as ChannelModel[]);\r\n super.buildDataSource();\r\n }\r\n\r\n postLoadProcess() { \r\n this.logger.debug(\"ChannelListComponent.postLoadProcess\");\r\n this.loggedUser = this.storageService.getLocalUser();\r\n\r\n this.allChannels = this.model as ChannelModel [];\r\n\r\n this.onChannelOptionFilterChange(); // Os campos do filtro lateral dependem da lista de canais ter sido carregada\r\n this.onFilter(false);\r\n\r\n // Depois que ler os canais do backend, carregamnos a contagem de mensagens não lidas para todos os canais\r\n this.channelService.getUnreadMessagesByUser(this.loggedUser.id).toPromise().then(response => {\r\n this.channelService.updateInMemoryChannels(response);\r\n this.updateTabTitle();\r\n this.buildDataSource();\r\n }).catch((err) => {\r\n this.logger.error(\"Erro ao carregar contagem de mensagens não lidas:\", err);\r\n });\r\n }\r\n\r\n onFilter(updateDataSource: boolean){\r\n // Filtra allowedChannels por filterModel.channelIds para obter this.model\r\n if (this.filterModel.channelIds.length > 0) {\r\n this.model = this.allowedChannels.filter(channel => this.filterModel.channelIds.includes(channel.id));\r\n }\r\n else {\r\n this.model = this.allowedChannels;\r\n }\r\n\r\n if (updateDataSource) super.buildDataSource(); // Para reordenar a lista apenas\r\n }\r\n\r\n copyModel(src) {\r\n return JSON.parse(JSON.stringify(src));\r\n }\r\n\r\n clearFilter(){\r\n // Somente limpa o filtro, não aplica\r\n this.filterModel.channelTypes = [];\r\n this.allowedChannelTypes.forEach(t => {\r\n this.filterModel.channelTypes.push(t.name);\r\n });\r\n this.filterModel.placementNames = this.allowedPlacements.map(p => p.name);\r\n this.filterModel.channelIds = [];\r\n\r\n this.onChannelOptionFilterChange();\r\n }\r\n\r\n onChannelOptionFilterChange(){\r\n if(!this.allChannels) return;\r\n\r\n this.allowedChannels = this.allChannels.filter((channel: ChannelModel) => {\r\n let match = true;\r\n\r\n if(this.filterModel.channelTypes.length > 0){\r\n match = this.filterModel.channelTypes.includes(channel.type);\r\n }\r\n\r\n // Só filtra lotações para canais que não são esses 3 tipos\r\n if (match && channel.type != ChannelType.CNCL && channel.type != ChannelType.CORE && channel.type != ChannelType.MANAGERIAL ) {\r\n if(this.filterModel.placementNames.length > 0){\r\n match = this.filterModel.placementNames.includes(channel.referencedName);\r\n }\r\n else {\r\n let placementNames = this.allowedPlacements.map( p => p.name);\r\n match = placementNames.includes(channel.referencedName);\r\n }\r\n }\r\n\r\n return match;\r\n });\r\n\r\n ListUtils.orderSimpleModelList(this.allowedChannels);\r\n }\r\n \r\n ngOnDestroy(): void {\r\n this.loggedUser = this.storageService.getLocalUser();\r\n if(!this.loggedUser || !this.loggedUser.id ) return;\r\n\r\n super.ngOnDestroy();\r\n\r\n this.loadOperationSubscription?.unsubscribe();\r\n this.onNewMarkerReceivedSubscription?.unsubscribe();\r\n this.updateInMemoryChannelsSubscription?.unsubscribe();\r\n this.authenticatedSubscription?.unsubscribe();\r\n this.markersWebsocketStateSubscription?.unsubscribe();\r\n\r\n this.glUnSubscribeEvent(REGISTRATION_UPDATE_EVENT);\r\n this.glUnSubscribeEvent(PATROL_UPDATE_EVENT);\r\n this.glUnSubscribeEvent(VERIFICATION_UPDATE_EVENT);\r\n }\r\n\r\n private updateChannelNewMessage(updatedChannel: ChannelModel) {\r\n if (!this.allChannels) return;\r\n\r\n // Só notifica se for mensagem nova em canal que não esteja filtrado\r\n let index = this.model.findIndex((channel: ChannelModel) => channel.id === updatedChannel.id);\r\n if (index != -1) {\r\n if (updatedChannel.newMessagesCount > 0 &&\r\n (this.sort.active != 'lastMessageReceivedTimestamp' || // não é a coluna de data hora\r\n this.sort.direction != 'desc')) { // ou não está na ordenação decrescente (não avisa se estiver na ordenação padrão)\r\n this.toastr.info('Você tem novas mensagens!');\r\n }\r\n }\r\n\r\n index = this.allChannels.findIndex((channel: ChannelModel) => channel.id === updatedChannel.id);\r\n if (index != -1) {\r\n if (this.selectedChannel && updatedChannel.id == this.selectedChannel.id) {\r\n updatedChannel.newMessagesCount = 0;\r\n }\r\n\r\n this.allChannels[index] = updatedChannel;\r\n }\r\n\r\n this.updateTabTitle();\r\n super.buildDataSource(); // Para reordenar a lista apenas\r\n }\r\n\r\n private subscribeToNewChannelMessageReceived() {\r\n this.onNewMarkerReceivedSubscription = this.channelService.onChannelUpdated().subscribe((updatedChannel: ChannelModel) => {\r\n if (updatedChannel) {\r\n // Neste ponto o canal já foi incrementado no channelService, basta atualizar o canal na lista aqui\r\n this.updateChannelNewMessage(updatedChannel);\r\n }\r\n }), (error: any) => {\r\n let errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';\r\n this.logger.error(`[marker.component.ts] subscribeToNewMarkersNotifications: ${errMsg}`);\r\n };\r\n }\r\n\r\n private reloadUserData() {\r\n this.loggedUser = this.storageService.getLocalUser();\r\n this.userService.getUserFromEmail(this.loggedUser.email.toLocaleLowerCase()).pipe(first()).subscribe((user:UserModel)=>{\r\n if(user){ // existe usuário\r\n const token = this.loggedUser.token;\r\n this.loggedUser = user;\r\n this.loggedUser.token = token;\r\n\r\n // Chama novamente depois de carregar os dados do usuário (ver createSession)\r\n this.storageService.setLocalUser(this.loggedUser);\r\n\r\n let perm = this.authorizationService.userHasPermission(Permission.ACCESS_TO_ALL_PLACEMENT);\r\n if(!perm){\r\n // Se não tem a permissão de acessar todas as lotações \r\n let userPlacements : string[] = [];\r\n userPlacements = userPlacements.concat(user?.placements.map(( { id }) => id));\r\n \r\n if(user.originPlacement && userPlacements.length > 0 && !userPlacements.includes(user?.originPlacement.id) ){\r\n userPlacements.push(user.originPlacement.id);\r\n }\r\n \r\n this.storageService.setSpecificPlacementIds(userPlacements);\r\n\r\n this.allowedPlacements = user.placements;\r\n\r\n this.clearFilter();\r\n this.onFilter(true);\r\n this.buildDataSource();\r\n }\r\n }\r\n });\r\n }\r\n\r\n private subscribeToRegistrationUpdateEvent() {\r\n this.glSubscribeEvent(REGISTRATION_UPDATE_EVENT, (data) => {\r\n this.loggedUser = this.storageService.getLocalUser();\r\n if (data.registrationType === RegistrationType.USER) {\r\n if (this.loggedUser.id == data.id) {\r\n // TODO scuri Eu acho que isso deveria ficar no AppComponent e não aqui\r\n this.reloadUserData();\r\n }\r\n }\r\n else if (data.registrationType === RegistrationType.CHANNEL) {\r\n this.loadRecordsFromServer();\r\n this.loadChannelUsers(data.id);\r\n }\r\n else if (data.registrationType === RegistrationType.PROFILE) {\r\n if (this.loggedUser.profileId == data.id) {\r\n this.authenticationService.loadProfile(this.loggedUser);\r\n this.updateAllowedChannelTypes();\r\n }\r\n this.channelUsersMap.clear();\r\n if (this.selectedChannel) {\r\n this.loadChannelUsers(this.selectedChannel.id);\r\n }\r\n }\r\n else if (data.registrationType === RegistrationType.CHANNEL_RESET) {\r\n let index = this.channelService.getMessageData().findIndex(channel => data.id == channel.id);\r\n if (index != -1) {\r\n let channel = this.channelService.getMessageData()[index];\r\n this.channelService.setUnreadMessagesInChannel(data.id, 0);\r\n this.updateTabTitle();\r\n super.buildDataSource(); // Para reordenar a lista apenas\r\n this.logger.debug(\"onRegistrationUpdateEvent - ResetChannel: \" + channel.name);\r\n }\r\n } \r\n });\r\n }\r\n\r\n private subscribeToPatrolUpdateEvent() {\r\n this.glSubscribeEvent(PATROL_UPDATE_EVENT, (data) => {\r\n this.updateOperation(data.id, data.type, data.patrolTeamId, data.status);\r\n });\r\n }\r\n\r\n private subscribeToVerificationUpdateEvent() {\r\n this.glSubscribeEvent(VERIFICATION_UPDATE_EVENT, (data) => {\r\n this.updateOperation(data.id, data.type, data.patrolTeamId, data.status);\r\n });\r\n }\r\n\r\n private selectedChannelhasTeamOrOperation() {\r\n const channelOperationTypes = [ChannelType.PD_MOBILE, ChannelType.PD_TECHNICAL, ChannelType.CCPD];\r\n return (channelOperationTypes.includes(ChannelType[this.selectedChannel.type]))\r\n }\r\n\r\n private loadOperation(operationService: OperationService, operationId: string, operationType: string) {\r\n this.loadOperationSubscription = operationService.getRecord(operationId).pipe(first()).subscribe((operation: OperationModel) => {\r\n operation.type = operationType;\r\n // Atualizado quando a operação é atualizada\r\n this.currentOperation = operation;\r\n }, (error: any) => this.logger.error(error));\r\n }\r\n\r\n private updateOperation(id: string, type: string, patrolTeamId: string, status: string) {\r\n if (!this.selectedChannel) return;\r\n\r\n if (this.selectedChannelhasTeamOrOperation()) {\r\n if (this.currentTeam && patrolTeamId === this.currentTeam.id && status === OperationStatus.STARTED) {\r\n if (this.currentOperation && this.currentOperation.id != id) {\r\n if (type === OperationType.PATROL) {\r\n this.loadOperation(this.patrolService, id, type);\r\n } else {\r\n this.loadOperation(this.verificationService, id, type);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private resetUnreadChannelMessages() {\r\n this.channelService.resetUnreadChannelMessagesdByUser(this.loggedUser.id, this.loggedUser.profileId, this.selectedChannel.id);\r\n }\r\n\r\n onRefreshClick() {\r\n this.loadRecordsFromServer();\r\n }\r\n\r\n loadChannelUsers(id: string) {\r\n if (this.channelUsersMap.get(id) == null) {\r\n this.channelUsersService.getRecord(id).pipe(first()).subscribe((entity: ChannelUsersModel) => {\r\n entity.users.sort((a, b) => {\r\n let fa = a.name.toLowerCase(),\r\n fb = b.name.toLowerCase();\r\n if (fa < fb) {\r\n return -1;\r\n }\r\n if (fa > fb) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n this.channelUsersMap.set(entity.channel.id, entity.users);\r\n this.buildMembersDataSource();\r\n },\r\n error => {\r\n this.logger.debug(\"loadChannelUsers = canal não encontrado ou removido\");\r\n });\r\n }\r\n }\r\n\r\n getProfileName(user: UserModel):string {\r\n let profile = this.entityCacheService.getProfileById(user.profileId);\r\n if (profile) return profile.name;\r\n return \"\";\r\n }\r\n\r\n buildMembersDataSource(){\r\n if (!this.selectedChannel) return;\r\n \r\n this.membersDataSource = new MatTableDataSource(this.channelUsersMap.get(this.selectedChannel.id));\r\n\r\n this.membersDataSource.sortingDataAccessor = (data, sortHeaderId: string) => {\r\n return this.getPropertyByPath(data, sortHeaderId);\r\n };\r\n\r\n this.membersDataSource.sort = this.membersSort;\r\n \r\n if (!environment.useServerPagination){\r\n this.membersDataSource.paginator = this.membersPaginator;\r\n }\r\n\r\n this.renderComponent();\r\n }\r\n\r\n /** Evento de mudança na seleção do canal */\r\n onChannelSelection(channel: ChannelModel) {\r\n if (!channel) return;\r\n\r\n if (this.selectedChannel === channel) {\r\n return;\r\n }\r\n\r\n if (this.selectedChannel) {\r\n // envia reset do anterior antes de trocar\r\n this.resetUnreadChannelMessages();\r\n }\r\n\r\n this.selectedChannel = channel;\r\n this.markerFilterModel.channelId = channel.id;\r\n\r\n this.resetUnreadChannelMessages();\r\n this.updateTabTitle();\r\n super.buildDataSource(); // Para reordenar a lista apenas\r\n\r\n this.loadChannelUsers(channel.id);\r\n this.buildMembersDataSource();\r\n\r\n this.currentOperation = null;\r\n this.currentTeam = null;\r\n\r\n this.messageComponent.updateTitle(this.selectedChannel?.name);\r\n this.messageComponent.clearData();\r\n\r\n if (this.selectedChannel.type === ChannelType.PD_MOBILE || this.selectedChannel.type === ChannelType.PD_TECHNICAL) {\r\n this.loadPatrolTeam();\r\n } else {\r\n this.messageComponent.loadMarkers();\r\n }\r\n }\r\n\r\n private loadPatrolTeam() {\r\n this.entityCacheService.loadPatrolTeams(this.loadingListService, () => {\r\n let patrolTeam: PatrolTeamModel = this.entityCacheService.getPatrolTeamById(this.selectedChannel.referencedId); // referencedId é um patrolTeamId\r\n this.updatePatrolTeamData(patrolTeam);\r\n });\r\n }\r\n\r\n public getUnreadMessages(marker: MarkerModel) {\r\n return this.channelService.getUnreadMessagesInChannel(marker.id);\r\n }\r\n\r\n private async updatePatrolTeamData(patrolTeam: PatrolTeamModel) {\r\n this.currentTeam = patrolTeam;\r\n\r\n if (!patrolTeam) return;\r\n\r\n this.messageComponent.loadMarkers();\r\n\r\n await this.loadCurrentOperationByTeam(this.patrolService, OperationType.PATROL);\r\n if (!this.currentOperation) await this.loadCurrentOperationByTeam(this.verificationService, OperationType.EVENT_VERIFICATION);\r\n }\r\n\r\n private loadCurrentOperationByTeam(operationService: OperationService, operationType) {\r\n const filterModel = new OperationFilterModel();\r\n filterModel.patrolTeams = [this.currentTeam?.id];\r\n filterModel.status = [OperationStatus.STARTED];\r\n filterModel.startDate = moment().subtract({hours: SHIFT_DURATION}).utc().valueOf(); // now - SHIFT\r\n filterModel.endDate = moment().valueOf();\r\n \r\n return operationService.loadFilteredListFromRestApi(null, null, null, filterModel).pipe(first(), map((operations: OperationModel[]) => {\r\n if (!operations || operations.length === 0) return;\r\n operations[0].type = operationType;\r\n // Atualizado quando muda de canal\r\n this.currentOperation = operations[0];\r\n })).toPromise();\r\n }\r\n\r\n /**\r\n * Retorna a entidade em formato string, contendo só os campos visualizados na interface, para filtro.\r\n */\r\n protected getStringEntityForFilter(channel: ChannelModel): string {\r\n const name = super.lowerAndTrimText(channel.name);\r\n const lastMessageReceivedTimestamp = (channel.lastMessageReceivedTimestamp) ? this.formatDate(channel.lastMessageReceivedTimestamp) : '';\r\n const type = super.lowerAndTrimText(ChannelTypeDescription[channel.type]);\r\n const company = super.lowerAndTrimText(channel.company?.name);\r\n const placement = super.lowerAndTrimText(this.getPlacementName(channel));\r\n const uf = super.lowerAndTrimText(channel.company?.uf);\r\n return name + ESP + lastMessageReceivedTimestamp + ESP + type + ESP + company + ESP + placement + ESP + uf;\r\n }\r\n\r\n protected getStringUserForFilter(user: UserModel): string {\r\n const name = super.lowerAndTrimText(user.name);\r\n const login = super.lowerAndTrimText(user.login);\r\n const company = super.lowerAndTrimText(user.company?.name);\r\n const placement = super.lowerAndTrimText(user.originPlacement?.name);\r\n const profile = super.lowerAndTrimText(this.getProfileName(user));\r\n return name + ESP + login + ESP + company + ESP + placement + ESP + profile;\r\n }\r\n\r\n getPropertyByPath(item: Object, property: string) {\r\n switch (property) {\r\n case 'company.placement.name':\r\n {\r\n let value = this.getPlacementName(item as ChannelModel);\r\n return this.lowerAndTrimText(value);\r\n }\r\n case 'profile.name':\r\n {\r\n let value = this.getProfileName(item as UserModel);\r\n return this.lowerAndTrimText(value);\r\n }\r\n default: return super.getPropertyByPath(item, property);\r\n }\r\n }\r\n\r\n getPlacementName(channel: ChannelModel) {\r\n if (!channel) {\r\n return \"\";\r\n }\r\n return channel.type === ChannelType.CORE || channel.type === ChannelType.MANAGERIAL || channel.type === ChannelType.CNCL ? \"\" : channel.referencedName;\r\n }\r\n\r\n getUserPlacementName(user: UserModel) {\r\n if (!user) {\r\n return \"\";\r\n }\r\n if (!user.originPlacement && user.placements && user.placements.length == 1) {\r\n return user.placements[0].name;\r\n }\r\n \r\n return user.originPlacement ? user.originPlacement.name : \"\";\r\n }\r\n\r\n protected getDefaultSortColumn(): string {\r\n return \"lastMessageReceivedTimestamp\";\r\n }\r\n\r\n protected getDefaultSortDirection(): 'asc' | 'desc' {\r\n return 'desc';\r\n }\r\n\r\n restorePopoutData(popout) {\r\n this.logger.debug('ChannelListComponent.restorePopoutData()');\r\n // restaura contagem de mensagens no ChannelService\r\n this.channelService.setMessageData(popout.messageData);\r\n }\r\n\r\n glOnPopout() {\r\n this.logger.debug('ChannelListComponent.glOnPopout()');\r\n this.setListPopoutData({ filterModel: this.filterModel, messageData: this.channelService.getMessageData() });\r\n }\r\n\r\n glOnPopin() {\r\n this.logger.debug('ChannelListComponent.glOnPopin()');\r\n this.setListPopoutData({ filterModel: this.filterModel, messageData: this.channelService.getMessageData() });\r\n }\r\n\r\n sidenavToggle(opened: any) {\r\n this.openedSideList = opened;\r\n }\r\n\r\n onListMembersClick(row: any, event: Event) {\r\n }\r\n\r\n toggleShowMessages() {\r\n this.showMessages = this.showMessages == true ? false : true;\r\n }\r\n}\r\n","/* (ignored) */","import { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { API_VERSION_ENDPOINT } from '../../common/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReactiveService {\r\n protected readonly routeDeviationApiUrl: string = `${environment.settings.route_deviation_address}/route-deviation`;\r\n protected readonly simfApiUrl: string = `${environment.settings.simf_address}/simf`;\r\n\r\n constructor(private httpClient: HttpClient) {\r\n }\r\n\r\n /**\r\n * Obtem a versão do projeto reactive - modulo Route deviation\r\n */\r\n public getRouteDeviationVersion(): Observable {\r\n return this.httpClient.get(`${this.routeDeviationApiUrl}/${API_VERSION_ENDPOINT}`,\r\n { responseType: 'text' }\r\n );\r\n }\r\n\r\n /**\r\n * Obtem a versão do projeto reactive - modulo SIMF\r\n */\r\n public getSIMFVersion(): Observable {\r\n return this.httpClient.get(`${this.simfApiUrl}/${API_VERSION_ENDPOINT}`,\r\n { responseType: 'text' }\r\n );\r\n }\r\n}\r\n","import { AbstractSignalModel } from \"./abstract.signal.model\";\r\n\r\n/**\r\n * Sinal recebido de um aplicativo ou GPS.\r\n */\r\nexport class SignalModel extends AbstractSignalModel{\r\n\r\n public userId: string; // O mesmo que mobileObjectId\r\n\r\n // O ideal seria ter o login do usuário para não depender da busca do usuário para saber quem é\r\n // Para veículos usamos somente a placa, por exemplo\r\n\r\n constructor(){\r\n super();\r\n }\r\n}\r\n","import { Inject, Injectable, Component } from '@angular/core';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GlOnPopin,\r\n GlOnPopout,\r\n GlOnTab,\r\n GlOnHide,\r\n GlOnResize,\r\n GlOnUnload,\r\n GlOnClose,\r\n GlOnShow,\r\n GoldenLayoutComponent,\r\n GoldenLayoutComponentHost,\r\n GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { MAX_TAB_TITLE, PAGE_READY_PREFIX, FILL_DATA_PREFIX } from 'src/app/common/constants';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\nimport { environment } from 'src/environments/environment';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nconst LANDING_PAGE = environment.LANDING_PAGE;\r\n@ProfileClassToConsole()\r\n@Injectable()\r\nexport class BaseGoldenPanel implements GlOnPopin, GlOnShow, GlOnPopout, GlOnTab, GlOnResize, GlOnUnload, GlOnHide, GlOnClose {\r\n\r\n protected goldenLayoutInstance: GoldenLayout;\r\n\r\n constructor(protected logger: NGXLogger,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayoutComponent: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected goldenLayoutContainer: GoldenLayout.Container) {\r\n this.goldenLayoutInstance = goldenLayoutComponent.getGoldenLayoutInstance();\r\n // Container é o DOM element, ele fica dentro de um ContentItem\r\n // goldenLayoutContainer.parent acessa o próprio ContentItem\r\n }\r\n\r\n /* MAIN MENU\r\n * - Registro e assinatura de evento 'itemDragged'\r\n * - Gerência do tipo de click: single ou dbl click\r\n * - Reset do layout para a página inicial\r\n * - this.goldenLayoutContainer não pode ser utilizado por métodos do main manu\r\n */\r\n\r\n glRegisterDragMainMenu(mainMenu: HTMLElement) {\r\n mainMenu.childNodes.forEach((btn: HTMLButtonElement) => {\r\n this.glRegisterDragMainButton(btn);\r\n });\r\n\r\n this.subscribeDragMainMenu();\r\n }\r\n\r\n glRegisterDragMainButton(btn: HTMLButtonElement) {\r\n if (btn.value) {\r\n const componentName: string = btn.value;\r\n const itemConfiguration: GoldenLayout.ComponentConfig = this.buildItemConfig(componentName);\r\n itemConfiguration.title = btn.title;\r\n this.goldenLayoutInstance.createDragSource(btn, itemConfiguration);\r\n }\r\n }\r\n\r\n private getMainMenuContainerById(id: string): GoldenLayout.ContentItem {\r\n // Chamado sempre da tela principal, então esse root é sempre o MainRoot\r\n let mainRoot: GoldenLayout.ContentItem = this.goldenLayoutInstance.root;\r\n let contentItems: GoldenLayout.ContentItem[] = mainRoot.getItemsById(id);\r\n if (contentItems && contentItems.length > 0)\r\n return contentItems[0];\r\n\r\n return null;\r\n }\r\n\r\n private subscribeDragMainMenu() {\r\n this.goldenLayoutInstance.on('itemDragged', (item) => {\r\n const contentItem: GoldenLayout.ContentItem = this.getMainMenuContainerById(item.id.toString());\r\n if (contentItem) {\r\n if (item.parent === undefined) {\r\n if (item.componentName === LANDING_PAGE) {\r\n throw new Error('Landing-page em uso');\r\n }\r\n contentItem.remove();\r\n }\r\n }\r\n });\r\n }\r\n\r\n private activateContentItem(contentItem: GoldenLayout.ContentItem, browserWindow: GoldenLayout.BrowserWindow) {\r\n if (contentItem) {\r\n if (contentItem.parent.isStack) {\r\n let mainRoot: GoldenLayout.ContentItem = this.goldenLayoutInstance.root;\r\n let maxStack: GoldenLayout.ContentItem = mainRoot.getItemsById('__glMaximised')[0];\r\n if (maxStack) {\r\n // maxStack.setActiveContentItem(contentItem); -- isso também não funciona\r\n // o GL cria uma stack temporária para mostrar os itens maximizados\r\n // E todos os itens anteriores ganham novas instancias com novos ids\r\n // Tenho que procurar o item dentro dessa nova stack\r\n for (let i=0; ioldItem); // , false); se for usar o código addChild(oldItem);\r\n mainRoot.addChild(this.recreateStack());\r\n mainStack = this.getMainStack(mainRoot);\r\n mainStack.addChild(itemConfiguration); // Até aqui apenas acrescenta o novo elemento, e remove os elementos antigos\r\n // TODO scuri Isso não funciona bem. Fica uma aba vazia com a coluna ou a linha dentro.\r\n // mainStack.addChild(oldItem);\r\n // TODO scuri isso também não funciona, pois em geral as colunas/linhas são compostas por elementos dentro de outras stacks\r\n // if (oldItem.isColumn || oldItem.isRow) {\r\n // oldItem.contentItems.forEach( (item: GoldenLayout.ContentItem) => {\r\n // mainStack.addChild(item);\r\n // });\r\n // }\r\n }\r\n }\r\n }\r\n\r\n private isEditComponent(componentName: string): boolean {\r\n return componentName.indexOf('-edit') > 0;\r\n }\r\n\r\n private getComponentInfo(componentName: string, mainRoot: GoldenLayout.ContentItem, data?) {\r\n let contentItem: GoldenLayout.ContentItem = null;\r\n let browserWindow: GoldenLayout.BrowserWindow = null;\r\n\r\n let id;\r\n // Se é um componente de edição\r\n if(this.isEditComponent(componentName)) {\r\n // Se é um novo ou uma cópia não precisa procurar, sempre cria um novo painel\r\n if(!data || !data.id || data.copy || data.options?.predicted) {\r\n return {contentItem: contentItem, browserWindow: browserWindow};\r\n }\r\n else {\r\n id = data.id;\r\n }\r\n }\r\n else {\r\n id = componentName + '-id'; // listagem, mensagem, rastreamento ou mapa\r\n }\r\n \r\n let contentItems: GoldenLayout.ContentItem[] = mainRoot.getItemsById(id);\r\n if (contentItems && contentItems.length > 0)\r\n contentItem = contentItems[0];\r\n else\r\n {\r\n this.goldenLayoutInstance.openPopouts.forEach(window => {\r\n contentItems = window.getGlInstance().root.getItemsById(id);\r\n if(contentItems && contentItems.length > 0) {\r\n if (contentItems && contentItems.length > 0) {\r\n contentItem = contentItems[0];\r\n browserWindow = window;\r\n return;\r\n }\r\n }\r\n });\r\n } \r\n\r\n return {contentItem: contentItem, browserWindow: browserWindow};\r\n }\r\n\r\n glOpenContainerFromMainMenu(componentName: string) {\r\n // Chamado sempre da tela principal, então esse root é sempre o MainRoot\r\n let mainRoot: GoldenLayout.ContentItem = this.goldenLayoutInstance.root;\r\n let itemInfo = this.getComponentInfo(componentName, mainRoot);\r\n let contentItem: GoldenLayout.ContentItem = itemInfo.contentItem;\r\n if (contentItem) {\r\n let browserWindow: GoldenLayout.BrowserWindow = itemInfo.browserWindow;\r\n this.activateContentItem(contentItem, browserWindow);\r\n }\r\n else\r\n this.addComponentToMainRoot(componentName, mainRoot);\r\n }\r\n\r\n checkChildrenSaved(contentItems: GoldenLayout.ContentItem[]): boolean {\r\n let check: boolean = true;\r\n contentItems.forEach((c: GoldenLayout.ContentItem) => {\r\n if (c.isComponent){\r\n if(this.isEditComponent((c as any).componentName)) {\r\n // TODO scuri Isso é um hack, esses campos não são exportados pelo ngx-goldenlayout. Temos que tomar cuidado nas atualziações do mesmo.\r\n let cmp = (c as any).container.__ngComponent; \r\n if (cmp.viewIsChanged()) check = false;\r\n }\r\n }\r\n else {\r\n if (!this.checkChildrenSaved(c.contentItems)) check = false;\r\n }\r\n });\r\n\r\n return check;\r\n }\r\n\r\n glResetLayout(): boolean {\r\n // Antes de fechar todas, verifica se tem alguma edição não salva\r\n // Chamado sempre da tela principal, então esse root é sempre o MainRoot\r\n let mainRoot: GoldenLayout.ContentItem = this.goldenLayoutInstance.root;\r\n let contentItems: GoldenLayout.ContentItem[] = mainRoot.contentItems;\r\n if (!this.checkChildrenSaved(contentItems)) {\r\n return false;\r\n }\r\n\r\n contentItems.forEach((c: GoldenLayout.ContentItem) => {\r\n c.remove();\r\n });\r\n\r\n this.goldenLayoutInstance.openPopouts.forEach( (window: GoldenLayout.BrowserWindow) => {\r\n contentItems = window.getGlInstance().root.contentItems;\r\n contentItems.forEach((c: GoldenLayout.ContentItem) => {\r\n c.remove();\r\n });\r\n window.close();\r\n });\r\n\r\n return true;\r\n }\r\n\r\n // Recebe o nome do layout e verifica se existe na pilha , caso sim é removido\r\n glRemoveLayout(nameLayout:string) { \r\n let mainRoot: GoldenLayout.ContentItem = this.goldenLayoutInstance.root;\r\n let contentItems: GoldenLayout.ContentItem[] = mainRoot.contentItems; \r\n contentItems.forEach((c: GoldenLayout.ContentItem) => { \r\n c.contentItems.forEach((element:any) => {\r\n if(element.componentName == nameLayout){\r\n element.remove(); \r\n }\r\n });\r\n });\r\n }\r\n\r\n glUpdateCreateId(id:string){\r\n // Atualiza o id temporário do painel para ser o id do modelo\r\n let contentItem: GoldenLayout.ContentItem = this.goldenLayoutContainer.parent;\r\n contentItem.addId(id);\r\n contentItem.id = id;\r\n }\r\n\r\n /**\r\n * Verifica se já tem uma instância do painel aberta ou se precisa criar um novo. \r\n * Após, emite o evento de seleção para carregar a partir de um dado.\r\n * Chamado pelo ListComponent, CentralComponent e TrackingComponent\r\n * @param componentName Nome do componente\r\n * @param data Dados passados para o painel aberto\r\n */\r\n glOpenContainer(componentName: string, data: any){\r\n if (this.goldenLayoutInstance.isSubWindow) {\r\n // This layout is a popout, notify the main AppComponent\r\n this.glEmitEvent('OPEN_CONTAINER', {componentName: componentName, data: data});\r\n return;\r\n }\r\n\r\n // Chamado sempre da tela principal, então esse root é sempre o MainRoot\r\n let mainRoot: GoldenLayout.ContentItem = this.goldenLayoutInstance.root;\r\n let itemInfo = this.getComponentInfo(componentName, mainRoot, data);\r\n let contentItem: GoldenLayout.ContentItem = itemInfo.contentItem;\r\n // Se exite, ativa e preenche os dados\r\n if (contentItem) {\r\n let browserWindow: GoldenLayout.BrowserWindow = itemInfo.browserWindow;\r\n this.activateContentItem(contentItem, browserWindow);\r\n this.glEmitEvent(FILL_DATA_PREFIX + componentName, data);\r\n }\r\n // Se Não existe então cria novo\r\n else {\r\n this.addComponentToMainRoot(componentName, mainRoot, data);\r\n\r\n let pageReadyCallback = function() {\r\n // Emitido pelo componente para avisar que está pronto para receber dados\r\n this.logger.debug('BaseGoldenPanel.OnPageReady() - ' + componentName);\r\n\r\n // Notifica o painel para preencher dados a partir do data\r\n this.glEmitEvent(FILL_DATA_PREFIX + componentName, data);\r\n\r\n this.glUnSubscribeEvent(PAGE_READY_PREFIX + componentName, pageReadyCallback); // Ocorre apenas 1 vez\r\n }\r\n\r\n this.glSubscribeEvent(PAGE_READY_PREFIX + componentName, pageReadyCallback);\r\n }\r\n }\r\n\r\n private buildItemConfig(componentName: string, data?): GoldenLayout.ComponentConfig {\r\n let id = data && data.id? data.id: null;\r\n if(!id) {\r\n if (this.isEditComponent(componentName)) {\r\n // Se não tem id, mas é um componente de edição então é uma criação\r\n // gero um id temporário para o painel\r\n id = data.creation_id = uuidv4(); // Será sobrescrito ao salvar\r\n }\r\n else {\r\n id = componentName + '-id';\r\n }\r\n }\r\n else{\r\n if (data.copy || data.options?.predicted) {\r\n // Se é uma cópia gero um id temporário para o painel\r\n id = data.creation_id = uuidv4(); // Será sobrescrito ao salvar\r\n }\r\n }\r\n\r\n const isClosable = (id == 'central-id')? false: true;\r\n \r\n return {\r\n componentName: componentName,\r\n type: 'component',\r\n title: componentName, // Será sobrescrito posteriormente\r\n id: id,\r\n isClosable: isClosable,\r\n componentState: { maximisedItemId: null }\r\n };\r\n }\r\n\r\n glEmitEvent(event, data) {\r\n this.logger.debug(`BaseGoldenPanel.glEmitEvent(${event}, ${data})`);\r\n this.goldenLayoutInstance.eventHub.emit(event, data);\r\n }\r\n\r\n glSubscribeEvent(eventName: string, callback: Function) {\r\n this.goldenLayoutInstance.eventHub.on(eventName, callback, this);\r\n }\r\n\r\n glUnSubscribeEvent(eventName: string, callback?: Function) { // TODO scuri Acho que callback aqui não é mais necessária, já que usamos o context sempre\r\n // Unsubscribes either all listeners if just an eventName is provided, \r\n // just a specific callback if invoked with eventName and callback or \r\n // just a specific context if invoked with eventName and context\r\n this.goldenLayoutInstance.eventHub.off(eventName, callback, this);\r\n }\r\n\r\n glContainerClose() {\r\n this.goldenLayoutContainer.close();\r\n }\r\n\r\n glContainerWidth() {\r\n return this.goldenLayoutContainer.width;\r\n }\r\n\r\n glContainerHeight() {\r\n return this.goldenLayoutContainer.height;\r\n }\r\n\r\n glUpdateTabTitle(tabTitle: string) {\r\n let name: string = tabTitle;\r\n if (name.length > MAX_TAB_TITLE) name = name.substr(0, MAX_TAB_TITLE) + \"...\";\r\n\r\n let contentItem: GoldenLayout.ContentItem = this.goldenLayoutContainer.parent;\r\n contentItem.setTitle(name);\r\n }\r\n\r\n private tabTitleAnimation(contentItem: GoldenLayout.ContentItem) {\r\n contentItem.setTitle('' + contentItem.config.title + '');\r\n const elem = contentItem.layoutManager.container;\r\n elem.animate({ display: 'none' }, '3000', function() {\r\n elem.animate({ display: 'none' }, '1500');\r\n if (contentItem.config.title.startsWith('\r\n\r\n
\r\n \r\n
{{title}}
[ {{getListCount()}} ]\r\n
\r\n
\r\n
\r\n \r\n search\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Filtro\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n Validação\r\n \r\n \r\n check_circle_outline\r\n ID \r\n {{element?.identifier}}\r\n Status \r\n \r\n \r\n {{ getEventStatus(element) }}\r\n \r\n \r\n Ocorrência {{\r\n element?.result?.occurrence ? resultOccurrenceDescription[element.result.occurrence] : '' }} Data/Hora {{element?.date | date:'dd/MM/yyyy HH:mm'}} Analista {{ element?.analyst | toView }} Canal de Comunicação {{ element?.communicationChannel }} Origem {{ element?.source }} Duto {{element?.duct}} Válvula {{element?.valve}} KM {{element?.stretchStartKM && element?.stretchEndKM ?\r\n element?.stretchStartKM + \" - \" + element?.stretchEndKM : element?.targetPointKM}} Evento Relacionado {{element?.associatedIdentifier}}
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n","import { ChangeDetectorRef, Component, Inject, Input, NgZone, OnDestroy, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { EventStatusDescription, EventStatus, EventValidationDescription, EventValidation, UserType, FilterByAssociatedEvent, MarkerType, ResultOccurrenceDescription, PermisionRuleOption, Permission } from 'src/app/model/enums.enum';\r\nimport { EventModel } from 'src/app/model/event.model';\r\nimport { EventService } from 'src/app/service/model/event.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EventFilterModel } from '../event-filter/event.filter.model';\r\nimport { AuthorizationService } from '../../../service/authorization/authorization.service';\r\nimport { saveAs } from 'file-saver/dist/FileSaver';\r\n\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\nimport { Websocket } from 'src/app/service/websocket/websocket';\r\n\r\nimport { Message } from '@stomp/stompjs';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { TrackingService } from '../../../service/model/tracking.service';\r\nimport { ASSOCIATED_EVENT_UPDATE_PREFIX, ESP, HttpError, LIST_UPDATE_PREFIX } from '../../../common/constants';\r\nimport { EventListDialogComponent } from '../../../general/operation/event-list-dialog/event-list-dialog.component';\r\nimport { ConfirmationDialogComponent } from '../../../general/confirmation-dialog/confirmation-dialog.component';\r\nimport * as XLSX from 'xlsx';\r\nimport * as moment from 'moment';\r\nimport { AlertPriorityDescription, EventSituationDescription, ServiceTypeDescription, OperationStatusDescription } from '../../../model/enums.enum';\r\nimport { first, map } from 'rxjs/operators';\r\nimport { VerificationModel } from '../../../model/verification.model';\r\nimport { VerificationFilterModel } from '../../verification/verification-filter-dialog/verification.filter.model';\r\nimport { VerificationService } from '../../../service/model/verification.service';\r\nimport { InspectionModel } from '../../../model/inspection.model';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { MarkersService } from '../../../service/model/markers.service';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\nimport { ArchivedType } from 'src/app/general/filter-component/filter.model';\r\nimport { ArchiveListComponent } from '../../archive-list-component';\r\n\r\n@ProfileClassToConsole()\r\n@Component({\r\n selector: 'app-event-list',\r\n templateUrl: './event-list.component.html',\r\n styleUrls: ['../../../app.component.scss', '../../list.component.scss', './event-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EventListComponent extends ArchiveListComponent implements OnInit, OnDestroy {\r\n\r\n // Indica que esse componente de lista está sendo usado dentro de uma edição de evento\r\n @Input()\r\n insideEventEdition: boolean = false;\r\n\r\n private editedEventSubscription: Subscription;\r\n @Input() editedEventObservable: Observable;\r\n\r\n private editedEventId: string;\r\n private editedEventIdentifier: string;\r\n\r\n private _readonly : boolean;\r\n\r\n @Input()\r\n set editReadOnly(readonly: boolean){\r\n this._readonly = readonly;\r\n }\r\n\r\n get editReadOnly() : boolean{\r\n return this._readonly;\r\n }\r\n\r\n // Enums\r\n resultOccurrenceDescription = ResultOccurrenceDescription;\r\n eventStatus = EventStatus;\r\n\r\n eventUpdateWebsocket: Websocket;\r\n eventUpdateSubscription: Subscription;\r\n\r\n // Usado na exportação\r\n currentVerifications: VerificationModel[];\r\n\r\n columnsTitles = ['ID Evento', 'Status', 'Validação', 'Analista Validação', 'Ocorrência', 'Data', 'Hora', 'Analista CCPD', 'Canal de Comunicação', 'Quem?', 'Origem',\r\n 'Nível de Alerta', 'Cotur CNCL', 'Operador CNCL', 'Situação', 'Horário de Suspeita', 'Horário de Parada', 'Produto',\r\n 'Vazão - m3/h', 'Volume Subtraído (m3)', 'ID Chamada 168', 'Categoria 168', 'Subcategoria 168', 'Faixa', 'Trecho',\r\n 'Duto', 'Válvula', 'KM', 'KM (Lat, Long)', 'Início Trecho (KM)', 'Fim Trecho (KM)', 'Início Trecho (Lat, Long)',\r\n 'Fim Trecho (Lat, Long)', 'CEP', 'Logradouro', 'Cidade', 'UF', 'KM Ocorrência', 'Lat, Long Ocorrência', 'Notas',\r\n 'ID Verificação', 'Status Verificação', 'Coordenador', 'Gerência', 'Regional', 'Empresa', 'Tipo de serviço', 'Equipe',\r\n 'Placa', 'Profissional 1', 'Profissional 2', 'Profissional 3', 'Data/Hora (Solicitação)', 'Data/Hora Início de Percurso',\r\n 'Data/Hora Início de Inspeção', 'Data/Hora Fim de Inspeção', 'Data/Hora Fim da Verificação', ' Data/Hora App (recebida)', 'Pontos Planejados',\r\n 'Descrição dos Pontos', 'Mídia', 'Pontos Executados', 'Diferença de Pontos', 'Pontos sem Acesso','TACCPD', 'TACS', 'TAPD', 'TTA', 'TERF', 'TVI', 'TSI', 'TRIVI',\r\n 'KM sem acesso', 'Lat sem acesso', 'Long sem acesso'];\r\n\r\n eventFields = ['identifier', 'status', 'validation', 'validationAnalyst','result.occurrence', 'date', 'analyst', 'communicationChannel', 'who', 'source',\r\n 'alertLevel', 'coturCNCL', 'operatorCNCL', 'situation', 'suspiciousTime', 'stopTime', 'product', 'flow', 'stolenVolume',\r\n 'callId168', 'category168', 'subcategory168', 'band', 'stretch', 'duct', 'valve', 'targetPointKM', 'targetPointLatLong',\r\n 'stretchStartKM', 'stretchEndKM', 'stretchStartLatLong', 'stretchEndLatLong', 'zipCode', 'street', 'city', 'state',\r\n 'result.occurrenceKM' , 'result.occurrenceLatLong', 'result.notes', '', '', '', '', '', '', '', '', '', '', '', '', '',\r\n '', '', '', '', '', 'requestedPoints', 'pointsDescription', '', '', 'visitedPoints', 'pointsDiff'];\r\n\r\n verificationFields = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\r\n 'band', 'stretch', 'duct', 'valve', 'km', 'latLong',\r\n 'stretchStartKM', 'stretchEndKM', 'stretchStartLatLong', 'stretchEndLatLong', '', '', '', '', '' , '', '',\r\n 'identifier', 'status', 'coordinator', 'gs', 'regional', 'company', 'serviceType', 'patrolTeam', 'plate', 'professional1',\r\n 'professional2', 'professional3', 'sentDate', 'startDateMovement', 'startDateInspection', 'endDateInspection', 'dateSendEndVerification',\r\n 'receivedDateApp', 'requestedPoints', 'pointsDescription', 'midia', 'visitedPoints', 'pointsDiff', 'noAccesVerificationPoints','taccpd', 'tacs', 'tapd', 'tta', 'terf', 'tvi', 'tsi', 'trivi',\r\n 'noaccessKM', 'noaccessLat', 'noacessLong'];\r\n\r\n isHiddenButtonCreateEditEvent: boolean;\r\n isHiddenButtonDeleteEvent: boolean; \r\n \r\n constructor(logger: NGXLogger,\r\n protected changeDetector: ChangeDetectorRef,\r\n private ngZone: NgZone,\r\n storageService: StorageService,\r\n protected toastr: ToastrService,\r\n public authorizationService: AuthorizationService,\r\n dialog: MatDialog,\r\n private eventService: EventService,\r\n protected trackingService: TrackingService,\r\n protected verificationService: VerificationService,\r\n protected markersService: MarkersService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, changeDetector, authorizationService, eventService, dialog, 'events', environment.EVENT_GROUP_LABEL, environment.EVENT_TITLE_LABEL,\r\n environment.EVENT_MODEL_LABEL, storageService, trackingService, toastr, goldenLayout, container);\r\n logger.debug('EventListComponent.constructor()');\r\n }\r\n\r\n ngOnDestroy(){\r\n super.ngOnDestroy();\r\n this.eventUpdateSubscription?.unsubscribe();\r\n this.editedEventSubscription?.unsubscribe();\r\n\r\n this.eventUpdateWebsocket?.destroy();\r\n this.eventUpdateWebsocket = null;\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit(); \r\n this.logger.debug('EventListComponent.ngOnInit()');\r\n if(this.insideEventEdition){\r\n this.displayedColumns = ['select', 'validation', 'identifier', 'status', 'result.occurrence', 'date', 'analyst.name',\r\n 'communicationChannel', 'source', 'duct', 'valve', 'targetPointKM'];\r\n }else{\r\n this.displayedColumns = ['select', 'validation', 'identifier', 'status', 'result.occurrence', 'date', 'analyst.name',\r\n 'communicationChannel', 'source', 'duct', 'valve', 'targetPointKM', 'associatedIdentifier'];\r\n }\r\n \r\n this.subscribeOnChangeEditedEventId();\r\n this.initWebsocket();\r\n }\r\n\r\n protected getDefaultSortColumn(): string {\r\n return \"identifier\";\r\n }\r\n\r\n protected getDefaultSortDirection(): 'asc' | 'desc' {\r\n return 'desc';\r\n }\r\n\r\n protected newFilterModel() {\r\n let filter = new EventFilterModel();\r\n\r\n if (this.insideEventEdition) {\r\n filter.associatedEventId = this.editedEventId;\r\n if (this.editedEventId) filter.archived = ArchivedType.ALL;\r\n filter.filterByAssociatedEvent = FilterByAssociatedEvent.ASSOCIATED;\r\n }\r\n\r\n return filter;\r\n }\r\n\r\n initWebsocket(){\r\n this.ngZone.runOutsideAngular(() => {\r\n this.eventUpdateWebsocket = Websocket.createEventUpdateWebsocket();\r\n this.subscribeToEventUpdateWebsocket();\r\n });\r\n }\r\n\r\n // Chamada quando algum item da lista foi atualizado pelo backend\r\n updateModelItem(id: string){\r\n this.entityService.getRecord(id).pipe(first()).subscribe((entity: EntityModel) => {\r\n if(!entity) {\r\n return;\r\n };\r\n\r\n //Se está numa edição de eventos, o loadRecordsFromServer não foi chamado quando o evento é novo, assim o modelo não existe\r\n //Quando o websocket envía a mensagem de atualização de listas, o model na findAndUpdateModel é undefined para essa lista \r\n if(!this.model){\r\n return;\r\n }\r\n\r\n let event = entity as EventModel;\r\n \r\n if(!this.checkInsideEventlistOrNotInsideEvent(entity)){\r\n return;\r\n }\r\n\r\n let exclude = false; \r\n let toFilter = false;\r\n const oldModel = this.model.find( model => event.id == model.id);\r\n \r\n if(this.checkFilterDates(event)) {\r\n toFilter = true;\r\n }\r\n else if(this.checkFilterOccurrences(event)) {\r\n toFilter = true;\r\n }\r\n else if(this.checkFilterStatus(event)) {\r\n toFilter = true;\r\n }\r\n else if(this.checkFilterCommunicationChannel(event)) {\r\n toFilter = true;\r\n }\r\n else if(this.checkFilterAnalyst(event)) {\r\n toFilter = true;\r\n } \r\n else if(this.checkFilterSources(event)) {\r\n toFilter = true;\r\n } \r\n else if(this.checkFilterKM(event)) {\r\n toFilter = true;\r\n }\r\n\r\n if (toFilter == true) {\r\n if (!oldModel) {\r\n return;\r\n } else {\r\n exclude = true;\r\n }\r\n }\r\n\r\n this.findAndUpdateModel(entity, exclude);\r\n }, (error: HttpErrorResponse) => {\r\n if (error.status === HttpError.NOT_FOUND) { // Evento removido (mesmo tratamento do Registration, diferente de operações)\r\n this.model = this.model.filter( model => model.id != id);\r\n this.buildDataSource();\r\n return;\r\n }\r\n this.logger.error(error);\r\n });\r\n }\r\n\r\n private subscribeToEventUpdateWebsocket() {\r\n this.eventUpdateSubscription = this.eventUpdateWebsocket.stream().subscribe((message: Message) => {\r\n this.logger.debug(\"EventListComponent.OnUpdateEventWebsocket()\");\r\n const entity: EntityModel = JSON.parse(message.body);\r\n if (!entity) {\r\n return;\r\n }\r\n\r\n this.updateModelItem(entity.id);\r\n }, (error) => {\r\n const errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';\r\n this.logger.error(`EventListComponent.OnUpdateEventWebsocket: ${errMsg}`);\r\n });\r\n }\r\n\r\n getPropertyByPath(item: Object, property: string){\r\n switch (property) {\r\n case 'targetPointKM':\r\n {\r\n const val = item['stretchStartKM'] && item['stretchEndKM'] ? item['stretchStartKM'] + ' - ' +\r\n item['stretchEndKM'] : item['targetPointKM'];\r\n return val ? val : '';\r\n }\r\n default: return super.getPropertyByPath(item, property);\r\n }\r\n }\r\n \r\n checkFilterDates(event: EventModel){\r\n // data\r\n if(this.filterModel.startDate != null && this.filterModel.endDate != null){\r\n if(!(event.date >= this.filterModel.startDate && event.date <= this.filterModel.endDate))\r\n return true;\r\n }\r\n else if(this.filterModel.startDate == null && this.filterModel.endDate != null){\r\n if(!(event.date <= this.filterModel.endDate))\r\n return true;\r\n }\r\n else if(this.filterModel.startDate != null && this.filterModel.endDate == null){\r\n if(!(event.date >= this.filterModel.startDate))\r\n return true;\r\n }\r\n return false;\r\n } \r\n \r\n checkFilterOccurrences(event: EventModel){\r\n let filter: EventFilterModel = this.filterModel as EventFilterModel;\r\n if(filter.occurrences != null && filter.occurrences.length > 0){\r\n if(!filter.occurrences.includes(event.result.occurrence))\r\n return true;\r\n }\r\n return false;\r\n } \r\n \r\n checkFilterStatus(event: EventModel){\r\n let filter: EventFilterModel = this.filterModel as EventFilterModel;\r\n if(filter.status != null && filter.status.length > 0){\r\n if(!filter.status.includes(event.status))\r\n return true;\r\n }\r\n return false;\r\n } \r\n \r\n checkFilterCommunicationChannel(event: EventModel){\r\n let filter: EventFilterModel = this.filterModel as EventFilterModel;\r\n if(filter.channels != null && filter.channels.length > 0){\r\n if(!filter.channels.includes(event.communicationChannel))\r\n return true;\r\n }\r\n return false;\r\n } \r\n \r\n checkFilterAnalyst(event: EventModel){\r\n let filter: EventFilterModel = this.filterModel as EventFilterModel;\r\n if(filter.analysts != null && filter.analysts.length > 0){\r\n if(!filter.analysts.includes(event.analyst.id))\r\n return true;\r\n }\r\n return false;\r\n } \r\n \r\n checkFilterSources(event: EventModel){\r\n let filter: EventFilterModel = this.filterModel as EventFilterModel;\r\n if(filter.sources != null && filter.sources.length > 0){\r\n if(!filter.sources.includes(event.source))\r\n return true;\r\n }\r\n return false;\r\n } \r\n \r\n checkFilterKM(event: EventModel){\r\n let filter: EventFilterModel = this.filterModel as EventFilterModel;\r\n\r\n if (filter.startKM == null && filter.endKM == null) {\r\n return false;\r\n }\r\n\r\n if ((event.stretchStartKM != null && event.stretchStartKM.trim().length != 0) && (event.stretchEndKM != null && event.stretchEndKM.trim().length != 0)) {\r\n if (filter.startKM != null && filter.endKM != null) {\r\n if(event.stretchStartKM >= filter.endKM && event.stretchEndKM <= filter.startKM)\r\n return true;\r\n }\r\n else if (filter.startKM == null) {\r\n if(event.stretchStartKM >= filter.endKM) {\r\n return true;\r\n }\r\n }\r\n else {\r\n if(event.stretchEndKM <= filter.startKM) {\r\n return true;\r\n }\r\n }\r\n }\r\n else if (event.targetPointKM != null) {\r\n if ((filter.startKM !== null && event.targetPointKM <= filter.startKM) ||\r\n (event.targetPointKM >= filter.endKM))\r\n return true;\r\n }\r\n else {\r\n return true;\r\n }\r\n return false;\r\n } \r\n\r\n onCreateVerificationClick(row) {\r\n this.glOpenContainer('verifications-edit', {id: null, options: {event: row}});\r\n }\r\n\r\n onExportClick(row: any, event: any) {\r\n this.loadingListService.loadingOn();\r\n this.eventService.exportEvent(row).pipe(first()).subscribe(response => {\r\n this.loadingListService.loadingOff();\r\n this.renderComponent();\r\n\r\n let filename = `${row.identifier}.zip`;\r\n filename = filename.replace(/[\\x00-\\x1f?<>:\"/\\\\*|]/g, '_');\r\n saveAs(response, filename);\r\n },\r\n error =>{\r\n this.loadingListService.loadingOff();\r\n this.renderComponent();\r\n this.logger.error(error);\r\n });\r\n }\r\n\r\n /**\r\n * Retorna a entidade em formato string, contendo só os campos visualizados na interface, para Buscar.\r\n */\r\n protected getStringEntityForFilter(event: EventModel): string {\r\n const identifier = (event.identifier) ? super.lowerAndTrimText(event.identifier) : '';\r\n const status = super.lowerAndTrimText(this.getEventStatus(event));\r\n const occurrence = event.result && event.result.occurrence ?\r\n super.lowerAndTrimText(this.resultOccurrenceDescription[event.result.occurrence]) : '';\r\n const date = (event.date) ? this.formatDate(event.date) : '';\r\n const analyst = (event.analyst) ? super.lowerAndTrimText(this.getUserNameLoginTitle(event.analyst)) : '';\r\n const communicationChannel = super.lowerAndTrimText(event.communicationChannel);\r\n const source = super.lowerAndTrimText(event.source);\r\n const duct = super.lowerAndTrimText(event.duct);\r\n const associatedIdentifier = super.lowerAndTrimText(event.associatedIdentifier);\r\n const km = event.stretchStartKM && event.stretchEndKM ? event.stretchStartKM + ' - ' +\r\n event.stretchEndKM : (event.targetPointKM ? event.targetPointKM : '');\r\n const valve = super.lowerAndTrimText(event.valve);\r\n return identifier + ESP + status + ESP + occurrence + ESP + date + ESP + analyst + ESP + communicationChannel + ESP + source + ESP + duct + ESP + km + ESP + valve + ESP + associatedIdentifier;\r\n }\r\n\r\n protected getEventExportColValue(col, model):string[] {\r\n let values: string[] = [];\r\n let value: string;\r\n switch (col) {\r\n case \"identifier\":\r\n case \"communicationChannel\":\r\n case \"who\":\r\n case \"source\":\r\n case \"product\":\r\n case \"callId168\":\r\n case \"category168\":\r\n case \"subcategory168\":\r\n case \"band\":\r\n case \"stretch\":\r\n case \"duct\":\r\n case \"valve\":\r\n case \"targetPointKM\":\r\n case \"targetPointLatLong\":\r\n case \"stretchStartKM\":\r\n case \"stretchEndKM\":\r\n case \"stretchStartLatLong\":\r\n case \"stretchEndLatLong\":\r\n case \"zipCode\":\r\n case \"street\":\r\n case \"city\":\r\n case \"state\":\r\n case \"pointsDescription\":\r\n value = model[col] ? model[col] : \"\";\r\n values.push(value);\r\n break;\r\n case \"flow\":\r\n case \"stolenVolume\":\r\n value = model[col] ? model[col] : \"\";\r\n values.push(Number(value).toLocaleString(\"pt-br\", {minimumFractionDigits: 2, maximumFractionDigits: 2}));\r\n break;\r\n case \"requestedPoints\":\r\n case \"visitedPoints\":\r\n case \"pointsDiff\":\r\n value = model[col] ? model[col] : 0;\r\n values.push(value);\r\n break;\r\n case \"status\":\r\n values.push(this.getEventStatus(model));\r\n break;\r\n case \"validation\":\r\n value = model[col] ? EventValidationDescription[model[col]] : \"\"\r\n values.push(value);\r\n break;\r\n case \"validationAnalyst\":\r\n values.push(this.getUserNameLoginTitle(model[col]));\r\n break;\r\n case \"result.occurrence\":\r\n value = model['result'] ? model['result']['occurrence'] ? ResultOccurrenceDescription[model['result']['occurrence']] : \"\" : \"\";\r\n values.push(value);\r\n break;\r\n case \"result.occurrenceKM\":\r\n value = model['result'] ? model['result']['occurrenceKM'] ? model['result']['occurrenceKM'] : \"\" : \"\";\r\n values.push(value);\r\n break;\r\n case \"result.occurrenceLatLong\":\r\n value = model['result'] ? model['result']['occurrenceLatLong'] ? model['result']['occurrenceLatLong'] : \"\" : \"\";\r\n values.push(value);\r\n break;\r\n case \"result.notes\":\r\n value = model[\"result\"] ? model[\"result\"]['notes'] ? model['result']['notes'] : \"\" : \"\";\r\n values.push(value);\r\n break;\r\n case \"date\":\r\n values.push(model[col] ? DateUtils.timestampToStringInDays(model[col]) : \"\");\r\n values.push(model[col] ? DateUtils.timestampToTimeString(model[col]) : \"\");\r\n break;\r\n case \"analyst\":\r\n values.push(this.getUserNameLoginTitle(model['analyst']));\r\n break;\r\n case \"alertLevel\":\r\n value = model[col] ? AlertPriorityDescription[model[col]] : \"\";\r\n values.push(value);\r\n break;\r\n case \"coturCNCL\":\r\n values.push(this.getUserNameLoginTitle(model[col]));\r\n break;\r\n case \"operatorCNCL\":\r\n values.push(this.getUserNameLoginTitle(model[col]));\r\n break;\r\n case \"situation\":\r\n value = model[col] ? EventSituationDescription[model[col]] : \"\";\r\n values.push(value);\r\n break;\r\n case \"suspiciousTime\":\r\n values.push(model[col] ? DateUtils.timestampToTimeString(model[col]) : \"\");\r\n break;\r\n case \"stopTime\":\r\n values.push(model[col] ? DateUtils.timestampToTimeString(model[col]) : \"\");\r\n break;\r\n default:\r\n values.push(\"\");\r\n break;\r\n }\r\n return values;\r\n }\r\n\r\n protected getVerificationExportColValue(col, model):string[] {\r\n let values: string[] = [];\r\n let value: string;\r\n switch (col) {\r\n case \"identifier\":\r\n case \"band\":\r\n case \"stretch\":\r\n case \"duct\":\r\n case \"valve\":\r\n case \"km\":\r\n case \"latLong\":\r\n case \"stretchStartKM\":\r\n case \"stretchEndKM\":\r\n case \"stretchStartLatLong\":\r\n case \"stretchEndLatLong\":\r\n case \"pointsDescription\":\r\n case \"midia\":\r\n value = model[col] ? model[col] : \"\";\r\n values.push(value);\r\n break;\r\n case \"requestedPoints\":\r\n case \"visitedPoints\":\r\n case \"pointsDiff\":\r\n value = model[col] ? model[col] : 0;\r\n values.push(value);\r\n break;\r\n case \"noAccesVerificationPoints\":\r\n value = model[col] ? model[col] : 0;\r\n values.push(value);\r\n break;\r\n case \"status\":\r\n values.push(this.getVerificationSatus(model) + ((model.expired && model.status=='FINISHED')? ' (expirada)': ''));\r\n break;\r\n case \"coordinator\":\r\n value = model?.patrolTeam?.patrolCoordinator ? this.getUserNameLoginTitle(model.patrolTeam.patrolCoordinator) : \"\";\r\n values.push(value);\r\n break;\r\n case \"gs\":\r\n value = model.patrolTeam?.company?.placement?.gs;\r\n values.push(value ? value : \"\");\r\n break;\r\n case \"regional\":\r\n value = model.patrolTeam?.company?.placement?.regional;\r\n values.push(value ? value : \"\");\r\n break;\r\n case \"company\":\r\n value = model.patrolTeam?.company?.name;\r\n values.push(value ? value : \"\");\r\n break;\r\n case \"serviceType\":\r\n value = model.patrolTeam?.serviceType ? ServiceTypeDescription[model.patrolTeam.serviceType] : \"\";;\r\n values.push(value);\r\n break;\r\n case \"patrolTeam\":\r\n value = model.patrolTeam?.name;\r\n values.push(value ? value : \"\");\r\n break;\r\n case \"plate\":\r\n value = model.patrolTeam?.vehicle?.plate;\r\n values.push(value ? value : \"\");\r\n break;\r\n case \"professional1\":\r\n value = model.patrolTeam?.users[0];\r\n values.push(this.getUserNameLoginTitle(value));\r\n break;\r\n case \"professional2\":\r\n value = model.patrolTeam?.users[1];\r\n values.push(this.getUserNameLoginTitle(value));\r\n break;\r\n case \"professional3\":\r\n value = model.patrolTeam?.users[2];\r\n values.push(this.getUserNameLoginTitle(value));\r\n break;\r\n case \"sentDate\":\r\n case \"startDateMovement\":\r\n case \"startDateInspection\":\r\n case \"endDateInspection\":\r\n case \"dateSendEndVerification\":\r\n values.push(model[col] ? DateUtils.timestampToStringInMinutes(model[col]) : \"\");\r\n break;\r\n case \"receivedDateApp\":\r\n values.push(model[col] ? DateUtils.timestampToStringInMinutes(model[col]) : \"\");\r\n break;\r\n case \"taccpd\":\r\n value = model?.taccpd;\r\n values.push(model[col] ? value : '');\r\n break;\r\n case \"tacs\":\r\n value = model?.tacs;\r\n values.push(model[col] ? value : '');\r\n break;\r\n case \"tapd\":\r\n value = model?.tapd;\r\n values.push(model[col] ? value : '');\r\n break;\r\n case \"tta\":\r\n value = model?.tta;\r\n values.push(model[col] ? value : '');\r\n break;\r\n case \"terf\":\r\n value = model?.terf;\r\n values.push(model[col] ? value : '');\r\n break;\r\n case \"tvi\":\r\n value = model?.tvi;\r\n values.push(model[col] ? value : '');\r\n break;\r\n case \"tsi\":\r\n value = model?.tsi;\r\n values.push(model[col] ? value : '');\r\n break;\r\n case \"trivi\":\r\n value = model?.trivi;\r\n values.push(model[col] ? value : '');\r\n break;\r\n default:\r\n values.push(\"\");\r\n break;\r\n }\r\n return values;\r\n }\r\n\r\n private buildDataArray(events, columnsTitles, eventFields, verificationFields){\r\n let ws_data = [];\r\n let lines = [];\r\n let line = [];\r\n columnsTitles.forEach((col:string) => { line.push(col); });\r\n ws_data.push(line);\r\n\r\n events.forEach((model: EventModel) => {\r\n let line = [];\r\n eventFields.forEach(col => {\r\n line = line.concat(this.getEventExportColValue(col, model));\r\n });\r\n lines.push(line);\r\n if (model.verifications?.length > 0) {\r\n model.verifications.forEach((verification: VerificationModel) => {\r\n line = [];\r\n verificationFields.forEach(col => {\r\n line = line.concat(this.getVerificationExportColValue(col, verification));\r\n });\r\n lines.push(line);\r\n });\r\n }\r\n model.noAccessPoints?.forEach((point: InspectionModel) => {\r\n line = [];\r\n let index: number = this.columnsTitles.findIndex((el: string) => el === \"KM sem acesso\");\r\n line[index] = point.km;\r\n line[++index] = point.location.latitude;\r\n line[++index] = point.location.longitude;\r\n lines.push(line);\r\n });\r\n });\r\n lines?.forEach(element => {\r\n ws_data.push(element);\r\n });\r\n return ws_data;\r\n }\r\n\r\n private aggregateInspectionsData() {\r\n let kms: string;\r\n this.selection.selected.forEach((event: EventModel) => {\r\n kms = \"\";\r\n event.pointsDescription = \"\";\r\n event.requestedPoints = 0;\r\n event.visitedPoints = 0;\r\n let requestedPoints = 0; \r\n let noAccesVerificationPoints = 0; \r\n event.noAccessPoints = [];\r\n event.verifications?.forEach((verification: VerificationModel) => {\r\n requestedPoints = verification.inspections.length; \r\n verification.inspections.forEach((inspection: InspectionModel) => {\r\n if (inspection.km) {\r\n kms += inspection.km + \";\";\r\n }\r\n if (inspection.inspectionPointNoAccess) {\r\n noAccesVerificationPoints += 1;\r\n }\r\n if (inspection.inspectionPointNoAccess) {\r\n event.noAccessPoints.push(inspection);\r\n }\r\n })\r\n verification.pointsDescription = kms;\r\n verification.requestedPoints = requestedPoints;\r\n verification.noAccesVerificationPoints = noAccesVerificationPoints;\r\n verification.visitedPoints = parseInt(verification.executedPoints) + noAccesVerificationPoints;\r\n verification.pointsDiff = requestedPoints - verification.visitedPoints;\r\n event.pointsDescription += kms;\r\n event.requestedPoints += requestedPoints;\r\n event.visitedPoints += verification.visitedPoints;\r\n })\r\n event.pointsDiff = event.requestedPoints - event.visitedPoints;\r\n })\r\n }\r\n\r\n public exportEventsToXls(){\r\n const EXCEL_EXTENSION = '.xlsx';\r\n var ws_name = this.tabTitle;\r\n var wb = XLSX.utils.book_new();\r\n\r\n let exportDate = moment().format('DD-MM-yyyy HH-mm');\r\n\r\n /* make worksheet */\r\n var events = (this.selection.selected.length > 0) ? this.selection.selected : this.dataSource.filteredData;\r\n\r\n var ws_data = this.buildDataArray(events, this.columnsTitles, this.eventFields, this.verificationFields);\r\n\r\n var ws = XLSX.utils.aoa_to_sheet(ws_data);\r\n\r\n /* Add the worksheet to the workbook */\r\n XLSX.utils.book_append_sheet(wb, ws, ws_name);\r\n XLSX.writeFile(wb, ws_name+' '+exportDate+EXCEL_EXTENSION);\r\n }\r\n\r\n private loadVerifications(eventsId: string[]) : Promise{\r\n const filter: VerificationFilterModel = new VerificationFilterModel();\r\n filter.eventIds = eventsId;\r\n filter.archived = ArchivedType.ALL;\r\n this.currentVerifications = []; \r\n \r\n return new Promise((resolve, reject)=>{\r\n this.verificationService.loadFilteredListFromRestApi(null, null, null, filter).pipe(first()).subscribe((model: VerificationModel[]) =>{\r\n if(!model || model.length === 0) resolve(false);\r\n this.currentVerifications = model;\r\n resolve(true);\r\n \r\n }, error => {\r\n this.logger.error(error);\r\n this.toastr.error('Erro ao ler lista de verificações');\r\n resolve(false);\r\n });\r\n });\r\n }\r\n\r\n public async onExportManyClick() {\r\n if( this.selection.selected.length == 1) {\r\n this.onExportClick(this.selection.selected[0], null);\r\n }\r\n else {\r\n let events: EventModel[];\r\n if(this.selection.selected.length > 0) {\r\n events = this.selection.selected.slice() as EventModel[];\r\n }\r\n else {\r\n events = this.dataSource.filteredData as EventModel[];\r\n }\r\n\r\n var operationsIds: string[] = [];\r\n events.forEach( (event: EventModel) => {\r\n operationsIds.push(event.identifier);\r\n event.verifications = []\r\n });\r\n\r\n //verifica quantas operações tem, se maior que 100 a consulta será dividida\r\n let successDataRead = false; \r\n if(operationsIds.length > 100){\r\n successDataRead = await this.loadListGreaterThanOneHundred(operationsIds);\r\n }else{\r\n successDataRead = await this.loadVerifications(operationsIds);\r\n }\r\n \r\n if (successDataRead && this.currentVerifications){ \r\n\r\n this.currentVerifications.forEach( (model: VerificationModel) => {\r\n let currentEvent: EventModel = events.find( (event: EventModel) => event.identifier === model.eventId); \r\n currentEvent.verifications.push(model);\r\n \r\n let sendDateMoment, eventMoment, createdAtMoment, endMoment, dateSituationFoundMoment, startInspMoment, startMovementMoment;\r\n\r\n //TACCPD\r\n if(model.eventCreatedAt && model.sentDate){\r\n sendDateMoment = moment(model.sentDate);\r\n eventMoment = moment(model.eventCreatedAt);\r\n const duration = moment.duration(sendDateMoment.diff(eventMoment)); \r\n model.taccpd = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n //TACS\r\n if(model.createdAt && model.sentDate){\r\n createdAtMoment = moment(model.createdAt);\r\n sendDateMoment = moment(model.sentDate);\r\n const duration = moment.duration(sendDateMoment.diff(createdAtMoment));\r\n model.tacs = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n //TAPD\r\n if(model.dateSendEndVerification && model.sentDate){\r\n endMoment = moment(model.dateSendEndVerification);\r\n sendDateMoment = moment(model.sentDate);\r\n const duration = moment.duration(endMoment.diff(sendDateMoment));\r\n model.tapd = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n //TTA\r\n if(model.dateSendEndVerification && model.eventCreatedAt){\r\n endMoment = moment(model.dateSendEndVerification);\r\n const eventCreatedMoment = moment(model.eventCreatedAt);\r\n const duration = moment.duration(endMoment.diff(eventCreatedMoment));\r\n model.tta = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n //TERF\r\n if(model.dateSendEndVerification && model.dateSituationFound){\r\n endMoment = moment(model.dateSendEndVerification);\r\n dateSituationFoundMoment = moment(model.dateSituationFound);\r\n const duration = moment.duration(dateSituationFoundMoment.diff(endMoment));\r\n model.terf = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n //TVI\r\n if(model.startDateInspection && model.endDateInspection){\r\n startInspMoment = moment(model.startDateInspection);\r\n const endInspMoment = moment(model.endDateInspection);\r\n const duration = moment.duration(endInspMoment.diff(startInspMoment));\r\n model.tvi = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n //TSI\r\n if(model.startDateInspection && model.sentDate){\r\n startInspMoment = moment(model.startDateInspection);\r\n sendDateMoment = moment(model.sentDate);\r\n const duration = moment.duration(startInspMoment.diff(sendDateMoment)); \r\n model.tsi = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n //TRIVI\r\n if(model.startDateMovement && model.sentDate){\r\n startMovementMoment = moment(model.startDateMovement);\r\n sendDateMoment = moment(model.sentDate);\r\n const duration = moment.duration(startMovementMoment.diff(sendDateMoment)); \r\n model.trivi = this.secondsToHms(duration.asSeconds()); \r\n }\r\n \r\n });\r\n\r\n this.aggregateInspectionsData();\r\n this.exportEventsToXls();\r\n }\r\n }\r\n }\r\n\r\n private loadListGreaterThanOneHundred(operationsIds: string[]) : Promise {\r\n this.logger.debug('loadListGreaterThanOneHundred');\r\n return new Promise((resolve, reject)=>{ \r\n this.verificationService.loadListVerifications(operationsIds).pipe(first()).subscribe((verifications: VerificationModel[]) => {\r\n this.currentVerifications = [];\r\n verifications.forEach(entities => {\r\n if ( entities['first'] || entities['second'] ){\r\n this.currentVerifications = this.currentVerifications.concat(entities['second']);\r\n }else{\r\n this.currentVerifications = this.currentVerifications.concat(entities);\r\n }\r\n });\r\n \r\n resolve(true);\r\n }, error => {\r\n this.logger.error(error);\r\n this.toastr.error('Erro ao ler lista de verificações');\r\n resolve(false);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Método sobreposto da super classe que verifica se o evento tem os requisitos para arquivamento\r\n * @param model\r\n * @returns\r\n */\r\n hasArchivalRequirements(model: EventModel): boolean{\r\n\r\n if(model.status != EventStatus.FINALIZED){ // Verifica se o status é Concluído\r\n return false;\r\n }\r\n\r\n if(model.validation != EventValidation.COMPLETE){ // Verifica se a validação é Completo\r\n return false;\r\n }\r\n\r\n if( this.authorizationService.isControl()){ // Se for perfil ANALYSIS_CCPD, verifica se os eventos foram criados por ele\r\n if(!model.analyst || model.analyst.id !== this.loggedUser.id.toString()){\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n archiveTooltipText() {\r\n return `${this.archiveButtonLabel} Evento(s) Selecionado(s)`;\r\n }\r\n\r\n getEventStatus(event: EventModel): string {\r\n if (!event) return '';\r\n\r\n if (event.archived)\r\n return \"Arquivado\";\r\n else if (event.status)\r\n return EventStatusDescription[event.status];\r\n else\r\n return '';\r\n }\r\n\r\n getVerificationSatus(verification : VerificationModel): string {\r\n if (!verification) return '';\r\n\r\n if (verification.archived)\r\n return \"Arquivada\";\r\n else if (verification.status)\r\n return OperationStatusDescription[verification.status];\r\n else\r\n return '';\r\n }\r\n\r\n canCopy(model: EntityModel): boolean {\r\n if (!model) return false;\r\n\r\n // Não preciso testar permissão de criar/editar porque o botão está escondido nesse caso\r\n\r\n // Verifica a permissão de alterar eventos por origem\r\n const event = model as EventModel;\r\n return this.authorizationService.canEditEventBySource(event.source);\r\n }\r\n\r\n canDelete(model: EntityModel) : boolean {\r\n if (!model) return false;\r\n\r\n // Não preciso testar permissão de remover porque o botão está escondido nesse caso\r\n\r\n /* Verifica se o usuário possui a permissão \"Alterar eventos concluídos */\r\n const event = model as EventModel;\r\n if(event.status == EventStatus.FINALIZED && !this.authorizationService.userHasPermission(Permission.EDIT_END_EVENT)){\r\n return false\r\n }\r\n\r\n // Verifica a permissão de alterar eventos por origem\r\n return this.authorizationService.canEditEventBySource(event.source);\r\n }\r\n\r\n hasLocation(entity: EntityModel): boolean {\r\n let event = entity;\r\n return event &&\r\n (!!event.targetPointLatLong ||\r\n (!!event.stretchStartLatLong && !!event.stretchEndLatLong));\r\n }\r\n\r\n saveData(entity){\r\n // Se esta editando um evento então deixa para subscribeOnChangeEventId fazer a atualização da lista\r\n if(!this.insideEventEdition){\r\n super.saveData(entity);\r\n }\r\n }\r\n\r\n onLinkEventClick(){\r\n let filter: EventFilterModel = new EventFilterModel();\r\n filter.associatedEventId = this.editedEventId;\r\n filter.filterByAssociatedEvent = FilterByAssociatedEvent.NOT_ASSOCIATED; // Carrega somente quem ainda não foi associado\r\n // Não carrega os arquivados no diálogo de seleção de evento\r\n\r\n let dialogRef = this.dialog.open(EventListDialogComponent, {\r\n panelClass: 'sipd-modal',\r\n data: filter\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe( (events: EventModel[]) => {\r\n if(events && events.length > 0){\r\n // Note que quem é alterado são os filhos selecionados, não o pai\r\n this.changeAssociatedEvents(events, this.editedEventId, this.editedEventIdentifier, true);\r\n }\r\n });\r\n }\r\n\r\n canLinkEvent(){\r\n return this.insideEventEdition && this.editedEventId;\r\n }\r\n\r\n onLinkEventManyClick(event: EventModel){\r\n let filter: EventFilterModel = new EventFilterModel();\r\n filter.associatedEventId = event.id;\r\n filter.filterByAssociatedEvent = FilterByAssociatedEvent.NOT_ASSOCIATED; // Carrega somente quem ainda não foi associado\r\n // Não carrega os arquivados no diálogo de seleção de evento\r\n\r\n let dialogRef = this.dialog.open(EventListDialogComponent, {\r\n panelClass: 'sipd-modal',\r\n data: filter\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe( (events: EventModel[]) => {\r\n if(events && events.length > 0){\r\n // Note que quem é alterado são os filhos selecionados, não o pai\r\n this.changeAssociatedEvents(events, event.id, event.identifier, true);\r\n }\r\n });\r\n }\r\n\r\n onAssociateEvent(associateEvent: EventModel){\r\n let filter: EventFilterModel = new EventFilterModel();\r\n filter.associatedEventId = associateEvent.id;\r\n filter.filterByAssociatedEvent = FilterByAssociatedEvent.NOT_ASSOCIATED; // Carrega somente quem ainda não foi associado\r\n // Não carrega os arquivados no diálogo de seleção de evento\r\n\r\n let dialogRef = this.dialog.open(EventListDialogComponent, {\r\n panelClass: 'sipd-modal',\r\n data: filter\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe( (events: EventModel[]) => {\r\n if(events && events.length == 1){\r\n // Note que quem é alterado são os filhos selecionados, não o pai\r\n // A diferença aqui é que passamos o filho como parâmetro, e selecionamos o pai no diálogo\r\n this.changeAssociatedEvents([associateEvent], events[0].id, events[0].identifier, true);\r\n }\r\n });\r\n }\r\n\r\n private changeAssociatedEvents(events: EventModel[], associatedEventId: string, associatedIdentifier: string, associateType?: boolean){\r\n this.logger.debug('changeAssociatedEvents');\r\n this.eventService.changeAssociatedEvent( events, associatedEventId, associatedIdentifier).pipe(first()).subscribe((changedEvents: EventModel[]) => {\r\n if(associateType){\r\n this.toastr.success('Eventos vinculados com sucesso');\r\n }else {\r\n this.toastr.success('Eventos desvinculados com sucesso');\r\n }\r\n changedEvents.forEach( (event: EventModel) => {\r\n this.glEmitEvent(ASSOCIATED_EVENT_UPDATE_PREFIX + 'events-edit', event);\r\n });\r\n this.glEmitEvent(LIST_UPDATE_PREFIX + 'events', null); // Atualiza todas as listas de eventos (normal e dentro de edições)\r\n }, error => {\r\n this.logger.error(error);\r\n this.toastr.error('Erro ao vincular eventos');\r\n });\r\n }\r\n\r\n loadRecordsFromServer(): void {\r\n if (this.insideEventEdition) {\r\n if (!this.editedEventId){\r\n return;\r\n }\r\n\r\n let filter: EventFilterModel = this.filterModel as EventFilterModel;\r\n filter.associatedEventId = this.editedEventId;\r\n filter.archived = ArchivedType.ALL;\r\n }\r\n\r\n super.loadRecordsFromServer();\r\n }\r\n \r\n subscribeOnChangeEditedEventId(){\r\n // É uma lista dentro da edição de evento\r\n if(this.insideEventEdition){\r\n // Este observador é instanciado na respectiva edição de evento\r\n this.editedEventSubscription = this.editedEventObservable.subscribe((event: EventModel) => {\r\n this.logger.debug('EventListComponent.OnChangeEditedEventId()');\r\n // Chamado depois que o evento da edição de evento é carregado do backend\r\n\r\n this.editedEventId = event.id;\r\n this.editedEventIdentifier = event.identifier;\r\n \r\n this.loadRecordsFromServer(); // Carrega a lista de eventos relacionados\r\n });\r\n }\r\n }\r\n\r\n onUnLinkEventClick(event: EventModel){\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: 'Esse Evento será desvinculado do Evento relacionado. Confirma?',\r\n title: \"Desvincular de Evento\",\r\n okLabel: \"Desvincular\"\r\n }\r\n }).afterClosed().pipe(first()).subscribe((option:boolean) => {\r\n if(option) {\r\n // Note que quem é alterado são os filhos selecionados, não o pai\r\n this.changeAssociatedEvents([event], null, null, false);\r\n }\r\n });\r\n }\r\n\r\n canUnLinkEvent(event: EventModel){\r\n return event && event.associatedEventId ? true: false;\r\n }\r\n\r\n onUnLinkEventManyClick(){\r\n const selectEvents = this.getSelectedEvents();\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: 'Os ' + this.selection.selected.length + ' Eventos selecionados serão desvinculados do Evento relacionado. Confirma?',\r\n title: \"Desvincular de Eventos\",\r\n okLabel: \"Desvincular\"\r\n }\r\n }).afterClosed().pipe(first()).subscribe((option:boolean) => {\r\n if(option) {\r\n // Note que quem é alterado são os filhos selecionados, não o pai\r\n this.changeAssociatedEvents(selectEvents, null, null, false);\r\n }\r\n });\r\n }\r\n\r\n getSelectedEvents(): EventModel[] {\r\n const selectedEvents: EventModel[] = [];\r\n\r\n if(this.selection.selected.length > 0) {\r\n this.selection.selected.forEach((event:EventModel) => {\r\n selectedEvents.push(event)\r\n });\r\n }\r\n return selectedEvents;\r\n }\r\n\r\n /** Remoção de multiplos eventos, precisa analizar se na seleção tem eventos relacionados */\r\n onDeleteManyClick(rows: EntityModel[], event?: any ) {\r\n let dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: 'Remover ' + rows.length + ' item(s) selecionado(s)?',\r\n title: 'Remover Evento',\r\n okLabel: 'Remover',\r\n showIdentifier: false\r\n }\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.deleteSelectedEntities(rows);\r\n this.postListDeleteProcess(rows);\r\n }\r\n });\r\n }\r\n\r\n isChildEvent(row: EntityModel){\r\n return (row).associatedEventId != null;\r\n }\r\n\r\n onDeleteClick(row: EntityModel, identifier: string, event: any) {\r\n if(!row) return;\r\n\r\n let dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: 'Remover ' + this.modelName + '?',\r\n title: 'Remover ' + this.modelName,\r\n okLabel: 'Remover',\r\n identifier: identifier,\r\n showIdentifier: true\r\n }\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n let eventsToDelete: EventModel[] = [row];\r\n this.deleteSelectedEntities(eventsToDelete);\r\n }\r\n });\r\n }\r\n\r\n /** Método sobrescrito do pai que permite reusar o componente da lista de eventos\r\n * sem trocar o título do componente que o está contido (evento) */\r\n glUpdateTabTitle(){\r\n if(!this.insideEventEdition) super.glUpdateTabTitle(this.tabTitle);\r\n }\r\n\r\n checkPermissions(){\r\n this.isHiddenButtonCreateEditEvent = !this.authorizationService.userHasPermission(this.permission.CREATE_EDIT_EVENT);\r\n this.isHiddenButtonDeleteEvent = !this.authorizationService.userHasPermission(this.permission.DELETE_EVENT); \r\n } \r\n\r\n /** Método que converte segundos para formato de dias, horas , minutos e segundos */\r\n secondsToHms(seconds) {\r\n seconds = Number(seconds);\r\n //var d = Math.floor(seconds / (3600*24));\r\n var h = Math.floor(seconds / 3600);\r\n var m = Math.floor(seconds % 3600 / 60);\r\n var s = Math.floor(seconds % 60 % 60);\r\n\r\n var hDisplay = \"00\";\r\n var mDisplay = \"00\"\r\n var sDisplay = \"00\"\r\n hDisplay = h > 0 && h < 10 ? \"0\"+ h : (h <= 0 ? \"00\" : h+\"\") ;\r\n mDisplay = m > 0 && m < 10 ? \"0\" + m : (m <= 0 ? \"00\" : m+\"\") ;\r\n sDisplay = s > 0 && s < 10 ? \"0\" + s : (s <= 0 ? \"00\" : s+\"\");\r\n return hDisplay+ \":\" + mDisplay +\":\"+ sDisplay;\r\n }\r\n\r\n /** chamada pelo updateModelItem inscrito no websocket que ouve as mudanças nas operações */\r\n checkInsideEventlistOrNotInsideEvent(entity): boolean{\r\n if(!this.insideEventEdition) // se a lista não está numa edição de evento\r\n return true;\r\n\r\n if(entity.associatedEventId === this.editedEventId ){ // se a lista pertence a esse evento\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n}\r\n","import { GeoModel } from './geo.model';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nexport class DuctModel extends GeoModel{\r\n DUTO_CD_DUTO: string; // um outro id do duto, mas pode estar vazio. (não é referenciado pelos outros kmls, mas deixamos na importação)\r\n to: string;\r\n from: string;\r\n extension: string;\r\n diameter: string;\r\n\r\n public static getPopupContent(feature): string{\r\n\r\n if (feature && feature.properties){\r\n \r\n const duct = feature.properties as DuctModel;\r\n\r\n let typeValues = {OilDuct:\"Oleoduto\", GasDuct:\"Gasoduto\"};\r\n let states: string = duct.states ? duct.states.toString() : '';\r\n let contents: string = `
${ typeValues[duct.type] }
\r\n
${ duct.name }
\r\n
Origem: ${duct.from?duct.from:''}
\r\n
Destino: ${duct.to?duct.to:''}
\r\n
Extensão (m): ${duct.extension?duct.extension:''}
\r\n
Diâmetro (in): ${duct.diameter?duct.diameter:''}
\r\n
UF(s): ${states}
\r\n `;\r\n if (!environment.showPopupLayerTables || duct.description == null || duct.description === \"\") { \r\n return contents;\r\n }\r\n else {\r\n return contents + \"

\" + duct.description\r\n }\r\n }\r\n\r\n return `
Sem Dados
`;\r\n }\r\n}\r\n\r\n\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { Observable, BehaviorSubject, Subject, forkJoin } from 'rxjs';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { EventFilterModel } from 'src/app/pages/event/event-filter/event.filter.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport * as moment from 'moment';\r\nimport { API_VERSION_ENDPOINT } from '../../common/constants';\r\nimport { ArchiveService } from './archive.service';\r\nimport { ArchivedType } from 'src/app/general/filter-component/filter.model';\r\nimport { EventModel } from '../../model/event.model';\r\nimport { AttachmentModel } from '../../model/attachment.model';\r\nimport { first, map } from 'rxjs/operators';\r\n\r\nexport const OBJECT_NAME = 'eventObject';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EventService extends ArchiveService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient\r\n ) {\r\n super(logger, httpClient, `${environment.settings.event_verifications_address}/events`);\r\n\r\n }\r\n\r\n protected filteredLoadFromRestApi(pageIndex?: number, pageSize?: number, sort?: string, filter?: EventFilterModel ): Observable {\r\n\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (filter){\r\n if (filter.startDate){\r\n const startDateTime = moment(filter.startDate).format('x');\r\n params = params.set('start', startDateTime);\r\n }\r\n\r\n if (filter.endDate){\r\n const endDateTime = moment(filter.endDate).format('x');\r\n params = params.set('end', endDateTime);\r\n }\r\n\r\n if (filter.status){\r\n filter.status.forEach( status => {\r\n params = params.append('status', status);\r\n });\r\n }\r\n\r\n if (filter.occurrences){\r\n filter.occurrences.forEach( occurrence => {\r\n params = params.append('occurrences', occurrence);\r\n });\r\n }\r\n\r\n if (filter.analysts){\r\n filter.analysts.forEach( analystId => {\r\n params = params.append('analysts', analystId);\r\n });\r\n }\r\n\r\n if (filter.channels){\r\n filter.channels.forEach( channel => {\r\n params = params.append('communicationChannels', channel);\r\n });\r\n }\r\n\r\n if (filter.sources){\r\n filter.sources.forEach( source => {\r\n params = params.append('sources', source);\r\n });\r\n }\r\n\r\n if (filter.ducts){\r\n filter.ducts.forEach( duct => {\r\n params = params.append('ducts', duct);\r\n });\r\n }\r\n\r\n if (filter.valves){\r\n filter.valves.forEach( valve => {\r\n params = params.append('valves', valve);\r\n });\r\n }\r\n\r\n if (filter.startKM){\r\n params = params.append('startKM', filter.startKM);\r\n }\r\n\r\n if (filter.endKM){\r\n params = params.append('endKM', filter.endKM);\r\n }\r\n\r\n if (filter.archived != ArchivedType.ALL){\r\n params = params.append('archived', (filter.archived == ArchivedType.ARCHIVED) ? String(true) : String(false));\r\n }\r\n\r\n if (filter.associatedEventId ){\r\n params = params.append('associatedEventId', filter.associatedEventId);\r\n }\r\n\r\n if (filter.filterByAssociatedEvent ){\r\n params = params.append('filterByAssociatedEvent', filter.filterByAssociatedEvent);\r\n }\r\n\r\n if (filter.identifier ){\r\n params = params.append('identifier', filter.identifier);\r\n }\r\n \r\n }\r\n\r\n return super.loadFromRestApi(pageIndex, pageSize, sort, params);\r\n }\r\n\r\n public exportEvent(event: EventModel): Observable {\r\n return this.http.get(`${this.apiUrl}/${event.id}/data`, { responseType: 'blob' });\r\n }\r\n\r\n /**\r\n * Obtem a versão do projeto Event-Verification\r\n */\r\n public getServiceVersion(): Observable {\r\n return this.http.get(`${this.apiUrl}/${API_VERSION_ENDPOINT}`,\r\n { responseType: 'text' }\r\n );\r\n }\r\n\r\n getFormElements() {\r\n const formElements = new Map();\r\n return formElements;\r\n }\r\n\r\n private updateRecord(event: EventModel) {\r\n const formElements = this.getFormElements();\r\n return this.edit(event, formElements);\r\n }\r\n\r\n public changeAssociatedEvent(events: EventModel[], associatedEventId: string, associatedIdentifier: string){ \r\n const observables: Observable[] = [];\r\n events.forEach( (event: EventModel) => {\r\n event.associatedEventId = associatedEventId;\r\n event.associatedIdentifier = associatedIdentifier;\r\n observables.push(this.updateRecord(event));\r\n });\r\n return forkJoin(observables);\r\n }\r\n\r\n public create(record: EntityModel, formElements: Map) {\r\n this.logger.debug('EventService.create()');\r\n const formData: FormData = super.buildFormData( OBJECT_NAME , record, formElements);\r\n return super.postAsFormData(this.apiUrl, formData);\r\n }\r\n\r\n public edit(record: EntityModel, formElements: Map) {\r\n this.logger.debug('EventService.edit()');\r\n const formData: FormData = super.buildFormData( OBJECT_NAME , record, formElements);\r\n return super.putAsFormData(this.apiUrl + `/${record.id}`, formData);\r\n }\r\n \r\n public loadAttachmentFile(data : AttachmentModel) : Observable{ \r\n let baseUrl = this.apiUrl+\"/attachment-file\"; \r\n return this.http.get(`${baseUrl}/${data.id}`, { responseType: 'blob' }).pipe(first(), map((blob) => {\r\n return this.blobToFile(blob, data.name);\r\n }));\r\n }\r\n\r\n private blobToFile = (blob: Blob, fileName:string): File => {\r\n let arrayOfBlob = new Array();\r\n arrayOfBlob.push(blob);\r\n let file = new File(arrayOfBlob, fileName);\r\n return file;\r\n }\r\n\r\n public editRecord (record: EntityModel): Observable {\r\n const formData: FormData = super.buildFormData(OBJECT_NAME, record, new Map());\r\n return super.putAsFormData(this.apiUrl + '/' + record.id, formData);\r\n }\r\n}\r\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\r\nimport * as moment from 'moment';\r\nimport { first } from 'rxjs/operators';\r\nimport { ConfirmationDialogComponent } from 'src/app/general/confirmation-dialog/confirmation-dialog.component';\r\nimport { PatrolRepetitionModel } from 'src/app/model/patrol.repetition.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { PatrolModel } from 'src/app/model/patrol.model';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\r\nimport { PatrolService } from 'src/app/service/model/patrol.service';\r\nimport { PredictedDialogRuleOption } from 'src/app/model/enums.enum';\r\n\r\ninterface PeriodTypes {\r\n unit: moment.unitOfTime.DurationConstructor;\r\n viewValue: string;\r\n}\r\n\r\ninterface DaysOfWeek {\r\n value: number;\r\n viewValue: string;\r\n}\r\n\r\n@Component({\r\n selector: 'app-patrol-repetition-dialog',\r\n templateUrl: './patrol-repetition-dialog.component.html',\r\n styleUrls: ['./patrol-repetition-dialog.component.scss']\r\n})\r\nexport class PatrolRepetitionDialogComponent implements OnInit, OnDestroy{\r\n\r\n patrolRepetitionModel: PatrolRepetitionModel = new PatrolRepetitionModel();\r\n patrol: PatrolModel;\r\n\r\n startDate: moment.Moment = moment().add(1, 'day').startOf('day'); // Horário local - dia default é o inicio do dia de amanhã\r\n viewStartDate: string = this.startDate.format(\"DD/MM/yyyy\");\r\n viewStartTime: string = '';\r\n\r\n endDate: moment.Moment;\r\n viewEndDateFilter: string;\r\n \r\n scheduleOption = PredictedDialogRuleOption.CUSTOM;\r\n startRule = PredictedDialogRuleOption.EVERY_PERIOD;\r\n finishRule = PredictedDialogRuleOption.FINISH_AFTER_QUANTITY;\r\n \r\n theEachQuantity: number = 1; // Quantidade de unidades para a próxima repetição, vem 0 se for por dias da semana\r\n afterRepetitionQuantity:number = 1; // Número de repetições, vem 0 se final não for por número\r\n \r\n periodTypesView: PeriodTypes[] = [\r\n {unit: \"days\", viewValue: 'Dia(s)'},\r\n {unit: 'weeks', viewValue: 'Semana(s)'},\r\n {unit: 'months', viewValue: 'Mese(s)'},\r\n {unit: 'years', viewValue: 'Ano(s)'},\r\n ];\r\n \r\n unitPeriodSelected: moment.unitOfTime.DurationConstructor = \"days\";\r\n \r\n // ISO Day of Week\r\n daysOfWeekView: DaysOfWeek[] = [\r\n {value: 1, viewValue: 'Seg'},\r\n {value: 2, viewValue: 'Ter'},\r\n {value: 3, viewValue: 'Qua'},\r\n {value: 4, viewValue: 'Qui'},\r\n {value: 5, viewValue: 'Sex'},\r\n {value: 6, viewValue: 'Sab'},\r\n {value: 7, viewValue: 'Dom'},\r\n ];\r\n\r\n selectedDaysOfWeek: boolean[] = [false,false,false,false,false,false,false]; // Array com todos os dias da semana, indicando se está marcado ou não\r\n daysOfWeek:number[] = []; // Array com apenas os dias marcados\r\n \r\n _observableListWeek: BehaviorSubject = new BehaviorSubject(this.daysOfWeekView);\r\n listweek$:Observable = this._observableListWeek.asObservable();\r\n\r\n constructor(public dialogRef: MatDialogRef, \r\n @Inject (MAT_DIALOG_DATA) public data: PatrolModel,\r\n protected confirmDialog: MatDialog,\r\n private toastr: ToastrService,\r\n protected patrolService: PatrolService) {\r\n\r\n this.patrol = data;\r\n this._observableListWeek.asObservable();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.viewStartTime = moment(this.patrol.startDate).format(\"HH:mm\");\r\n\r\n // Default para novas repetições\r\n this.patrolRepetitionModel.referencePatrolId = this.patrol.id;\r\n this.patrolRepetitionModel.referencePatrolIdentifier = this.patrol.identifier;\r\n\r\n // Tenta carregar a repetição\r\n this.loadFromServer();\r\n }\r\n\r\n private copyModel(src){\r\n return JSON.parse(JSON.stringify(src));\r\n }\r\n\r\n public get predictedDialogRuleOption(): typeof PredictedDialogRuleOption {\r\n return PredictedDialogRuleOption; \r\n }\r\n\r\n loadFromServer(){\r\n this.patrolService.getPatrolRepetitionByReferencePatrolId(this.patrol.id).pipe(first()).subscribe((patrolRepetitionModel:PatrolRepetitionModel) => {\r\n if(patrolRepetitionModel != null) {\r\n this.patrolRepetitionModel = this.copyModel(patrolRepetitionModel);\r\n\r\n this.startRule = this.patrolRepetitionModel.eachPeriod ? PredictedDialogRuleOption.EVERY_PERIOD : PredictedDialogRuleOption.IN_THE_DAYS;\r\n \r\n if(this.patrolRepetitionModel.neverFinish) {\r\n this.finishRule = PredictedDialogRuleOption.FINISH_AFTER_QUANTITY;\r\n this.patrolRepetitionModel.afterNumberRepetitionsToFinish = true;\r\n this.patrolRepetitionModel.afterRepetitionQuantity = 1;\r\n this.patrolRepetitionModel.neverFinish = false;\r\n }\r\n else \r\n this.finishRule = this.patrolRepetitionModel.afterNumberRepetitionsToFinish ? PredictedDialogRuleOption.FINISH_AFTER_QUANTITY : PredictedDialogRuleOption.FINISH_DATE;\r\n \r\n this.startDate = moment(this.patrolRepetitionModel.startDate);\r\n this.viewStartDate = this.startDate.format(\"DD/MM/yyyy\");\r\n this.viewStartTime = this.patrolRepetitionModel.startTime;\r\n\r\n this.theEachQuantity = this.patrolRepetitionModel.theEachQuantity;\r\n this.unitPeriodSelected = this.patrolRepetitionModel.unitPeriodSelected as moment.unitOfTime.DurationConstructor;\r\n\r\n this.daysOfWeek = this.patrolRepetitionModel.daysOfWeek;\r\n if(this.daysOfWeek && this.daysOfWeek.length > 0){\r\n this.populateDaysOfWeek();\r\n }\r\n\r\n this.afterRepetitionQuantity = this.patrolRepetitionModel.afterRepetitionQuantity;\r\n\r\n this.endDate = this.patrolRepetitionModel.endDate ? moment(this.patrolRepetitionModel.endDate) : undefined;\r\n if(this.endDate){\r\n this.viewEndDateFilter = this.endDate.format(\"DD/MM/yyyy\");;\r\n }\r\n } \r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._observableListWeek?.unsubscribe();\r\n this.listweek$ = undefined;\r\n }\r\n\r\n fillDaysOfWeek() {\r\n this.daysOfWeek = [];\r\n for(let i = 0 ; i < 7; i++){\r\n if (this.selectedDaysOfWeek[i]){\r\n this.daysOfWeek.push(i + 1);\r\n }\r\n }\r\n }\r\n\r\n selectDaysOfWeek(day: number, event: MatCheckboxChange) {\r\n let checkBoxElem: MatCheckbox = event.source;\r\n if(event.checked) {\r\n checkBoxElem.checked = true;\r\n this.selectedDaysOfWeek[day - 1] = true;\r\n } else {\r\n checkBoxElem.checked = false;\r\n this.selectedDaysOfWeek[day - 1] = false;\r\n }\r\n\r\n this.fillDaysOfWeek();\r\n }\r\n\r\n private setDayOfWeekFromStartDate(){\r\n // Ao mudar a data de início resetamos os dias da semana selecionados\r\n // e selecionamos o dia da semana da data de início\r\n let day = this.startDate.isoWeekday(); // Sempre 1-7, independe do locale\r\n\r\n this.selectedDaysOfWeek=[false,false,false,false,false,false,false];\r\n this.selectedDaysOfWeek[day - 1] = true;\r\n \r\n this.fillDaysOfWeek();\r\n\r\n this._observableListWeek.next(this.daysOfWeekView);\r\n }\r\n\r\n private populateDaysOfWeek(){\r\n this.selectedDaysOfWeek=[false,false,false,false,false,false,false];\r\n this.daysOfWeek.forEach(day => {\r\n this.selectedDaysOfWeek[day - 1] = true;\r\n });\r\n\r\n this._observableListWeek.next(this.daysOfWeekView);\r\n }\r\n\r\n changeStartRule(){\r\n if(this.startRule === PredictedDialogRuleOption.EVERY_PERIOD && this.theEachQuantity == 0){\r\n this.theEachQuantity = 1;\r\n }\r\n }\r\n\r\n changeFinishRule(){\r\n if(this.finishRule === PredictedDialogRuleOption.FINISH_AFTER_QUANTITY && this.afterRepetitionQuantity == 0){\r\n this.afterRepetitionQuantity = 1; \r\n }\r\n else if (this.finishRule === PredictedDialogRuleOption.FINISH_DATE) {\r\n this.viewEndDateFilter = \" \";\r\n }\r\n }\r\n\r\n applyStartTime(timeString:string){\r\n this.viewStartTime = timeString;\r\n }\r\n\r\n applyStartDate(startDate:moment.Moment) {\r\n this.startDate = startDate.startOf('day'); // Horário local\r\n\r\n if(this.startRule === PredictedDialogRuleOption.IN_THE_DAYS) {\r\n this.setDayOfWeekFromStartDate();\r\n }\r\n }\r\n\r\n applyEndDate(dateString:string) {\r\n this.endDate = moment(dateString, \"DD/MM/YYYY\", true).startOf('day').hours(23).minutes(59).seconds(59).milliseconds(999); // Horário local\r\n }\r\n\r\n onRemoveClick() {\r\n this.confirmDialog.open( ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: \"ATENÇÃO! Esta operação irá remover a repetição e cancelar todas as rondas previstas. Deseja prosseguir?\",\r\n title: \"Remover Repetição\",\r\n okLabel: \"Remover\",\r\n }\r\n }).afterClosed().pipe(first()).subscribe((result: boolean) => {\r\n if (result) {\r\n this.patrolRepetitionModel.active = false; // só é usado para remover a repetição na volta do diálogo\r\n this.dialogRef.close(this.patrolRepetitionModel);\r\n } \r\n });\r\n }\r\n\r\n onSaveClick() {\r\n if(this.finishRule === PredictedDialogRuleOption.FINISH_DATE){\r\n let todayDate = moment().startOf('day'); // Horário local\r\n if(this.endDate.isBefore(this.startDate) || this.endDate.isBefore(todayDate)){\r\n this.toastr.info(\"Informe uma data a partir de \" + this.startDate.format(\"DD/MM/yyyy\"), \"Data Final Inválida\");\r\n return;\r\n } \r\n\r\n if (this.endDate.isAfter(moment(this.startDate).add(30, 'days'))) {\r\n this.toastr.info(\"A data final deve ser no máximo 30 dias após a data inicial\", \"Data Final Inválida\");\r\n return;\r\n }\r\n }\r\n\r\n \r\n\r\n if(this.finishRule === PredictedDialogRuleOption.FINISH_AFTER_QUANTITY){\r\n if(this.afterRepetitionQuantity > 15){\r\n this.toastr.info(\"A quantidade de repetições deve ser no máximo 15\", \"Quantidade de Repetições Inválida\");\r\n return;\r\n }\r\n }\r\n \r\n\r\n\r\n if(this.startRule === PredictedDialogRuleOption.IN_THE_DAYS){\r\n if(this.daysOfWeek.length == 0){\r\n this.toastr.info(\"Informe pelo menos um dia da semana\",\"Dia(s) Selecionado(s)\");\r\n return;\r\n }\r\n }\r\n\r\n this.viewToModel();\r\n this.dialogRef.close(this.patrolRepetitionModel);\r\n }\r\n\r\n private viewToModel(){\r\n this.patrolRepetitionModel.startDate = this.startDate.valueOf();\r\n this.patrolRepetitionModel.startTime = this.viewStartTime;\r\n\r\n if(this.startRule === PredictedDialogRuleOption.EVERY_PERIOD){\r\n this.patrolRepetitionModel.dayWeek = false;\r\n this.patrolRepetitionModel.eachPeriod = true;\r\n this.patrolRepetitionModel.daysOfWeek = [];\r\n this.patrolRepetitionModel.theEachQuantity = this.theEachQuantity;\r\n } else if(this.startRule === PredictedDialogRuleOption.IN_THE_DAYS){ \r\n this.patrolRepetitionModel.dayWeek = true;\r\n this.patrolRepetitionModel.eachPeriod = false;\r\n this.patrolRepetitionModel.theEachQuantity = 0;\r\n this.patrolRepetitionModel.daysOfWeek = this.daysOfWeek;\r\n }\r\n this.patrolRepetitionModel.unitPeriodSelected = this.unitPeriodSelected;\r\n\r\n if(this.finishRule === PredictedDialogRuleOption.NEVER_FINISH) {\r\n this.patrolRepetitionModel.neverFinish = true;\r\n this.patrolRepetitionModel.afterNumberRepetitionsToFinish = false;\r\n this.patrolRepetitionModel.finishDate = false;\r\n this.patrolRepetitionModel.endDate = undefined;\r\n this.patrolRepetitionModel.afterRepetitionQuantity = 0;\r\n } else if(this.finishRule === PredictedDialogRuleOption.FINISH_AFTER_QUANTITY) {\r\n this.patrolRepetitionModel.neverFinish = false;\r\n this.patrolRepetitionModel.afterNumberRepetitionsToFinish = true;\r\n this.patrolRepetitionModel.finishDate = false;\r\n this.patrolRepetitionModel.endDate = undefined;\r\n this.patrolRepetitionModel.afterRepetitionQuantity = this.afterRepetitionQuantity;\r\n } else if(this.finishRule === PredictedDialogRuleOption.FINISH_DATE) { \r\n this.patrolRepetitionModel.neverFinish = false;\r\n this.patrolRepetitionModel.afterNumberRepetitionsToFinish = false;\r\n this.patrolRepetitionModel.finishDate = true;\r\n this.patrolRepetitionModel.afterRepetitionQuantity = 0;\r\n this.patrolRepetitionModel.endDate = this.endDate.valueOf();\r\n }\r\n }\r\n}\r\n","
\r\n {{patrolRepetitionModel?.id == null? 'Criar ': 'Editar '}} Repetição de Ronda: {{patrolRepetitionModel?.referencePatrolIdentifier}} - {{patrol?.name}}\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n Hora Inicial:\r\n \r\n query_builder\r\n Campo Obrigatório\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n A cada:\r\n \r\n
\r\n \r\n \r\n {{ option.viewValue }}\r\n \r\n
\r\n
\r\n\r\n
\r\n Nos dias:\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n Após:\r\n\r\n
\r\n \r\n 1\">repetições\r\n repetição\r\n
\r\n
\r\n\r\n
\r\n No Dia:\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n","
\r\n
\r\n\r\n \r\n\r\n
{{title}}\r\n [Modo de Edição] - {{operationTypeDescription[editionMode.operation.type] + ' ' +\r\n editionMode.operation.identifier}}\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n
\r\n
\r\n \r\n \r\n search\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n 0\" [expanded]=\"layersExpanded\" (opened)=\"layersExpanded=true\" (closed)=\"layersExpanded=false\">\r\n \r\n \r\n layers\r\n Camadas\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n filter_list\r\n Filtro\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n Anos (p/ DCs): \r\n \r\n \r\n
({{layersFilter?.years.length}}/{{allDcYears?.length}})
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n {{year}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n Estados:\r\n \r\n \r\n
({{layersFilter.states.length}}/{{singleDataCacheService.getValues('State').length}})
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n {{state}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n Faixas:\r\n \r\n \r\n
({{layersFilter.bandIds?.length}}/{{bandsFiltered.length}})
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n {{band.name}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n Status (p/ A.Obs.): \r\n \r\n \r\n
{{ layersFilter?.areaStatus === filterOptionALL ? 'Todos' : areaStatusDescriptions[layersFilter?.areaStatus] }}
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n Todos\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {{areaStatusDescriptions[areaStatus.ACTIVE]}}\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {{areaStatusDescriptions[areaStatus.INACTIVE]}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n Responsável (p/ A.Obs.):\r\n \r\n \r\n
({{ layersFilter.responsiblesIds?.length }}/{{ allResponsibles?.length }})
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n {{responsible.name}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n Áreas Observadas:\r\n \r\n \r\n
({{ layersFilter.areasIds?.length }}/{{ areasFiltered?.length }})
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n {{area.name}}\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n \r\n\r\n 0\"\r\n [expanded]=\"layersSearchExpanded[item.key]\" (opened)=\"layersSearchExpanded[item.key]=true\" (closed)=\"layersSearchExpanded[item.key]=false\">\r\n \r\n \r\n \r\n
{{item.key }}
\r\n
\r\n \r\n
({{layersSearchMap.get(item.key)?.length}}/{{layerCount(item.key)}})
\r\n
({{layerCount(item.key)}})
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n {{searchItem.value.name}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n 0\" [expanded]=\"teamTrackingsExpanded\" (opened)=\"teamTrackingsExpanded=true\" (closed)=\"teamTrackingsExpanded=false\">\r\n \r\n \r\n people\r\n Equipes\r\n \r\n
({{teamTrackingsListedCount}}/{{teamTrackingsCount}})
\r\n
({{teamTrackingsCount}})
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{getTeamTrackingObjectTitle(item.value)}}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n {{getTrackingTitle(trackingItem.value)}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n 0\" [expanded]=\"trackingsExpanded['MOBILE_APP']\" (opened)=\"trackingsExpanded['MOBILE_APP']=true\" (closed)=\"trackingsExpanded['MOBILE_APP']=false\">\r\n \r\n \r\n person\r\n Profissionais\r\n \r\n
({{trackingsListedCount['MOBILE_APP']}}/{{trackingsCount['MOBILE_APP']}})
\r\n
({{trackingsCount['MOBILE_APP']}})
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{getTrackingTitle(item.value.tracking)}}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n 0\" [expanded]=\"trackingsExpanded['VEHICLE']\" (opened)=\"trackingsExpanded['VEHICLE']=true\" (closed)=\"trackingsExpanded['VEHICLE']=false\">\r\n \r\n \r\n directions_car\r\n Veículos\r\n \r\n
({{trackingsListedCount['VEHICLE']}}/{{trackingsCount['VEHICLE']}})
\r\n
({{trackingsCount['VEHICLE']}})
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{getTrackingTitle(item.value.tracking)}}\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n 0\" [expanded]=\"eventsExpanded\" (opened)=\"eventsExpanded=true\" (closed)=\"eventsExpanded=false\">\r\n \r\n \r\n flash_on\r\n Eventos\r\n \r\n
({{eventsListedCount}}/{{eventObjectsMap.size}})
\r\n
({{eventObjectsMap.size}})
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n {{ item.value.event.identifier }} - {{ eventStatusDescription[item.value.event.status] }}\r\n {{ item.value.event.date | date:'dd/MM/yyyy HH:mm' }}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n 0\" [expanded]=\"operationsExpanded['EVENT_VERIFICATION']\" (opened)=\"operationsExpanded['EVENT_VERIFICATION']=true\" (closed)=\"operationsExpanded['EVENT_VERIFICATION']=false\">\r\n \r\n \r\n timeline\r\n Verificações\r\n \r\n
({{operationsListedCount['EVENT_VERIFICATION']}}/{{operationsCount['EVENT_VERIFICATION']}})
\r\n
({{operationsCount['EVENT_VERIFICATION']}})
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n {{ getOperationTitle(item.value.operation) }} \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n 0\" [expanded]=\"operationsExpanded['PATROL']\" (opened)=\"operationsExpanded['PATROL']=true\" (closed)=\"operationsExpanded['PATROL']=false\">\r\n \r\n \r\n timeline\r\n Rondas\r\n \r\n
({{operationsListedCount['PATROL']}}/{{operationsCount['PATROL']}})
\r\n
({{operationsCount['PATROL']}})
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n {{ getOperationTitle(item.value.operation) }} \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n 0\" [expanded]=\"historicalTrackingsExpanded\" (opened)=\"historicalTrackingsExpanded=true\" (closed)=\"historicalTrackingsExpanded=false\">\r\n \r\n \r\n show_chart\r\n Rastros\r\n \r\n
({{historicalTrackingsListedCount}}/{{historicalTrackingMap.size}})
\r\n
({{historicalTrackingMap.size}})
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n {{getHistoricalTrackingTitle(item.value.mobileObjectId, item.value.sourceType, item.value.patrolTeam, item.value.operation, item.value.user)}}\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n Status e Acesso\r\n \r\n \r\n Tempo\r\n \r\n
\r\n
\r\n
Intervalo de Tempo:
\r\n \r\n Data Inicial\r\n \r\n \r\n \r\n Hora Inicial\r\n \r\n \r\n \r\n Data Final\r\n \r\n \r\n \r\n Hora Final\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
Filtro:
\r\n \r\n Data Inicial\r\n \r\n \r\n \r\n Hora Inicial\r\n \r\n \r\n \r\n Data Final\r\n \r\n \r\n \r\n Hora Final\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n Sem sinais\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n 0\" [expanded]=\"alertsExpanded\" (opened)=\"alertsExpanded=true\" (closed)=\"alertsExpanded=false\">\r\n \r\n \r\n priority_high\r\n Alertas\r\n \r\n
({{alertsListedCount}}/{{alertObjectsMap.size}})
\r\n
({{alertObjectsMap.size}})
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n {{ item.value.alert.identifier }} - {{item.value.alert.sourceType == 'MOBILE_APP' ? 'APP': 'SIMF'}} - {{item.value.alert.patrolTeam?.name}} - OPS {{item.value.alert.simf?.cpsNumber}}\r\n {{ item.value.alert.timestamp | date:'dd/MM/yyyy HH:mm' }} - {{item.value.alert.patrolTeam?.name}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n \r\n 0\" [expanded]=\"pointsExpanded\" (opened)=\"pointsExpanded=true\" (closed)=\"pointsExpanded=false\">\r\n \r\n \r\n location_on\r\n Pontos\r\n \r\n
({{pointsListedCount}}/{{pointObjectsMap.size}})
\r\n
({{pointObjectsMap.size}})
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n {{ item.value.inspectionPoint.identifier }} - {{item.value.inspectionPoint.band}} {{kmIntToString(item.value.inspectionPoint.km)}} - {{item.value.inspectionPoint.vulnerabilityView}}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n","import { Component, Inject, OnDestroy, OnInit, AfterViewInit, ViewChild, ChangeDetectorRef } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { AlertModel } from 'src/app/model/alert.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { KeyValue } from '@angular/common';\r\nimport tokml from '../../general/tokml';\r\n\r\nimport { BaseGoldenPanel } from '../base-golden-panel/base-golden-panel';\r\nimport { TrackingModel } from 'src/app/model/tracking.model';\r\nimport { LayerFilterModel } from 'src/app/model/layer.filter.model';\r\nimport { FILL_DATA_PREFIX, PAGE_MAXIMIZED_PREFIX, MAP_PAGE, PAGE_READY_PREFIX, UPDATE_DATA_PREFIX, FILTER_OPTION_ALL, \r\n LOCATION_UPDATE_PREFIX, SAVE_DATA_PREFIX, SORT_TIMESTAMP_DESC, USER_NOT_FOUND, SIGNAL_ICON_UPDATE_INTERVAL, SHIFT_DURATION, MAX_TIME_OF_TRACE } from 'src/app/common/constants';\r\nimport { MapInfo, Icons, LatLongMask, LatLongPattern } from 'src/app/common/constants';\r\nimport { StorageService } from '../../service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport * as turf from '@turf/turf'\r\nimport { LoadingListService } from '../../service/loading/loading-list.service';\r\n\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\n\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport * as L from 'leaflet';\r\nimport 'leaflet-polylinedecorator';\r\nimport * as moment from 'moment';\r\n\r\nimport { OperationTypeDescription, SourceType, MapEvents, UserType, ObservedAreaStatus, EventStatusDescription,\r\n ObservedAreaStatusDescription, Permission, MarkerType } from 'src/app/model/enums.enum';\r\nimport { TrackingService } from 'src/app/service/model/tracking.service';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { RouteGeographicalService } from 'src/app/service/model/route-geographical-service';\r\nimport { BaseMapComponent } from 'src/app/general/base-map/base-map.component';\r\nimport {PatrolTeamModel} from 'src/app/model/patrolteam.model';\r\nimport { MatSidenav, MatSidenavContent } from '@angular/material/sidenav';\r\nimport { InspectionPointModel } from '../../model/inspection.point.model';\r\nimport FieldUtils from '../../service/util/field-utils';\r\nimport { InspectionModel } from '../../model/inspection.model';\r\nimport { EventModel } from '../../model/event.model';\r\n\r\nimport * as esri_auth from '@esri/arcgis-rest-auth';\r\nimport { DcModel } from '../../model/dc.model';\r\nimport { UserModel } from 'src/app/model/user.model';\r\nimport { AbstractSignalModel } from 'src/app/model/abstract.signal.model';\r\nimport { ObservedAreaModel } from 'src/app/model/observed.area.model';\r\nimport { first } from 'rxjs/operators';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { EventListDialogComponent } from '../../general/operation/event-list-dialog/event-list-dialog.component';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { MarkerModel } from '../../model/marker.model';\r\nimport { MarkersService } from '../../service/model/markers.service';\r\nimport { MarkerFilterModel } from '../../general/message/marker.filter.model';\r\nimport { MatSliderChange } from '@angular/material/slider';\r\nimport { SignalModel } from '../../model/signal.model';\r\nimport { EventFilterModel } from '../event/event-filter/event.filter.model';\r\nimport { BandModel } from '../../model/band.model';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { VehicleModel } from 'src/app/model/vehicle.model';\r\nimport { TrackPointsDialogComponent } from 'src/app/general/track-points-dialog/track-points-dialog.component';\r\nimport { VehicleSignalModel } from 'src/app/model/vehicle.signal.model';\r\nimport { GeoModel } from 'src/app/model/geo.model';\r\nimport { OperationStatus } from '../../model/enums.enum';\r\nimport { CompanyModel } from 'src/app/model/company.model';\r\n\r\n// TODO scuri Menu = 64, mas não sei exatamente de onde vem esse valor\r\n// TODO scuri Quando o GoldenLayout contabilizar corretamente o Menu, talvez não precisemos ter 2 definições\r\nconst HEADER_VERTICAL_SPACE = 56+1; // pixels (Title) (spid-header=40(ícone)+8+8(padding))\r\nconst MAX_HEADER_VERTICAL_SPACE = 64+28+56; // pixels (Menu+Tab+Title) (ver Tab=IExtendedGoldenLayoutConfig.dimensions.headerHeight=28 em AppComponent)\r\nconst SIDE_HORIZONTAL_SPACE = 350; // pixels (Side - ver HTML #sidenav.width)\r\n\r\nconst authentication = new esri_auth.UserSession({\r\n token: MapInfo.ARCGIS_TOKEN\r\n})\r\n\r\nexport enum FilterOption{\r\n YEAR = 'YEAR',\r\n STATE = 'STATE',\r\n BAND = 'BAND',\r\n AREA_STATUS = 'AREA_STATUS',\r\n AREA_RESPONSIBLE = 'AREA_RESPONSIBLE',\r\n AREA_ID = 'AREA_ID'\r\n}\r\n\r\nexport class AbstractMapObject {\r\n visible: boolean = true;\r\n listed: boolean = true;\r\n popupContent: string;\r\n}\r\n\r\nexport class AlertMapObject extends AbstractMapObject {\r\n // Modelo\r\n alert: AlertModel;\r\n\r\n // Objetos do Mapa\r\n marker: L.Marker;\r\n}\r\n\r\nexport class InspectionPointMapObject extends AbstractMapObject {\r\n // Modelo\r\n inspectionPoint: InspectionPointModel;\r\n\r\n // Objetos do Mapa\r\n marker: L.Marker;\r\n}\r\n\r\nexport class TrackingMapObject extends AbstractMapObject {\r\n // Rastreamento de profissionais e veículos sem equipe\r\n\r\n // Modelo\r\n tracking: TrackingModel;\r\n\r\n // Objetos do Mapa (fica dentro do TrackingModel)\r\n}\r\n\r\nexport class TeamTrackingMapObject extends AbstractMapObject {\r\n // Rastreamento de Equipes\r\n\r\n // Modelo\r\n trackings: TrackingModel [] = [];\r\n\r\n // Repete para não ter que buscar no modelo\r\n patrolTeam: PatrolTeamModel;\r\n\r\n // Objetos do Mapa (fica dentro do TrackingModel)\r\n}\r\n\r\nexport class EventMapObject extends AbstractMapObject {\r\n // Modelo\r\n event: EventModel;\r\n\r\n // Objetos do Mapa\r\n marker: L.Marker;\r\n line: L.Polyline;\r\n}\r\n\r\nexport class OperationMapObject extends AbstractMapObject {\r\n // Modelo\r\n operation: OperationModel;\r\n fileKmlRoute: File;\r\n removedKmlRoute: boolean;\r\n\r\n // Objetos do Mapa\r\n geoRoute: L.GeoJSON;\r\n geoPoints: L.GeoJSON;\r\n geoRouteBounds: L.LatLngBounds;\r\n geoPointsBounds: L.LatLngBounds;\r\n}\r\n\r\nexport class EditionModeObject {\r\n operation: OperationModel;\r\n fileKmlRoute: File;\r\n removedKmlRoute: boolean;\r\n inspections: InspectionModel[];\r\n\r\n wasVisible: boolean;\r\n autoRoute : boolean;\r\n\r\n glassPanel: GlassPanelObject;\r\n OperationId: string;\r\n}\r\n\r\nexport class GlassPanelObject {\r\n geoRectangle : L.Rectangle;\r\n constructor(){\r\n var corner1 = L.latLng(-90, -360),\r\n corner2 = L.latLng(90, 360),\r\n bounds = L.latLngBounds(corner1, corner2);\r\n this.geoRectangle = L.rectangle(bounds, {color:'#AAAAAA', fillOpacity: MapInfo.GLASS_PANEL_OPACITY, stroke: false });\r\n };\r\n}\r\n\r\nconst TIME_FORMAT = 'HH:mm:ss';\r\nconst DATE_FORMAT = 'DD/MM/YYYY';\r\n\r\nexport class HistoricalTrackingObject extends AbstractMapObject {\r\n // Rastro pode ser de um usuário ou de um veículo,\r\n // que podem estar em uma operação, ou apenas em uma equipe, ou isolados\r\n // O rastro de um usuário ou veículo isolado inclui todos os rastros que participou, com e sem operações\r\n // Casos:\r\n // 1- usuário de equipe com operação\r\n // 2- veículo de equipe com operação\r\n // 3- usuário de equipe (sem operação)\r\n // 4- veículo de equipe (sem operação)\r\n // 5- usuário sem equipe\r\n // 6- veículo sem equipe\r\n // Origens:\r\n // 1- Operação (gera um rastro para cada usuário da equipe e para o veículo, mas o sinal tem que ter a operação, ignora data)\r\n // 2- Equipe (gera um rastro para cada usuário da equipe e para o veículo, mas pode incluir várias operações, definido pela data)\r\n // 3- Usuário (um único rastro para aquele usuário, definido pela data)\r\n // 4 - Veículo (um único rastro para aquele veículo, definido pela data)\r\n // Data default:\r\n // Início = Now - Shift\r\n // Fim = = Now\r\n\r\n // Modelo\r\n mobileObjectId: string; // Identificador do Usuário para o App (userId) ou Placa para o Veículo (plate)\r\n sourceType: SourceType; // Indica se é App ou Veículo\r\n user: UserModel; // Se não é de um usuário é null\r\n vehicle: VehicleModel; // Se não é de um veículo é null\r\n patrolTeam: PatrolTeamModel; // Se não tem equipe é null\r\n operation: OperationModel; // Se não tem uma operação é null\r\n\r\n // Lista de marcadores da operação\r\n markers: MarkerModel [];\r\n\r\n //////////////////\r\n // Objetos do Mapa\r\n\r\n /** Linha do rastro desenhada no mapa */\r\n trackingLine: L.Polyline;\r\n trackingDecorator: L.PolylineDecorator;\r\n timeMarkers: L.CircleMarker [];\r\n timeVisible: boolean = true;\r\n stateMarkers: L.Marker [];\r\n stateVisible: boolean = true;\r\n\r\n //////////////////\r\n // Controle de leitura\r\n\r\n firstDate: string; // Somente o dia\r\n firstDateInvalid: boolean;\r\n firstTime: string; // Somente a hora\r\n firstTimeInvalid: boolean;\r\n firstTimestamp: number;\r\n\r\n lastDate: string;\r\n lastDateInvalid: boolean;\r\n lastTime: string;\r\n lastTimeInvalid: boolean;\r\n lastTimestamp: number;\r\n\r\n //////////////////\r\n // Controle de Interação\r\n\r\n // Timestamps são usados nos sliders, Date/Time são usados nos campos de edição de data e hora\r\n\r\n startDate: string; // Somente o dia\r\n startDateInvalid: boolean;\r\n startTime: string; // Somente a hora\r\n startTimeInvalid: boolean;\r\n startTimestamp: number;\r\n\r\n finishDate: string;\r\n finishDateInvalid: boolean;\r\n finishTime: string;\r\n finishTimeInvalid: boolean;\r\n finishTimestamp: number;\r\n finishChanged: boolean = false;\r\n\r\n //////////////////\r\n // Sinais Carregados\r\n\r\n /** Cache em memória de todos os sinais históricos recebidos da ronda ou verificação */\r\n signals : AbstractSignalModel[] = [];\r\n\r\n /** data/hora do último sinal */\r\n lastSignalTimestamp : number;\r\n\r\n /** data/hora do primeiro sinal */\r\n firstSignalTimestamp : number;\r\n\r\n // Outros\r\n accumDistance: number = 0;\r\n}\r\n\r\n\r\n@ProfileClassToConsole()\r\n@Component({\r\n selector: 'app-map',\r\n templateUrl: './map.component.html',\r\n styleUrls: ['./map.component.scss']\r\n})\r\nexport class MapComponent extends BaseGoldenPanel implements OnInit, OnDestroy, AfterViewInit {\r\n title = environment.MAP_TITLE_LABEL;\r\n tabTitle = environment.MAP_TITLE_LABEL;\r\n\r\n loadingListService: LoadingListService = new LoadingListService();\r\n\r\n @ViewChild('sidenav') sidenav: MatSidenav;\r\n openedSideList: boolean = false;\r\n\r\n @ViewChild('sidenavcontent') sidenavcontent: MatSidenavContent;\r\n \r\n searchValue: string;\r\n searchTimeOut;\r\n layersSearchCount: number;\r\n lastSearchResult;\r\n\r\n // Usados no baseMap\r\n mapStyle : any;\r\n\r\n @ViewChild(BaseMapComponent)\r\n protected baseMap: BaseMapComponent;\r\n\r\n // Marcador manual\r\n\r\n locationMarkerLatLong : string = undefined;\r\n locationMarker : L.Marker;\r\n\r\n /**\r\n * ####### Edition Mode\r\n */\r\n editionMode : EditionModeObject;\r\n\r\n\r\n /**\r\n * ####### Tracking\r\n */\r\n trackingObjectsMap: Map = new Map();\r\n trackingsVisible = { MOBILE_APP: true, VEHICLE: true};\r\n trackingsListedCount = { MOBILE_APP: 0, VEHICLE: 0};\r\n trackingsCount = { MOBILE_APP: 0, VEHICLE: 0};\r\n trackingsExpanded = { MOBILE_APP: false, VEHICLE: false};\r\n\r\n /**\r\n * ####### Team Tracking\r\n */\r\n teamTrackingObjectsMap: Map = new Map();\r\n teamTrackingsVisible = true;\r\n teamTrackingsListedCount = 0;\r\n teamTrackingsCount = 0;\r\n teamTrackingsExpanded = false;\r\n\r\n private lostSignalStatusCheckInterval: NodeJS.Timeout;\r\n\r\n /**\r\n * ####### ALERT\r\n */\r\n alertObjectsMap: Map = new Map();\r\n alertsVisible: boolean = true;\r\n alertsListedCount: number = 0;\r\n alertsExpanded: boolean = false;\r\n\r\n private alertIcon = L.icon({\r\n iconUrl: Icons.ICON_URL_ALERT,\r\n iconSize: [ MapInfo.ICON_SIZE, MapInfo.ICON_SIZE ],\r\n iconAnchor: [ MapInfo.ICON_SIZE/2, MapInfo.ICON_SIZE ] // no centro da base do ícone\r\n });\r\n\r\n\r\n /**\r\n * ####### InspectionPoint\r\n */\r\n pointObjectsMap: Map = new Map();\r\n pointsVisible: boolean = true;\r\n pointsListedCount: number = 0;\r\n pointsExpanded: boolean = false;\r\n\r\n private pointIcon = L.icon({\r\n iconUrl: Icons.ICON_URL_POINT,\r\n iconSize: [ MapInfo.ICON_SIZE, MapInfo.ICON_SIZE ],\r\n iconAnchor: [ MapInfo.ICON_SIZE/2, MapInfo.ICON_SIZE ] // no centro da base do ícone\r\n });\r\n\r\n\r\n /**\r\n * ####### EVENT\r\n */\r\n eventObjectsMap: Map = new Map();\r\n eventsVisible: boolean = true;\r\n eventsListedCount: number = 0;\r\n eventsExpanded: boolean = false;\r\n\r\n private eventIcon = L.icon({\r\n iconUrl: Icons.ICON_URL_EVENT,\r\n iconSize: [ MapInfo.ICON_SIZE, MapInfo.ICON_SIZE ],\r\n iconAnchor: [ MapInfo.ICON_SIZE/2, MapInfo.ICON_SIZE ] // no centro da base do ícone\r\n });\r\n\r\n\r\n /**\r\n * ####### HISTORICAL TRACKING\r\n */\r\n historicalTrackingMap: Map = new Map();\r\n historicalTrackingsVisible: boolean = true;\r\n historicalTrackingsListedCount: number = 0;\r\n historicalTrackingsExpanded: boolean = false;\r\n\r\n private onNewMarkerSubscription: Subscription;\r\n\r\n private markerIcon = L.icon({\r\n iconUrl: Icons.ICON_URL_STATE_MARKER,\r\n iconSize: [ MapInfo.ROUTE_ICON_SIZE, MapInfo.ROUTE_ICON_SIZE ],\r\n iconAnchor: [ MapInfo.ROUTE_ICON_SIZE/2, MapInfo.ROUTE_ICON_SIZE ] // no centro da base do ícone\r\n });\r\n\r\n /**\r\n * ####### Operations\r\n */\r\n operationObjectsMap : Map = new Map();\r\n operationsVisible = {'PATROL': true, 'EVENT_VERIFICATION': true};\r\n operationsListedCount = {'PATROL': 0, 'EVENT_VERIFICATION': 0};\r\n operationsCount = {'PATROL': 0, 'EVENT_VERIFICATION': 0};\r\n operationsExpanded = {'PATROL': false, 'EVENT_VERIFICATION': false};\r\n\r\n /**\r\n * ####### Highlight\r\n */\r\n highlight: L.Layer;\r\n highlightLine: L.Layer;\r\n\r\n /**\r\n * ####### Layers\r\n */\r\n // Key= layerId, value=layer com todos os dados da camada\r\n layersMap: Map = new Map();\r\n layersVisible: boolean = true;\r\n layersExpanded: boolean = false;\r\n\r\n layersSearchMap: Map = new Map();\r\n layersSearchExpanded: boolean[] = [];\r\n\r\n // ####### Filtro de Camadas\r\n\r\n /** filtro usado no base map */\r\n layersFilter: LayerFilterModel = new LayerFilterModel();\r\n\r\n allDcYears: string[] = []; // Todos os anos que possuem DCs\r\n\r\n allBands: BandModel[] = []; // Todas as faixas\r\n bandsFiltered: BandModel[] = []; // conteúdo da lista de faixas filtradas por estado\r\n\r\n allResponsibles: UserModel[] = []; // conteúdo da lista de Responsáveis\r\n allObservedAreas: ObservedAreaModel[] = []; // Todas as Áreas Observadas\r\n areasFiltered: ObservedAreaModel[] = []; // conteúdo da lista de Áreas Observadas filtrada por Estados, Faixas, Status e Responsável\r\n\r\n lastSavedArea: ObservedAreaModel;\r\n\r\n // ####### Enums used in HTML\r\n\r\n operationTypeDescription = OperationTypeDescription;\r\n latLongPattern = LatLongPattern;\r\n latLongMask = LatLongMask;\r\n permission = Permission;\r\n eventStatusDescription = EventStatusDescription;\r\n sourceType: SourceType;\r\n filterOption = FilterOption;\r\n filterOptionALL = FILTER_OPTION_ALL;\r\n areaStatus = ObservedAreaStatus;\r\n areaStatusDescriptions = ObservedAreaStatusDescription;\r\n\r\n kmIntToString = FieldUtils.kmIntToString;\r\n\r\n private reloadUsersSubscription: Subscription;\r\n\r\n constructor(public logger: NGXLogger,\r\n private trackingService: TrackingService, // Somente usado para carregar dados históricos\r\n private routeGeographicalObjectService: RouteGeographicalService,\r\n private markerService: MarkersService,\r\n private storageService: StorageService,\r\n private toastr: ToastrService,\r\n protected dialog: MatDialog,\r\n private entityCacheService: EntityCacheService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n protected changeDetector: ChangeDetectorRef,\r\n public authorizationService: AuthorizationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayoutComponent: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected goldenLayoutContainer: GoldenLayout.Container) {\r\n super(logger, goldenLayoutComponent, goldenLayoutContainer);\r\n }\r\n\r\n ngOnInit(){\r\n this.logger.debug(\"MapComponent.ngOnInit()\");\r\n this.layersFilter = new LayerFilterModel();\r\n \r\n this.loadFormOptionsData();\r\n\r\n this.glUpdateTabTitle(this.tabTitle);\r\n this.loadFromCache();\r\n\r\n this.subscribeOnFillData();\r\n this.subscribeOnPageMaximizedEvent();\r\n this.subscribeOnModelUpdate();\r\n this.subscribeToSaveEdit();\r\n this.subscribeToNewMarkersNotifications();\r\n this.subscribeOnLostSignalStatusCheck();\r\n\r\n this.editionMode = null;\r\n }\r\n\r\n ngOnDestroy(){\r\n this.glUnSubscribeEvent(FILL_DATA_PREFIX + MAP_PAGE);\r\n this.glUnSubscribeEvent(PAGE_MAXIMIZED_PREFIX + MAP_PAGE);\r\n this.glUnSubscribeEvent(SAVE_DATA_PREFIX + 'patrols-edit');\r\n this.glUnSubscribeEvent(SAVE_DATA_PREFIX + 'verifications-edit');\r\n this.glUnSubscribeEvent(SAVE_DATA_PREFIX + 'events-edit');\r\n this.glUnSubscribeEvent(SAVE_DATA_PREFIX + 'points-edit');\r\n this.glUnSubscribeEvent(SAVE_DATA_PREFIX + 'observed-areas-edit');\r\n this.glUnSubscribeEvent(UPDATE_DATA_PREFIX + 'patrols-edit');\r\n this.glUnSubscribeEvent(UPDATE_DATA_PREFIX + 'verifications-edit');\r\n \r\n if (this.editionMode) this.glEmitEvent(LOCATION_UPDATE_PREFIX + 'operation-edit', {id: this.editionMode.OperationId, clearEditionMode: true});\r\n\r\n this.onNewMarkerSubscription?.unsubscribe();\r\n this.reloadUsersSubscription?.unsubscribe();\r\n\r\n if (this.searchTimeOut) {clearTimeout(this.searchTimeOut); this.searchTimeOut = null;}\r\n if (this.lostSignalStatusCheckInterval) clearInterval(this.lostSignalStatusCheckInterval);\r\n\r\n this.loadingListService.destroy();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.logger.debug(\"MapComponent.ngAfterViewInit\");\r\n this.baseMap.initializeLayers(this.layersMap);\r\n\r\n setTimeout(() => {\r\n\r\n // Feito um tempo depois porque o mapa demora para inicializar\r\n this.glEmitEvent(PAGE_READY_PREFIX + MAP_PAGE, null);\r\n\r\n // Para forçar uma leitura dos últimos sinais ao abrir essa tela\r\n this.trackingService.loadLastVehicleSignals(this.loadingListService, true);\r\n this.trackingService.loadLastSignals(this.loadingListService, true);\r\n\r\n if (this.storageService.hasPopoutData()) {\r\n const popout = this.storageService.getPopoutData();\r\n this.restorePopoutData(popout);\r\n //this.storageService.setPopoutData(null); // TODO scuri Porque isso está comentado?\r\n }\r\n }, 500);\r\n }\r\n\r\n getShowSpinner() {\r\n return this.loadingListService.getShowSpinner();\r\n }\r\n\r\n subscribeOnPageMaximizedEvent(){\r\n this.glSubscribeEvent(PAGE_MAXIMIZED_PREFIX + MAP_PAGE, (data:string) => {\r\n this.glOnResize(true);\r\n });\r\n }\r\n\r\n subscribeOnFillData(){\r\n this.glSubscribeEvent(FILL_DATA_PREFIX + MAP_PAGE, (data) => {\r\n this.fillData(data);\r\n });\r\n }\r\n\r\n private loadFormOptionsData() {\r\n const metadatas: string[] = [\r\n \"State\"];\r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n\r\n private fillData(data: any) {\r\n if (data.tracking)\r\n this.onTrackingSelection(data.tracking, data.fit);\r\n else if (data.trackingList)\r\n this.onTrackingListSelection(data.trackingList, data.fit);\r\n else if (data.removeEditionMode)\r\n this.onRemoveEditionMode(data.operationId, data.operationType);\r\n else if (data.updatedLayer)\r\n this.updateLayer(data.updatedLayer);\r\n else if (data.layerData)\r\n this.onLayerSelection(data.layerData);\r\n else if (data.layerDataList)\r\n this.onLayerListSelection(data.layerDataList);\r\n else if (data.editionMode !== undefined) // Mudando para true ou false\r\n this.onEditionModeSelection(data);\r\n else {\r\n // Não permite mudar o mapa se modo de edição está ativo\r\n if (this.editionMode) {\r\n this.toastr.warning(\"Modo de Edição ativo, desative para adicionar novos elementos.\");\r\n return;\r\n }\r\n\r\n if (data.historicalTracking)\r\n this.onHistoricalTrackingSelection(data.historicalTracking);\r\n else if (data.historicalTrackingList)\r\n this.onHistoricalTrackingListSelection(data.historicalTrackingList);\r\n else if (data.historicalTrackingLastOperation)\r\n this.onHistoricalTrackingLastOperationSelection(data.historicalTrackingLastOperation);\r\n else if (data.historicalTrackingLastOperationList)\r\n this.onHistoricalTrackingLastOperationListSelection(data.historicalTrackingLastOperationList);\r\n else if (data.historicalTrackingOperation)\r\n this.onHistoricalTrackingOperationSelection(data.historicalTrackingOperation, true);\r\n else if (data.historicalTrackingOperationList)\r\n this.onHistoricalTrackingOperationListSelection(data.historicalTrackingOperationList);\r\n else if (data.historicalTrackingTeam)\r\n this.onHistoricalTrackingTeamSelection(data.historicalTrackingTeam, true);\r\n else if (data.historicalTrackingTeamList)\r\n this.onHistoricalTrackingTeamListSelection(data.historicalTrackingTeamList);\r\n else if (data.historicalTrackingUser)\r\n this.onHistoricalTrackingUserSelection(data.historicalTrackingUser, true);\r\n else if (data.historicalTrackingUserList)\r\n this.onHistoricalTrackingUserListSelection(data.historicalTrackingUserList);\r\n else if (data.historicalTrackingVehicle)\r\n this.onHistoricalTrackingVehicleSelection(data.historicalTrackingVehicle, true);\r\n else if (data.historicalTrackingVehicleList)\r\n this.onHistoricalTrackingVehicleListSelection(data.historicalTrackingVehicleList);\r\n else if (data.operationId)\r\n this.onOperationIdSelection(data, true);\r\n else if (data.mapEvent === MapEvents.OPERATION_LOCATION)\r\n this.onOperationSelection(data.entity, true);\r\n else if (data.mapEvent === MapEvents.MANY_OPERATION_LOCATION)\r\n this.onOperationListSelection(data.entityList);\r\n else if (data.alert)\r\n this.onAlertSelection(data.alert, true);\r\n else if (data.alertList)\r\n this.onAlertListSelection(data.alertList);\r\n else if (data.inspectionPoint)\r\n this.onInspectionPointSelection(data.inspectionPoint, true);\r\n else if (data.inspectionPointList)\r\n this.onInspectionPointListSelection(data.inspectionPointList);\r\n else if (data.mapEvent === MapEvents.EVENT_LOCATION)\r\n this.onEventSelection(data.entity, true);\r\n else if (data.mapEvent === MapEvents.MANY_EVENT_LOCATION)\r\n this.onEventListSelection(data.entityList);\r\n else if (data.mapEvent === MapEvents.OBSERVED_AREA_LOCATION)\r\n this.onObservedAreaSelection(data.entity, true);\r\n else if (data.mapEvent === MapEvents.MANY_OBSERVED_AREA_LOCATION)\r\n this.onObservedAreaListSelection(data.entityList);\r\n }\r\n }\r\n\r\n public subscribeToSaveEdit() {\r\n // Escuta a edição correspondente para saber se algo foi modificado\r\n\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + 'patrols-edit', (data) => {\r\n if (this.operationObjectsGet(data.entity.id, data.entity.type))\r\n this.onOperationSelection(data.entity, false);\r\n });\r\n\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + 'verifications-edit', (data) => {\r\n if (this.operationObjectsGet(data.entity.id, data.entity.type))\r\n this.onOperationSelection(data.entity, false);\r\n });\r\n\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + 'events-edit', (data) => {\r\n if (this.eventObjectsMap.get(data.entity.id))\r\n this.onEventSelection(data.entity, false);\r\n });\r\n\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + 'points-edit', (data) => {\r\n if (this.pointObjectsMap.get(data.entity.id))\r\n this.onInspectionPointSelection(data.entity, false);\r\n });\r\n\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + 'observed-areas-edit', (data) => {\r\n this.onObservedAreaSaved(data.entity);\r\n });\r\n }\r\n\r\n renderComponent() {\r\n // aguarda um pouco para outras tarefas terminarem\r\n setTimeout(() => {\r\n this.changeDetector.detectChanges();\r\n }, 250);\r\n }\r\n\r\n\r\n ///////////////////////////////////\r\n //// Team Tracking\r\n\r\n hasTeamTracking(): boolean {\r\n return this.teamTrackingObjectsMap.size != 0;\r\n }\r\n\r\n getTeamTrackingObjectTitle(teamTracking: TeamTrackingMapObject): string {\r\n return this.getPatrolTeamTitle(teamTracking.patrolTeam);\r\n }\r\n\r\n onTeamTrackingClick(teamTrackingObject: TeamTrackingMapObject){\r\n let trackings: TrackingModel[] = [];\r\n if (teamTrackingObject.visible) {\r\n teamTrackingObject.trackings.forEach(tracking =>{\r\n trackings.push(tracking);\r\n });\r\n }\r\n let markers = this.baseMap.centerTrackingMarkers(trackings);\r\n this.highlightMarkers(markers);\r\n }\r\n\r\n onTeamTrackingRemove(teamTrackingObject: TeamTrackingMapObject) {\r\n teamTrackingObject.trackings.forEach(tracking =>{\r\n tracking.removedFromMap = true;\r\n this.baseMap.removeTrackingMarker(tracking);\r\n });\r\n this.teamTrackingObjectsMap.delete(teamTrackingObject.patrolTeam.id);\r\n this.teamTrackingsCount--;\r\n if (teamTrackingObject.listed) this.teamTrackingsListedCount--;\r\n }\r\n\r\n onTeamTrackingsRemoveClick(){\r\n this.teamTrackingObjectsMap.forEach( (teamTrackingObject, id) => {\r\n this.onTeamTrackingRemove(teamTrackingObject);\r\n });\r\n }\r\n\r\n onTeamTrackingHistoricalTrackingClick(teamTrackingObject: TeamTrackingMapObject) {\r\n this.onHistoricalTrackingTeamSelection(teamTrackingObject.patrolTeam, true);\r\n }\r\n\r\n onTeamTrackingVisibilityClick(teamTrackingObject: TeamTrackingMapObject) {\r\n if (teamTrackingObject.visible) {\r\n teamTrackingObject.visible = false;\r\n teamTrackingObject.trackings.forEach(tracking =>{\r\n this.baseMap.removeTrackingMarker(tracking);\r\n });\r\n }\r\n else{\r\n teamTrackingObject.visible = true;\r\n teamTrackingObject.trackings.forEach(tracking =>{\r\n this.baseMap.updateTrackingMarker(tracking, false);\r\n });\r\n }\r\n }\r\n\r\n onTeamTrackingsVisibilityClick(){\r\n this.teamTrackingObjectsMap.forEach( (teamTrackingObject, id) => {\r\n if (this.teamTrackingsVisible) {\r\n teamTrackingObject.visible = false;\r\n teamTrackingObject.trackings.forEach(tracking =>{\r\n this.baseMap.removeTrackingMarker(tracking);\r\n });\r\n }\r\n else{\r\n teamTrackingObject.visible = true;\r\n teamTrackingObject.trackings.forEach(tracking =>{\r\n this.baseMap.updateTrackingMarker(tracking, false);\r\n });\r\n }\r\n });\r\n\r\n if (this.teamTrackingsVisible) {\r\n this.teamTrackingsVisible = false;\r\n }\r\n else{\r\n this.teamTrackingsVisible = true;\r\n }\r\n }\r\n\r\n teamTrackingListOrder = (a: KeyValue, b: KeyValue): number => {\r\n return a.value.patrolTeam.name.localeCompare(b.value.patrolTeam.name);\r\n } \r\n\r\n onTeamTrackingItemClick(tracking: TrackingModel){\r\n let marker = this.baseMap.centerTrackingMarker(tracking);\r\n this.highlightMarker(marker);\r\n }\r\n\r\n trackingItemListOrder = (a: KeyValue, b: KeyValue): number => {\r\n if (a.value.signal.sourceType == 'MOBILE_APP' && b.value.signal.sourceType == 'VEHICLE')\r\n return -1;\r\n else if (a.value.signal.sourceType == 'VEHICLE' && b.value.signal.sourceType == 'MOBILE_APP')\r\n return 1;\r\n else if (a.value.signal.sourceType == 'MOBILE_APP' && b.value.signal.sourceType == 'MOBILE_APP') {\r\n return a.value.user?.name.localeCompare(b.value.user?.name);\r\n }\r\n else { // Ambos VEHICLE\r\n return a.value.signal.mobileObjectId.localeCompare(b.value.signal.mobileObjectId);\r\n }\r\n }\r\n \r\n ///////////////////////////////////\r\n //// Tracking\r\n\r\n /** Programa a execução do listener de sinal perdido para intervalos regulares \r\n * Verifica se algum objeto móvel perdeu o sinal, e se for o caso, atualiza seu ícone no mapa\r\n * (o ícone de pessoa ou veículo deixa de ficar colorido e fica cinza)\r\n */\r\n private subscribeOnLostSignalStatusCheck(){\r\n this.lostSignalStatusCheckInterval = setInterval( () => {\r\n this.logger.trace('***** Running update lost signal job.');\r\n // Só atualiza tracking existente\r\n this.trackingObjectsMap.forEach( (trackingObject: TrackingMapObject) => {\r\n this.trackingService.updateIcon(trackingObject.tracking);\r\n\r\n if (this.trackingsVisible[trackingObject.tracking.signal.sourceType] && trackingObject.visible) {\r\n this.baseMap.updateTrackingMarker(trackingObject.tracking, false);\r\n }\r\n });\r\n this.teamTrackingObjectsMap.forEach( (teamTrackingObject: TeamTrackingMapObject) => {\r\n teamTrackingObject.trackings.forEach(tracking => {\r\n this.trackingService.updateIcon(tracking);\r\n\r\n if (this.teamTrackingsVisible && teamTrackingObject.visible) {\r\n this.baseMap.updateTrackingMarker(tracking, false);\r\n }\r\n });\r\n });\r\n }, SIGNAL_ICON_UPDATE_INTERVAL);\r\n }\r\n\r\n hasTracking(sourceType: string): boolean {\r\n let found: boolean = false;\r\n this.trackingObjectsMap.forEach( (trackingObject: TrackingMapObject) => {\r\n if (trackingObject.tracking.signal.sourceType == sourceType) {\r\n found = true;\r\n return;\r\n }\r\n });\r\n return found;\r\n }\r\n\r\n getTrackingId(tracking: TrackingModel): string {\r\n return tracking.signal.mobileObjectId;\r\n }\r\n\r\n isTrackingFromSource(tracking: TrackingModel, sourceType: string): boolean {\r\n return tracking.signal.sourceType == sourceType;\r\n }\r\n\r\n getTrackingTitle(tracking: TrackingModel): string {\r\n if (!tracking) return;\r\n\r\n if (tracking.signal.sourceType == 'MOBILE_APP') {\r\n return tracking.user ? tracking.user.name: USER_NOT_FOUND; // A pedido, aqui só mostra o nome do usuário, não inclui o login\r\n }\r\n else {\r\n return tracking.signal.mobileObjectId; // É a placa do veículo\r\n }\r\n }\r\n\r\n private selectTeamTracking(tracking: TrackingModel, fit: boolean) {\r\n // Remove da lista sem equipe se estava lá\r\n let trackingObject = this.trackingObjectsMap.get(this.getTrackingId(tracking));\r\n if (trackingObject) {\r\n this.trackingRemove(trackingObject);\r\n }\r\n\r\n let teamTrackingObject = this.teamTrackingObjectsMap.get(tracking.patrolTeam.id);\r\n if (!teamTrackingObject) {\r\n teamTrackingObject = new TeamTrackingMapObject();\r\n this.teamTrackingObjectsMap.set(tracking.patrolTeam.id, teamTrackingObject);\r\n\r\n teamTrackingObject.patrolTeam = tracking.patrolTeam;\r\n\r\n this.teamTrackingsCount++;\r\n }\r\n\r\n let found: boolean = false;\r\n teamTrackingObject.trackings.forEach( (t, i) => {\r\n if (t.signal.mobileObjectId == tracking.signal.mobileObjectId) {\r\n found = true;\r\n teamTrackingObject.trackings[i] = tracking;\r\n }\r\n });\r\n if (!found){\r\n teamTrackingObject.trackings.push(tracking);\r\n }\r\n\r\n if (this.teamTrackingsVisible) {\r\n let marker = this.baseMap.updateTrackingMarker(tracking, fit);\r\n teamTrackingObject.visible = true;\r\n\r\n if (marker){\r\n this.highlightMarker(marker);\r\n }\r\n }\r\n\r\n if (this.searchValue) {\r\n this.updateTeamTrackingListed(teamTrackingObject);\r\n }\r\n\r\n this.updateTeamTrackingListedCount();\r\n }\r\n\r\n private selectTracking(tracking: TrackingModel, fit: boolean) {\r\n let trackingObject = this.trackingObjectsMap.get(this.getTrackingId(tracking));\r\n if (!trackingObject) {\r\n trackingObject = new TrackingMapObject();\r\n this.trackingObjectsMap.set(this.getTrackingId(tracking), trackingObject);\r\n\r\n this.trackingsCount[tracking.signal.sourceType]++;\r\n }\r\n\r\n trackingObject.tracking = tracking;\r\n // TODO scuri Não usamos trackingObject.popupContent porque o conteúdo é atualizado dinamicamente ao longo do tempo. O ideal é o basemap armazenar essa string.\r\n\r\n if (this.trackingsVisible[tracking.signal.sourceType]) {\r\n let marker = this.baseMap.updateTrackingMarker(tracking, fit);\r\n trackingObject.visible = true;\r\n\r\n if (marker){\r\n this.highlightMarker(marker);\r\n }\r\n }\r\n\r\n if (this.searchValue) {\r\n this.updateTrackingListed(trackingObject);\r\n }\r\n\r\n this.updateTrackingListedCount();\r\n }\r\n\r\n onTrackingSelection(tracking: TrackingModel, fit: boolean) {\r\n // Não fazer essa chamada para evitar sobrecarregar o log, descomentar apenas quando necessário\r\n // this.logger.debug('MapComponent.onTrackingSelection()');\r\n\r\n if(!tracking || !tracking.signal) return;\r\n\r\n this.updateHistoricalTracking(tracking);\r\n\r\n let specificPlacements = this.storageService.getSpecificPlacementIds();\r\n if (tracking.invalidInfo || tracking.removedFromMap || !this.trackingService.isPermittedPlacement(tracking, specificPlacements)) return;\r\n\r\n if (tracking.patrolTeam) {\r\n this.selectTeamTracking(tracking, fit);\r\n }\r\n else {\r\n this.selectTracking(tracking, fit);\r\n }\r\n\r\n if (fit) this.renderComponent();\r\n }\r\n\r\n onTrackingListSelection(trackingList: TrackingModel[], fit: boolean){\r\n trackingList.forEach((tracking) =>{\r\n this.onTrackingSelection(tracking, false);\r\n });\r\n\r\n if (fit) {\r\n this.fitTrackingListBounds(trackingList);\r\n }\r\n\r\n this.renderComponent();\r\n }\r\n\r\n getLatLongBounds(latLongs: L.LatLngTuple[]){\r\n // Aceita também um array de coordenadas no construtor\r\n let bounds: L.LatLngBounds = new L.LatLngBounds(latLongs).pad(MapInfo.BOUNDS_PAD_RATIO);\r\n return bounds;\r\n }\r\n\r\n fitTrackingListBounds(trackingList: TrackingModel[]) {\r\n let latLongs: L.LatLngTuple[] = [];\r\n\r\n trackingList.forEach(tracking =>{\r\n latLongs.push([tracking.signal.latitude, tracking.signal.longitude]);\r\n });\r\n\r\n if (latLongs.length > 1) {\r\n let bounds: L.LatLngBounds = this.getLatLongBounds(latLongs);\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n else if (latLongs.length == 1) {\r\n this.baseMap.fitPoint(latLongs[0]);\r\n }\r\n }\r\n\r\n onTrackingClick(trackingObject: TrackingMapObject){\r\n if (trackingObject.visible) {\r\n let marker = this.baseMap.centerTrackingMarker(trackingObject.tracking);\r\n this.highlightMarker(marker);\r\n }\r\n }\r\n\r\n trackingRemove(trackingObject: TrackingMapObject){\r\n this.baseMap.removeTrackingMarker(trackingObject.tracking);\r\n this.trackingObjectsMap.delete(this.getTrackingId(trackingObject.tracking));\r\n this.trackingsCount[trackingObject.tracking.signal.sourceType]--;\r\n if (trackingObject.listed) this.trackingsListedCount[trackingObject.tracking.signal.sourceType]--;\r\n }\r\n\r\n onTrackingRemove(tracking : TrackingModel) {\r\n this.logger.debug('MapComponent.onTrackingRemove()');\r\n if(!tracking || !tracking.signal) return;\r\n\r\n let trackingObject: TrackingMapObject = this.trackingObjectsMap.get(this.getTrackingId(tracking));\r\n if (trackingObject) {\r\n trackingObject.tracking.removedFromMap = true;\r\n this.trackingRemove(trackingObject);\r\n }\r\n }\r\n\r\n onTrackingsRemoveClick(sourceType: string){\r\n this.trackingObjectsMap.forEach( (trackingObject, id) => {\r\n if (trackingObject.tracking.signal.sourceType == sourceType) {\r\n trackingObject.tracking.removedFromMap = true;\r\n this.trackingRemove(trackingObject);\r\n }\r\n });\r\n }\r\n\r\n onTrackingHistoricalTrackingClick(trackingObject: TrackingMapObject) {\r\n if (trackingObject.tracking.signal.sourceType == 'MOBILE_APP') {\r\n this.onHistoricalTracking(trackingObject.tracking.user.id, SourceType.MOBILE_APP, null, null, trackingObject.tracking.user, true);\r\n }\r\n else{\r\n this.onHistoricalTracking(trackingObject.tracking.signal.mobileObjectId, SourceType.VEHICLE, null, null, null, true);\r\n }\r\n }\r\n\r\n onTrackingVisibilityClick(trackingObject: TrackingMapObject) {\r\n if (trackingObject.visible) {\r\n trackingObject.visible = false;\r\n this.baseMap.removeTrackingMarker(trackingObject.tracking);\r\n }\r\n else{\r\n trackingObject.visible = true;\r\n this.baseMap.updateTrackingMarker(trackingObject.tracking, false);\r\n }\r\n }\r\n\r\n onTrackingsVisibilityClick(sourceType: string){\r\n this.trackingObjectsMap.forEach( (trackingObject, id) => {\r\n if (trackingObject.tracking.signal.sourceType == sourceType) {\r\n if (this.trackingsVisible[sourceType]) {\r\n trackingObject.visible = false;\r\n this.baseMap.removeTrackingMarker(trackingObject.tracking);\r\n }\r\n else{\r\n trackingObject.visible = true;\r\n this.baseMap.updateTrackingMarker(trackingObject.tracking, false);\r\n }\r\n }\r\n });\r\n\r\n if (this.trackingsVisible[sourceType]) {\r\n this.trackingsVisible[sourceType] = false;\r\n }\r\n else{\r\n this.trackingsVisible[sourceType] = true;\r\n }\r\n }\r\n\r\n trackingListOrder = (a: KeyValue, b: KeyValue): number => {\r\n if (a.value.tracking.signal.sourceType == 'MOBILE_APP' && b.value.tracking.signal.sourceType == 'VEHICLE')\r\n return -1;\r\n else if (a.value.tracking.signal.sourceType == 'VEHICLE' && b.value.tracking.signal.sourceType == 'MOBILE_APP')\r\n return 1;\r\n else if (a.value.tracking.signal.sourceType == 'MOBILE_APP' && b.value.tracking.signal.sourceType == 'MOBILE_APP') {\r\n return a.value.tracking.user?.name.localeCompare(b.value.tracking.user?.name);\r\n }\r\n else { // Ambos VEHICLE\r\n return a.value.tracking.signal.mobileObjectId.localeCompare(b.value.tracking.signal.mobileObjectId);\r\n }\r\n }\r\n\r\n /**\r\n * ###################################################\r\n * Camadas\r\n * ###################################################\r\n */\r\n\r\n onLayerSelection(layerData){\r\n this.onLayerListSelection([layerData]);\r\n }\r\n\r\n public layerTypeToId(type: string) {\r\n switch (type) {\r\n case (\"Band\"): {\r\n return this.baseMap.BAND_ID;\r\n };\r\n case (\"GasDuct\"): {\r\n return this.baseMap.GASDUCT_ID;\r\n };\r\n case (\"OilDuct\"): {\r\n return this.baseMap.OILDUCT_ID;\r\n };\r\n case (\"Simf\"): {\r\n return this.baseMap.SIMF_ID;\r\n };\r\n case (\"KilometerMark\"): {\r\n return this.baseMap.KILOMETER_MARK_ID;\r\n };\r\n case (\"DeliveryPoint\"): {\r\n return this.baseMap.DELIVERY_POINT_ID;\r\n };\r\n case (\"Terminal\"): {\r\n return this.baseMap.TERMINAL_ID;\r\n };\r\n case (\"Refinary\"): {\r\n return this.baseMap.REFINARY_ID;\r\n };\r\n case (\"Dc\"): {\r\n return this.baseMap.DC_HISTORY_ID;\r\n };\r\n case (\"Valve\"): {\r\n return this.baseMap.VALVE_ID;\r\n };\r\n case (\"ObservedArea\"): {\r\n return this.baseMap.OBSERVED_AREA_ID;\r\n };\r\n }\r\n }\r\n\r\n onLayerListSelection(layerDataList: GeoModel[]){\r\n const type = layerDataList[0].type;\r\n const id = this.layerTypeToId(type);\r\n if (!id) return;\r\n\r\n let layer: L.LayerGroup = this.layersMap.get(id);\r\n\r\n // Necessariamente faz o layer ficar visivel\r\n if (!this.baseMap.hasLayer(layer)) {\r\n this.baseMap.addLayerToMap(layer);\r\n }\r\n\r\n let latLongs: L.LatLngTuple[] = [];\r\n layerDataList.forEach(geoLayer =>{\r\n // Verifica se aquele item da camada está visivel no mapa\r\n const feature = {properties: geoLayer};\r\n if (this.baseMap.filterGeoModel(id, feature.properties)) {\r\n let geoLayerLatLongs: L.LatLngTuple[] = [];\r\n if (geoLayer.geometry.type == 'GeometryCollection'){\r\n const geometries = geoLayer.geometry.geometries;\r\n for(let p = 0; p < geometries.length; p++) {\r\n if (geometries[p].type == 'Point'){\r\n const point = geometries[p].coordinates as [number, number];\r\n geoLayerLatLongs.push([point[1], point[0]]);\r\n }\r\n else{\r\n geoLayerLatLongs = geoLayerLatLongs.concat(L.GeoJSON.coordsToLatLngs(geometries[p].coordinates));\r\n } \r\n }\r\n }\r\n else if (geoLayer.geometry.type == \"Point\"){\r\n const point = geoLayer.geometry.coordinates as [number, number];\r\n geoLayerLatLongs.push([point[1], point[0]]);\r\n }\r\n else{ // geoLayer.geometry.type == \"Polygon\" ou \"LineString\"\r\n if (geoLayer.type == \"ObservedArea\") {\r\n geoLayerLatLongs = L.GeoJSON.coordsToLatLngs(geoLayer.geometry.coordinates[0]);\r\n }\r\n else {\r\n geoLayerLatLongs = L.GeoJSON.coordsToLatLngs(geoLayer.geometry.coordinates);\r\n }\r\n }\r\n latLongs.push(...geoLayerLatLongs);\r\n }\r\n });\r\n\r\n if (latLongs.length > 1) {\r\n let bounds: L.LatLngBounds = this.getLatLongBounds(latLongs);\r\n this.highlightBounds(bounds);\r\n let line = L.polyline(latLongs);\r\n this.highlightPolyline(line);\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n else if (latLongs.length == 1) {\r\n let lls: L.LatLng[] = [];\r\n lls.push(L.latLng(latLongs[0]));\r\n this.highlightLatLongPoints(lls);\r\n this.baseMap.fitPoint(latLongs[0]);\r\n }\r\n }\r\n\r\n public updateLayer(data: string) {\r\n this.baseMap.updateGeoLayer(data);\r\n }\r\n\r\n layerListOrder = (a: KeyValue, b: KeyValue): number => {\r\n // Ordem determinada pelo \"Ajustes 3\" do Aditivo\r\n const layersOrder = {\r\n [this.baseMap.DC_HISTORY_ID]: 1,\r\n [this.baseMap.OBSERVED_AREA_ID]: 2,\r\n [this.baseMap.SIMF_ID]: 3,\r\n [this.baseMap.BAND_ID]: 4,\r\n [this.baseMap.OILDUCT_ID]: 5,\r\n [this.baseMap.GASDUCT_ID]: 6,\r\n [this.baseMap.KILOMETER_MARK_ID]: 7,\r\n [this.baseMap.VALVE_ID]: 8,\r\n [this.baseMap.TERMINAL_ID]: 9,\r\n [this.baseMap.REFINARY_ID]: 10,\r\n [this.baseMap.DELIVERY_POINT_ID]: 11,\r\n };\r\n\r\n return layersOrder[a.key] - layersOrder[b.key];\r\n }\r\n\r\n layerFilterIcon(key) {\r\n return this.baseMap.layerFilterIcon(key);\r\n }\r\n\r\n onLayerVisibilityClick(layer: L.LayerGroup) {\r\n if (this.baseMap.hasLayer(layer)) {\r\n this.baseMap.removeLayerFromMap(layer);\r\n }else{\r\n this.baseMap.addLayerToMap(layer);\r\n }\r\n }\r\n\r\n onLayersVisibilityClick(){\r\n this.layersMap.forEach( (layer, id) => {\r\n if (this.layersVisible) {\r\n if (this.baseMap.hasLayer(layer)) {\r\n this.baseMap.removeLayerFromMap(layer);\r\n }\r\n }\r\n else {\r\n if (!this.baseMap.hasLayer(layer)) {\r\n this.baseMap.addLayerToMap(layer);\r\n }\r\n }\r\n });\r\n\r\n this.layersVisible = !this.layersVisible;\r\n }\r\n\r\n onLayerIsVisibile(layer: L.LayerGroup): boolean {\r\n return this.baseMap.hasLayer(layer);\r\n }\r\n\r\n /**\r\n * ###################################################\r\n * Áreas Observadas\r\n * ###################################################\r\n */\r\n\r\n onObservedAreaSaved(area : ObservedAreaModel){\r\n this.logger.debug('MapComponent.onObservedAreaSaved');\r\n\r\n // TODO scuri Atualiza tudo necessariamente, otimizar\r\n\r\n // Recarrega todas do banco para o Mapa\r\n this.baseMap.initializeObservedAreaLayer();\r\n\r\n this.lastSavedArea = area;\r\n }\r\n\r\n /*\r\n Áreas observadas é a única camada que ao ser selecionada para visualização \r\n altera o seu próprio filtro para incluir a área sendo visualizada.\r\n */\r\n\r\n onObservedAreaSelection(area: ObservedAreaModel, fit: boolean){\r\n this.logger.debug('MapComponent.onObservedAreaSelection');\r\n\r\n if(this.layersFilter.areasIds && this.layersFilter.areasIds.length > 0 && !this.layersFilter.areasIds.includes(area.id)){\r\n this.layersFilter.areasIds = [...this.layersFilter.areasIds, area.id];\r\n this.baseMap.updateFilter(this.baseMap.OBSERVED_AREA_ID, false, true);\r\n }\r\n\r\n if (!this.baseMap.hasLayer(this.baseMap.geoLayers[this.baseMap.OBSERVED_AREA_ID])) {\r\n this.baseMap.addLayerToMap(this.baseMap.geoLayers[this.baseMap.OBSERVED_AREA_ID]);\r\n }\r\n\r\n if (fit) {\r\n let latLongs: L.LatLngTuple[] = L.GeoJSON.coordsToLatLngs(area.geometry.coordinates[0]); //coordinates em Areas Observadas são arrays de arrays de coordenadas\r\n let bounds = this.getLatLongBounds(latLongs);\r\n this.highlightBounds(bounds);\r\n let line = L.polyline(latLongs);\r\n this.highlightPolyline(line);\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n }\r\n\r\n onObservedAreaListSelection(areaList: ObservedAreaModel[]){\r\n let newAreas: string[] = []\r\n areaList.forEach(area =>{\r\n if(this.layersFilter.areasIds && !this.layersFilter.areasIds.includes(area.id)){\r\n newAreas.push(area.id);\r\n }\r\n });\r\n\r\n if(newAreas.length > 0){\r\n this.layersFilter.areasIds = [...this.layersFilter.areasIds, ...newAreas];\r\n }\r\n\r\n this.baseMap.updateFilter(this.baseMap.OBSERVED_AREA_ID, false, true);\r\n\r\n let latLongs: L.LatLngTuple[] = [];\r\n areaList.forEach(area =>{\r\n let areaLatLongs: L.LatLngTuple[] = L.GeoJSON.coordsToLatLngs(area.geometry.coordinates[0]); //coordinates em Areas Observadas são arrays de arrays de coordenadas\r\n latLongs.push(...areaLatLongs);\r\n });\r\n\r\n this.baseMap.fitBounds(this.getLatLongBounds(latLongs));\r\n }\r\n\r\n /**\r\n * ###################################################\r\n * Filtro de Camadas\r\n * ###################################################\r\n */\r\n\r\n private loadFromCache(){ \r\n let _this = this; // Necessário por causa do contexto das callbacks\r\n const onUsersLoad = function() {\r\n const responsibleUserTypes = [UserType.ANALYSIS_CCPD, UserType.COORDINATOR_CCPD, UserType.COORDINATOR_OPPD, UserType.PLANNER];\r\n _this.allResponsibles = _this.entityCacheService.getFilteredUsers(responsibleUserTypes);\r\n };\r\n this.entityCacheService.loadUsers(this.loadingListService, onUsersLoad);\r\n this.reloadUsersSubscription = this.entityCacheService.onUsersReload().subscribe(onUsersLoad);\r\n\r\n this.entityCacheService.loadVehicles(this.loadingListService);\r\n }\r\n\r\n private filterObservedArea(){\r\n this.areasFiltered = this.allObservedAreas.filter((area: ObservedAreaModel) => {\r\n\r\n if(this.layersFilter){\r\n if(this.layersFilter.areaStatus !== FILTER_OPTION_ALL){\r\n if(this.layersFilter.areaStatus !== area.status){\r\n return false;\r\n }\r\n }\r\n\r\n if(this.layersFilter.states?.length > 0){\r\n let match = true;\r\n\r\n if(!area.states || area.states.length === 0) return false;\r\n\r\n for(let state of area.states){\r\n match = this.layersFilter.states.includes(state);\r\n if(match){\r\n break;\r\n }\r\n }\r\n\r\n if(!match) return false;\r\n }\r\n\r\n if(this.layersFilter.bandNames?.length > 0){\r\n if(!this.layersFilter.bandNames.includes(area.band)){ // area.band É o nome da área observada\r\n return false;\r\n }\r\n }\r\n\r\n if(this.layersFilter.responsiblesIds?.length > 0){\r\n if(!this.layersFilter.responsiblesIds.includes(area.responsible?.id)){\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n });\r\n\r\n this.areasFiltered.sort(this.layerFilterSort);\r\n }\r\n\r\n private layerFilterSort(a: GeoModel, b: GeoModel) {\r\n return a.name.localeCompare(b.name);\r\n }\r\n\r\n layersFilterSelectState() {\r\n this.bandsFiltered = [];\r\n\r\n // Ao selecionar Estados, outros filtros são zerados\r\n this.layersFilter.bandIds = [];\r\n this.layersFilter.bandNames = [];\r\n this.layersFilter.areasIds = [];\r\n\r\n if (this.layersFilter.states.length) {\r\n this.bandsFiltered = this.allBands.filter(band => {\r\n let match = true;\r\n\r\n if(!band.states || band.states.length === 0) return false;\r\n \r\n for(let state of band.states){\r\n match = this.layersFilter.states.includes(state);\r\n if(match){\r\n break;\r\n }\r\n }\r\n \r\n if(!match) return false;\r\n \r\n return true;\r\n });\r\n }else {\r\n this.bandsFiltered = this.allBands;\r\n }\r\n\r\n this.bandsFiltered.sort(this.layerFilterSort);\r\n \r\n this.baseMap.updateAllFilters(); // atualiza o mapa\r\n this.filterObservedArea(); // atualiza a combo\r\n }\r\n\r\n private layersFilterSelectBand() {\r\n this.layersFilter.bandIds = [];\r\n\r\n // Se tem uma Faixa selecionada,\r\n // então seleciona todas as faixas com o mesmo nome no mapa\r\n if (this.layersFilter.bandNames.length > 0) {\r\n this.layersFilter.bandNames.forEach(name => {\r\n let band = this.bandsFiltered.find(band => band.name == name);\r\n this.layersFilter.bandIds.push(band.id);\r\n });\r\n }\r\n \r\n this.baseMap.updateFilterBands(); // atualiza o mapa\r\n\r\n this.filterObservedArea(); // atualiza a combo\r\n }\r\n\r\n layerFilterSelectObservedArea(){\r\n this.filterObservedArea(); // atualiza a combo\r\n this.baseMap.updateFilter(this.baseMap.OBSERVED_AREA_ID); // atualiza o mapa\r\n }\r\n\r\n layersFilterSelectDcYear(){\r\n this.baseMap.updateFilter(this.baseMap.DC_HISTORY_ID);\r\n }\r\n\r\n isLayerFilterListSelected(value: string, values: string[]){\r\n return values.includes(value);\r\n }\r\n\r\n onLayerFilterListClick(checked: boolean, value: string, values: string[], option: FilterOption) {\r\n if (checked) {\r\n if (!values.includes(value)) {\r\n values.push(value);\r\n this.selectLayerFilter(option, false);\r\n }\r\n }\r\n else {\r\n const index = values.indexOf(value);\r\n if (index != -1) {\r\n values.splice(index, 1);\r\n this.selectLayerFilter(option, false);\r\n }\r\n }\r\n }\r\n\r\n selectLayerFilter(option: FilterOption, reset: boolean){\r\n switch(option){\r\n case FilterOption.YEAR:\r\n if(reset) this.layersFilter.years = [];\r\n this.layersFilterSelectDcYear();\r\n this.resetSearchLayer(this.baseMap.DC_HISTORY_ID);\r\n break;\r\n case FilterOption.STATE:\r\n if(reset) this.layersFilter.states = [];\r\n this.layersFilterSelectState();\r\n this.resetAllLayersSearch();\r\n break;\r\n case FilterOption.BAND:\r\n if(reset) { this.layersFilter.bandNames = []; }\r\n this.layersFilterSelectBand();\r\n this.resetAllLayersSearch();\r\n break;\r\n case FilterOption.AREA_STATUS:\r\n if(reset) this.layersFilter.areaStatus = ObservedAreaStatus.ACTIVE;\r\n this.layerFilterSelectObservedArea();\r\n this.resetSearchLayer(this.baseMap.OBSERVED_AREA_ID);\r\n break;\r\n case FilterOption.AREA_RESPONSIBLE:\r\n if(reset) this.layersFilter.responsiblesIds = [];\r\n this.layerFilterSelectObservedArea();\r\n this.resetSearchLayer(this.baseMap.OBSERVED_AREA_ID);\r\n break;\r\n case FilterOption.AREA_ID:\r\n if(reset) this.layersFilter.areasIds = [];\r\n this.layerFilterSelectObservedArea();\r\n this.resetSearchLayer(this.baseMap.OBSERVED_AREA_ID);\r\n break;\r\n }\r\n }\r\n\r\n onResetLayersFilterClick() {\r\n this.layersFilter = new LayerFilterModel(); // Isso vai gerar uma atualização de todos os filtros no baseMap\r\n this.layersFilterSelectState();\r\n }\r\n\r\n /**\r\n * ###################################################\r\n * Operações\r\n * ###################################################\r\n */\r\n\r\n private operationObjectsGet(operationId: string, operationType: string): OperationMapObject {\r\n return this.operationObjectsMap.get(operationId+operationType);\r\n }\r\n\r\n public getOperationObjectPopupContent(operation: OperationModel): string {\r\n return OperationModel.getPopupContent(operation) + PatrolTeamModel.getPopupContent(operation.patrolTeam, true);\r\n }\r\n\r\n private operationObjectsNew(operation: OperationModel): OperationMapObject {\r\n let operationMapObject = new OperationMapObject();\r\n operationMapObject.operation = operation;\r\n\r\n this.operationObjectsMap.set(operation.id+operation.type, operationMapObject);\r\n this.operationsCount[operation.type]++;\r\n\r\n operationMapObject.popupContent = this.getOperationObjectPopupContent(operation);\r\n\r\n if (this.searchValue) {\r\n this.updateListedObject(operationMapObject);\r\n }\r\n\r\n this.updateOperationListedCount();\r\n\r\n return operationMapObject;\r\n }\r\n\r\n private operationObjectsUpdate(operationMapObject: OperationMapObject, operation: OperationModel) {\r\n operationMapObject.operation = operation;\r\n\r\n operationMapObject.popupContent = this.getOperationObjectPopupContent(operation);\r\n\r\n if (this.searchValue) {\r\n this.updateListedObject(operationMapObject);\r\n }\r\n\r\n this.updateOperationListedCount();\r\n }\r\n\r\n private operationObjectsDelete(operationId: string, operationType: string) {\r\n let operationMapObject = this.operationObjectsGet(operationId, operationType);\r\n if (operationMapObject) {\r\n if (operationMapObject.listed) this.operationsListedCount[operationType]--;\r\n this.operationsCount[operationType]--;\r\n }\r\n this.operationObjectsMap.delete(operationId+operationType);\r\n }\r\n\r\n onRemoveEditionMode(operationId: string, operationType: string){\r\n this.logger.debug('MapComponent.onRemoveEditionMode()');\r\n // Estava em modo de edição dessa operação\r\n if (this.editionMode &&\r\n this.editionMode.OperationId == operationId &&\r\n this.editionMode.operation.type == operationType) {\r\n this.clearEditionMode();\r\n }\r\n }\r\n\r\n /* Usado para visualização de rota e pontos de operações sendo editadas */\r\n onOperationIdSelection(data, fit: boolean){\r\n this.logger.debug('MapComponent.onOperationIdSelection()');\r\n\r\n if (data.fileKmlRoute) // importou kml de rota\r\n this.updateOperationFileDataRoute(data.operationId, data.operationType, data.fileKmlRoute, data.operation, fit);\r\n\r\n let operationMapObject = this.operationObjectsGet(data.operationId, data.operationType);\r\n if (operationMapObject) {\r\n if (data.removedKmlRoute) { // removeu kml de rota\r\n this.baseMap.removeLayerFromMap(operationMapObject.geoRoute);\r\n operationMapObject.geoRoute = null;\r\n operationMapObject.geoRouteBounds = null;\r\n operationMapObject.fileKmlRoute = null;\r\n operationMapObject.removedKmlRoute = true;\r\n }\r\n\r\n if (operationMapObject.removedKmlRoute && // removeu kml de rota e não tem inspeções\r\n (!operationMapObject.operation.inspections || operationMapObject.operation.inspections.length == 0))\r\n this.operationObjectsDelete(data.operationId, data.operationType);\r\n }\r\n\r\n // Removeu kml de Rota, e não importou kml de rota, mas tem operação, então atualiza rota\r\n if (!data.removedKmlRoute && !data.fileKmlRoute && data.operation) {\r\n if (!data.operation.id) data.operation.id = data.operationId;\r\n this.updateOperationRoute(data.operation, fit);\r\n }\r\n\r\n // Se tem operação, atualiza pontos\r\n if (data.operation) {\r\n if (!data.operation.id) data.operation.id = data.operationId;\r\n this.updateOperation(data.operation, fit);\r\n }\r\n }\r\n\r\n updateOperationFileDataRoute(operationId: string, operationType: string, fileKmlRoute: File, operation: OperationModel, fit: boolean){\r\n let operationMapObject = this.operationObjectsGet(operationId, operationType);\r\n if (operationMapObject) {\r\n // Se existe, remove do mapa antes de atualizar\r\n this.baseMap.removeLayerFromMap(operationMapObject.geoRoute);\r\n operationMapObject.geoRoute = null;\r\n operationMapObject.geoRouteBounds = null;\r\n }\r\n\r\n this.routeGeographicalObjectService.importKmlRoute(fileKmlRoute, operation).then((geoRoute) => {\r\n geoRoute.on('ready', () => {\r\n let operationMapObject = this.operationObjectsGet(operationId, operationType);\r\n if (!operationMapObject) {\r\n operationMapObject = this.operationObjectsNew(operation);\r\n }\r\n else {\r\n this.operationObjectsUpdate(operationMapObject, operation);\r\n }\r\n\r\n operationMapObject.fileKmlRoute = fileKmlRoute;\r\n operationMapObject.geoRoute = geoRoute;\r\n operationMapObject.removedKmlRoute = false;\r\n \r\n this.baseMap.addLayerToMap(operationMapObject.geoRoute);\r\n operationMapObject.visible = true;\r\n\r\n operationMapObject.geoRouteBounds = operationMapObject.geoRoute.getBounds(); // Esse get bounds retorna um novo bounds\r\n if (operationMapObject.geoRouteBounds) operationMapObject.geoRouteBounds = operationMapObject.geoRouteBounds.pad(MapInfo.BOUNDS_PAD_RATIO);\r\n\r\n if (fit) this.fitOperationBounds(operationMapObject);\r\n });\r\n });\r\n }\r\n\r\n updateOperationRoute(operation: OperationModel, fit: boolean) {\r\n let operationMapObject = this.operationObjectsGet(operation.id, operation.type);\r\n if (operationMapObject) {\r\n // Se existe, remove do mapa antes de atualizar\r\n this.baseMap.removeLayerFromMap(operationMapObject.geoRoute);\r\n operationMapObject.geoRoute = null;\r\n operationMapObject.geoRouteBounds = null;\r\n }\r\n\r\n if (operation.route && operation.route.fileRouteKml) {\r\n this.routeGeographicalObjectService.loadKML(operation)\r\n .then((geoRoute) => {\r\n geoRoute.on('ready', () => {\r\n let operationMapObject = this.operationObjectsGet(operation.id, operation.type);\r\n if (!operationMapObject) {\r\n operationMapObject = this.operationObjectsNew(operation);\r\n }\r\n else {\r\n this.operationObjectsUpdate(operationMapObject, operation);\r\n }\r\n \r\n operationMapObject.geoRoute = geoRoute;\r\n operationMapObject.fileKmlRoute = null;\r\n operationMapObject.removedKmlRoute = false;\r\n \r\n this.baseMap.addLayerToMap(operationMapObject.geoRoute);\r\n operationMapObject.visible = true;\r\n\r\n operationMapObject.geoRouteBounds = operationMapObject.geoRoute.getBounds(); // Esse get bounds retorna um novo bounds\r\n if (operationMapObject.geoRouteBounds) operationMapObject.geoRouteBounds = operationMapObject.geoRouteBounds.pad(MapInfo.BOUNDS_PAD_RATIO);\r\n\r\n if (fit) this.fitOperationBounds(operationMapObject);\r\n });\r\n })\r\n .catch( error => {\r\n this.toastr.error(\"Falha ao carregar rota\");\r\n this.logger.error(error);\r\n });\r\n }\r\n }\r\n\r\n updateOperation(operation: OperationModel, fit: boolean){\r\n let operationMapObject = this.operationObjectsGet(operation.id, operation.type);\r\n if (operationMapObject) {\r\n // Se existe, remove do mapa antes de atualizar\r\n this.baseMap.removeLayerFromMap(operationMapObject.geoPoints);\r\n operationMapObject.geoPoints = null;\r\n operationMapObject.geoPointsBounds = null;\r\n }\r\n\r\n let geoPoints = this.routeGeographicalObjectService.getOperationGeoPoints(operation);\r\n if (geoPoints) {\r\n let operationMapObject = this.operationObjectsGet(operation.id, operation.type);\r\n if (!operationMapObject) {\r\n operationMapObject = this.operationObjectsNew(operation);\r\n }\r\n else {\r\n this.operationObjectsUpdate(operationMapObject, operation);\r\n }\r\n\r\n operationMapObject.geoPoints = geoPoints;\r\n\r\n this.baseMap.addLayerToMap(operationMapObject.geoPoints);\r\n operationMapObject.visible = true;\r\n\r\n operationMapObject.geoPointsBounds = operationMapObject.geoPoints.getBounds(); // Esse get bounds retorna um novo bounds\r\n if (operationMapObject.geoPointsBounds) operationMapObject.geoPointsBounds = operationMapObject.geoPointsBounds.pad(MapInfo.BOUNDS_PAD_RATIO);\r\n\r\n if (fit) this.fitOperationBounds(operationMapObject);\r\n }\r\n }\r\n\r\n onOperationListSelection(operationList: OperationModel[]){\r\n operationList.forEach(operation =>{\r\n this.onOperationSelection(operation, false);\r\n });\r\n\r\n this.fitOperationListBounds(operationList);\r\n }\r\n\r\n calcPlannedDistance(geoRoute): number{\r\n let polylines: L.Polyline [] = RouteGeographicalService.getGeoRoutePolyline(geoRoute);\r\n let distance: number = 0;\r\n if (polylines && polylines.length > 0) {\r\n\r\n for(let p = 0; p < polylines.length; p++) {\r\n let polyline = polylines[p];\r\n\r\n let latLngs = polyline.getLatLngs() as L.LatLng[];\r\n let prevLatLng = this.latLngToTurfPoint(latLngs[0]);\r\n\r\n for(let i = 1; i < latLngs.length; i++) {\r\n let curLatLng = this.latLngToTurfPoint(latLngs[i]);\r\n distance += turf.distance(prevLatLng, curLatLng, {units: 'kilometers'});\r\n prevLatLng = curLatLng;\r\n } \r\n }\r\n }\r\n return distance;\r\n }\r\n\r\n onOperationSelection(operation: OperationModel, fit: boolean) {\r\n this.logger.debug('MapComponent.onOperationSelection()');\r\n\r\n let operationMapObject = this.operationObjectsGet(operation.id, operation.type);\r\n if (operationMapObject) {\r\n // Se existe, remove do mapa antes de atualizar\r\n this.baseMap.removeLayerFromMap(operationMapObject.geoRoute);\r\n this.baseMap.removeLayerFromMap(operationMapObject.geoPoints);\r\n }\r\n\r\n if (operation.route && operation.route.fileRouteKml) {\r\n this.routeGeographicalObjectService.loadKML(operation)\r\n .then((geoRoute) => {\r\n geoRoute.on('ready', () => {\r\n let operationMapObject = this.operationObjectsGet(operation.id, operation.type);\r\n if (!operationMapObject) {\r\n operationMapObject = this.operationObjectsNew(operation);\r\n }\r\n else {\r\n this.operationObjectsUpdate(operationMapObject, operation);\r\n }\r\n \r\n operationMapObject.geoRoute = geoRoute;\r\n \r\n if (this.operationsVisible[operation.type]) {\r\n this.baseMap.addLayerToMap(operationMapObject.geoRoute);\r\n operationMapObject.visible = true;\r\n\r\n operationMapObject.geoRouteBounds = operationMapObject.geoRoute.getBounds(); // Esse get bounds retorna um novo bounds\r\n if (operationMapObject.geoRouteBounds) operationMapObject.geoRouteBounds = operationMapObject.geoRouteBounds.pad(MapInfo.BOUNDS_PAD_RATIO);\r\n\r\n if (fit) {\r\n let bounds = this.fitOperationBounds(operationMapObject);\r\n if (bounds) this.highlightBounds(bounds);\r\n if (operationMapObject.geoRoute) this.highlightGeoRoute(operationMapObject.geoRoute);\r\n }\r\n }\r\n });\r\n })\r\n .catch( error => {\r\n this.toastr.error(\"Falha ao carregar rota\");\r\n this.logger.error(error);\r\n });\r\n }\r\n\r\n let geoPoints = this.routeGeographicalObjectService.getOperationGeoPoints(operation);\r\n if (geoPoints) {\r\n let operationMapObject = this.operationObjectsGet(operation.id, operation.type);\r\n if (!operationMapObject) {\r\n operationMapObject = this.operationObjectsNew(operation);\r\n }\r\n else {\r\n this.operationObjectsUpdate(operationMapObject, operation);\r\n }\r\n\r\n operationMapObject.geoPoints = geoPoints;\r\n\r\n if (this.operationsVisible[operation.type]) {\r\n this.baseMap.addLayerToMap(operationMapObject.geoPoints);\r\n operationMapObject.visible = true;\r\n\r\n operationMapObject.geoPointsBounds = operationMapObject.geoPoints.getBounds(); // Esse get bounds retorna um novo bounds\r\n if (operationMapObject.geoPointsBounds) operationMapObject.geoPointsBounds = operationMapObject.geoPointsBounds.pad(MapInfo.BOUNDS_PAD_RATIO);\r\n if (fit) {\r\n let bounds = this.fitOperationBounds(operationMapObject);\r\n if (bounds) this.highlightBounds(bounds);\r\n if (operationMapObject.geoRoute) this.highlightGeoRoute(operationMapObject.geoRoute);\r\n }\r\n }\r\n }\r\n }\r\n\r\n copyBounds(bounds: L.LatLngBounds): L.LatLngBounds{\r\n if (!bounds) return null;\r\n return new L.LatLngBounds(bounds.getSouthWest(), bounds.getNorthEast());\r\n }\r\n\r\n fitOperationBounds(operationMapObject: OperationMapObject) {\r\n let bounds: L.LatLngBounds = this.copyBounds(operationMapObject.geoRouteBounds); // O extend modifica a bounds, então tem que fazer uma cópia na primeira vez\r\n\r\n if (operationMapObject.geoPointsBounds) {\r\n if (bounds) bounds.extend(operationMapObject.geoPointsBounds);\r\n else bounds = this.copyBounds(operationMapObject.geoPointsBounds);\r\n }\r\n\r\n if(bounds) {\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n\r\n return bounds;\r\n }\r\n\r\n fitOperationListBounds(operationList: OperationModel[]) {\r\n let bounds: L.LatLngBounds = null; // O extend modifica a bounds, então tem que fazer uma cópia na primeira vez\r\n\r\n operationList.forEach( (operation: OperationModel) =>{\r\n let operationMapObject = this.operationObjectsGet(operation.id, operation.type);\r\n\r\n if (operationMapObject.geoRouteBounds) {\r\n if (bounds) bounds.extend(operationMapObject.geoRouteBounds);\r\n else bounds = this.copyBounds(operationMapObject.geoRouteBounds);\r\n }\r\n\r\n if (operationMapObject.geoPointsBounds) {\r\n if (bounds) bounds.extend(operationMapObject.geoPointsBounds);\r\n else bounds = this.copyBounds(operationMapObject.geoPointsBounds);\r\n }\r\n });\r\n\r\n if(bounds)\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n\r\n onOperationsRemoveClick(operationType: string) {\r\n this.operationObjectsMap.forEach( (operationMapObject: OperationMapObject, id) => {\r\n if (operationMapObject.operation.type == operationType) {\r\n this.onOperationRemoveClick(operationMapObject);\r\n }\r\n });\r\n }\r\n\r\n onOperationClick(operationMapObject: OperationMapObject) {\r\n if (operationMapObject.visible) {\r\n let bounds = this.fitOperationBounds(operationMapObject);\r\n if (bounds) this.highlightBounds(bounds);\r\n if (operationMapObject.geoRoute) this.highlightGeoRoute(operationMapObject.geoRoute);\r\n }\r\n }\r\n\r\n onOperationRemoveClick(operationMapObject: OperationMapObject) {\r\n this.baseMap.removeLayerFromMap(operationMapObject.geoRoute);\r\n this.baseMap.removeLayerFromMap(operationMapObject.geoPoints);\r\n this.operationObjectsDelete(operationMapObject.operation.id, operationMapObject.operation.type);\r\n }\r\n\r\n canHasOperationHistoricalTracking(operationMapObject: OperationMapObject): boolean {\r\n if (operationMapObject && operationMapObject.operation && operationMapObject.operation.status != OperationStatus.PLANNED\r\n && operationMapObject.operation.status != OperationStatus.SENT)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n onOperationHistoricalTrackingClick(operationMapObject: OperationMapObject ) {\r\n this.onHistoricalTrackingOperationSelection(operationMapObject.operation, true);\r\n }\r\n\r\n onOperationVisibilityClick(operationMapObject: OperationMapObject) {\r\n if (operationMapObject.visible) {\r\n this.baseMap.removeLayerFromMap(operationMapObject.geoRoute);\r\n this.baseMap.removeLayerFromMap(operationMapObject.geoPoints);\r\n operationMapObject.visible = false;\r\n }\r\n else{\r\n if (operationMapObject.geoRoute) {\r\n this.baseMap.addLayerToMap(operationMapObject.geoRoute);\r\n operationMapObject.geoRouteBounds = operationMapObject.geoRoute.getBounds(); // Esse get bounds retorna um novo bounds\r\n if (operationMapObject.geoRouteBounds) operationMapObject.geoRouteBounds = operationMapObject.geoRouteBounds.pad(MapInfo.BOUNDS_PAD_RATIO);\r\n }\r\n if (operationMapObject.geoPoints) {\r\n this.baseMap.addLayerToMap(operationMapObject.geoPoints);\r\n operationMapObject.geoPointsBounds = operationMapObject.geoPoints.getBounds(); // Esse get bounds retorna um novo bounds\r\n if (operationMapObject.geoPointsBounds) operationMapObject.geoPointsBounds = operationMapObject.geoPointsBounds.pad(MapInfo.BOUNDS_PAD_RATIO);\r\n }\r\n operationMapObject.visible = true;\r\n }\r\n }\r\n\r\n onOperationsVisibilityClick(operationType: string) {\r\n this.operationObjectsMap.forEach( (operationMapObject: OperationMapObject, id) => {\r\n if (operationMapObject.operation.type == operationType) {\r\n if (this.operationsVisible[operationType]) {\r\n this.baseMap.removeLayerFromMap(operationMapObject.geoRoute);\r\n this.baseMap.removeLayerFromMap(operationMapObject.geoPoints);\r\n operationMapObject.visible = false;\r\n }\r\n else{\r\n if (operationMapObject.geoRoute) {\r\n this.baseMap.addLayerToMap(operationMapObject.geoRoute);\r\n operationMapObject.geoRouteBounds = operationMapObject.geoRoute.getBounds(); // Esse get bounds retorna um novo bounds\r\n if (operationMapObject.geoRouteBounds) operationMapObject.geoRouteBounds = operationMapObject.geoRouteBounds.pad(MapInfo.BOUNDS_PAD_RATIO);\r\n }\r\n if (operationMapObject.geoPoints) {\r\n this.baseMap.addLayerToMap(operationMapObject.geoPoints);\r\n operationMapObject.geoPointsBounds = operationMapObject.geoPoints.getBounds(); // Esse get bounds retorna um novo bounds\r\n if (operationMapObject.geoPointsBounds) operationMapObject.geoPointsBounds = operationMapObject.geoPointsBounds.pad(MapInfo.BOUNDS_PAD_RATIO);\r\n }\r\n operationMapObject.visible = true;\r\n }\r\n }\r\n });\r\n\r\n if (this.operationsVisible[operationType]) {\r\n this.operationsVisible[operationType] = false;\r\n }\r\n else{\r\n this.operationsVisible[operationType] = true;\r\n }\r\n }\r\n\r\n hasOperation(operationType: string) {\r\n let found = false;\r\n this.operationObjectsMap.forEach( (operationMapObject: OperationMapObject) => {\r\n if (operationMapObject.operation.type == operationType) {\r\n found = true;\r\n return;\r\n }\r\n });\r\n return found;\r\n }\r\n\r\n operationListOrder = (a: KeyValue, b: KeyValue): number => {\r\n return b.value.operation.startDate - a.value.operation.startDate;\r\n }\r\n\r\n getPatrolTeamTitle(patrolTeam: PatrolTeamModel): string {\r\n return patrolTeam && patrolTeam.name ? patrolTeam.name: 'sem equipe';\r\n }\r\n\r\n getOperationTitle(operation: OperationModel) {\r\n let identifier: string = operation.identifier;\r\n if (!identifier) identifier = '(sem ID)';\r\n return identifier + ' - ' + this.getPatrolTeamTitle(operation.patrolTeam);\r\n }\r\n\r\n private getOperationsList() {\r\n let operationList: OperationModel[] = [];\r\n this.operationObjectsMap.forEach( (operationMapObject: OperationMapObject) => {\r\n if (!operationMapObject.fileKmlRoute && !operationMapObject.removedKmlRoute)\r\n operationList.push(operationMapObject.operation);\r\n });\r\n return operationList;\r\n }\r\n\r\n private getOperationsIdList() {\r\n let operationsIdList = [];\r\n this.operationObjectsMap.forEach( (operationMapObject: OperationMapObject) => {\r\n if (operationMapObject.fileKmlRoute || operationMapObject.removedKmlRoute)\r\n operationsIdList.push({operationId: operationMapObject.operation.id, operation: operationMapObject.operation,\r\n fileKmlRoute: operationMapObject.fileKmlRoute, removedKmlRoute: operationMapObject.removedKmlRoute\r\n });\r\n });\r\n return operationsIdList;\r\n }\r\n\r\n private subscribeOnModelUpdate(){\r\n this.glSubscribeEvent(UPDATE_DATA_PREFIX + 'patrols-edit', (operation) => {\r\n // Emitido quando o modelo da operação foi atualizado do backend\r\n let operationMapObject = this.operationObjectsGet(operation.id, operation.type);\r\n if (operationMapObject) {\r\n this.logger.debug(\"MapComponent.OnModelUpdate-Patrol\");\r\n this.updateOperation(operation, false); // TODO scuri Isso não atualiza rota\r\n }\r\n });\r\n\r\n this.glSubscribeEvent(UPDATE_DATA_PREFIX + 'verifications-edit', (operation) => {\r\n // Emitido quando o modelo da operação foi atualizado do backend\r\n let operationMapObject = this.operationObjectsGet(operation.id, operation.type);\r\n if (operationMapObject) {\r\n this.logger.debug(\"MapComponent.OnModelUpdate-Verification\");\r\n this.updateOperation(operation, false); // TODO scuri Isso não atualiza rota\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * ###################################################\r\n * Rastro\r\n * ###################################################\r\n */\r\n\r\n checkDate(event, historicalTracking: HistoricalTrackingObject, key) {\r\n let dateString = event.target.value;\r\n if (dateString != \"\") {\r\n const formats = [\"D/M/YYYY\", \"DD/MM/YYYY\"];\r\n let date = moment(dateString, formats, true);\r\n historicalTracking[key] = !date.isValid();\r\n }\r\n else {\r\n historicalTracking[key] = true;\r\n }\r\n }\r\n\r\n checkTime(event, historicalTracking: HistoricalTrackingObject, key) {\r\n let dateString = event.target.value;\r\n if (dateString != \"\") {\r\n let date = moment(dateString, \"HH:mm:ss\", true);\r\n historicalTracking[key] = !date.isValid();\r\n }\r\n else {\r\n historicalTracking[key] = true;\r\n }\r\n }\r\n\r\n onDateKeypressEvent(event: any){\r\n if (event.which < 47 || event.which > 57) { // barra + 0 a 9 - barra é logo antes do 0\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n onTimeKeypressEvent(event: any){\r\n if (event.which < 48 || event.which > 58) { // 0 a 9 + : - dois pontos é logo depois do 9\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n getHistoricalTrackingId(mobileObjectId: string, sourceType: string, patrolTeam: PatrolTeamModel, operation: OperationModel, userId: string) {\r\n let id;\r\n\r\n // O mesmo celular pode ser usado por diferentes usuários\r\n if (sourceType == SourceType.MOBILE_APP) {\r\n if (userId) {\r\n id = userId;\r\n }\r\n else {\r\n id = mobileObjectId;\r\n }\r\n }\r\n else {\r\n id = mobileObjectId; // plate \r\n }\r\n\r\n // O mesmo usuário pode ter feito diferentes operações\r\n if (operation) {\r\n id += '-' + operation.id + '-' + operation.type;\r\n }\r\n else if (patrolTeam) {\r\n id += '-' + patrolTeam.id; // Equipe sem operação\r\n }\r\n\r\n return id;\r\n }\r\n\r\n getHistoricalTrackingTitle(mobileObjectId: string, sourceType: SourceType, patrolTeam: PatrolTeamModel, operation: OperationModel, user: UserModel): string {\r\n let title = '';\r\n\r\n if (operation){\r\n title += operation.identifier;\r\n title += ' - ';\r\n }\r\n else if (patrolTeam) {\r\n title += this.getPatrolTeamTitle(patrolTeam); // Equipe sem operação\r\n title += ' - ';\r\n }\r\n\r\n if (sourceType == SourceType.MOBILE_APP) {\r\n title += user ? user.name: USER_NOT_FOUND; // A pedido, aqui só mostra o nome do usuário, não inclui o login\r\n }\r\n else {\r\n title += mobileObjectId; // É a placa do veículo\r\n }\r\n\r\n return title;\r\n }\r\n\r\n private getHistoricalTrackingList() {\r\n let trackingList = [];\r\n this.historicalTrackingMap.forEach( (historicalTracking: HistoricalTrackingObject) => {\r\n trackingList.push({mobileObjectId: historicalTracking.mobileObjectId, \r\n operation: historicalTracking.operation, \r\n patrolTeam: historicalTracking.patrolTeam, \r\n user: historicalTracking.user, \r\n sourceType: historicalTracking.sourceType});\r\n });\r\n return trackingList;\r\n }\r\n\r\n private getHistoricalTrackingOptionsList() {\r\n let optionsList = [];\r\n this.historicalTrackingMap.forEach( (historicalTracking: HistoricalTrackingObject) => {\r\n optionsList.push({\r\n mobileObjectId: historicalTracking.mobileObjectId,\r\n finishTime: historicalTracking.finishTime,\r\n startTime: historicalTracking.startTime,\r\n visible: historicalTracking.visible,\r\n timeVisible: historicalTracking.timeVisible,\r\n stateVisible: historicalTracking.stateVisible\r\n });\r\n });\r\n return optionsList;\r\n }\r\n\r\n onHistoricalTrackingOperationListSelection(historicalTrackingOperationList: OperationModel[]){\r\n historicalTrackingOperationList.forEach((operation) =>{\r\n this.onHistoricalTrackingOperationSelection(operation, false);\r\n });\r\n }\r\n\r\n compareSignalTime(a: AbstractSignalModel, b: AbstractSignalModel): number {\r\n return a.timestamp - b.timestamp; // mais antigos primeiro, para a poder adicionar pontos novos ao final\r\n }\r\n\r\n sortHistoricalSignals(historicSignals: AbstractSignalModel[]) {\r\n historicSignals.sort(this.compareSignalTime);\r\n }\r\n\r\n private addHistoricalTrackingObject(mobileObjectId: string, sourceType: SourceType, patrolTeam: PatrolTeamModel, operation: OperationModel, user: UserModel, historicSignals: AbstractSignalModel[], startDate: number, endDate: number) {\r\n let id = this.getHistoricalTrackingId(mobileObjectId, sourceType, patrolTeam, operation, user?.id);\r\n let historicalTracking: HistoricalTrackingObject = this.historicalTrackingMap.get(id);\r\n if (!historicalTracking){\r\n historicalTracking = new HistoricalTrackingObject();\r\n this.historicalTrackingMap.set(id, historicalTracking);\r\n this.historicalTrackingsListedCount++;\r\n }\r\n\r\n historicalTracking.patrolTeam = patrolTeam;\r\n historicalTracking.operation = operation;\r\n historicalTracking.sourceType = sourceType;\r\n historicalTracking.user = user;\r\n historicalTracking.mobileObjectId = mobileObjectId;\r\n\r\n if (sourceType == SourceType.VEHICLE) {\r\n historicalTracking.vehicle = this.entityCacheService.getVehicleByPlate(mobileObjectId);\r\n }\r\n\r\n historicalTracking.visible = true;\r\n\r\n this.sortHistoricalSignals(historicSignals);\r\n\r\n historicalTracking.signals = historicSignals;\r\n\r\n if (startDate && endDate) {\r\n historicalTracking.firstTimestamp = startDate;\r\n historicalTracking.lastTimestamp = endDate;\r\n\r\n const firstTimeMoment = moment(historicalTracking.firstTimestamp);\r\n historicalTracking.firstTime = firstTimeMoment.format(TIME_FORMAT);\r\n historicalTracking.firstDate = firstTimeMoment.format(DATE_FORMAT);\r\n\r\n const lastTimeMoment = moment(historicalTracking.lastTimestamp);\r\n historicalTracking.lastTime = lastTimeMoment.format(TIME_FORMAT);\r\n historicalTracking.lastDate = lastTimeMoment.format(DATE_FORMAT);\r\n }\r\n\r\n this.updateTimeFields(historicalTracking);\r\n this.buildTrackingLine(historicalTracking, historicalTracking.signals);\r\n\r\n return historicalTracking;\r\n }\r\n\r\n private getTeamUser(patrolTeam: PatrolTeamModel, userId: string): UserModel {\r\n let user = null;\r\n patrolTeam.users.forEach(teamUser => {\r\n if (teamUser.id == userId) {\r\n user = teamUser;\r\n }\r\n });\r\n return user;\r\n }\r\n\r\n onHistoricalTrackingOperationSelection(operation: OperationModel, fit: boolean) {\r\n this.logger.debug('MapComponent.onHistoricalTrackingOperationSelection');\r\n\r\n // Mostra também a operação\r\n this.onOperationSelection(operation, false);\r\n\r\n let bounds: L.LatLngBounds = null;\r\n let polyLine: L.LatLng[] = []; \r\n\r\n this.loadingListService.loadingOn();\r\n this.trackingService.loadFromServerByOperationIdAndOperationType(operation.id, operation.type, operation.startDate).pipe(first()).subscribe((historicSignals: AbstractSignalModel[]) => {\r\n this.logger.debug(`MapComponent.onHistoricalTrackingOperationSelection - Carregou Rastro de Operação com ${historicSignals?.length} sinais.`);\r\n this.loadingListService.loadingOff();\r\n \r\n if (!historicSignals || historicSignals.length < 1) {\r\n this.toastr.warning(\"Não foram encontrados sinais para a operação \" + (operation.identifier? operation.identifier: ''), 'Leitura de Rastro');\r\n operation.patrolTeam.users.forEach(user => {\r\n this.addHistoricalTrackingObject(user.id, SourceType.MOBILE_APP, operation.patrolTeam, operation, user, [], null, null);\r\n });\r\n return;\r\n }\r\n\r\n let signalsPerId = {};\r\n historicSignals.forEach( (signal : AbstractSignalModel) => {\r\n let id = this.getHistoricalTrackingId(signal.mobileObjectId, signal.sourceType, operation.patrolTeam, operation, signal['userId']);\r\n if (!signalsPerId[id]) {\r\n signalsPerId[id] = [];\r\n }\r\n\r\n signalsPerId[id].push(signal);\r\n });\r\n\r\n for (const id in signalsPerId) {\r\n let firstSignal = signalsPerId[id][0] as SignalModel;\r\n let user = this.getTeamUser(operation.patrolTeam, firstSignal.userId);\r\n if (!user) {\r\n if (firstSignal.teamId != operation.patrolTeam.id)\r\n this.logger.error(\"MapComponent.onHistoricalTrackingOperationSelection - Dados inconsistentes no Sinal! Equipe não é a mesma da operação\", 'Leitura de Rastro');\r\n else\r\n this.logger.error(\"MapComponent.onHistoricalTrackingOperationSelection - Dados inconsistentes na Equipe! Usuário não encontrado\", 'Leitura de Rastro');\r\n }\r\n let historicalTracking = this.addHistoricalTrackingObject(firstSignal.mobileObjectId, SourceType.MOBILE_APP, operation.patrolTeam, operation, user, signalsPerId[id], null, null);\r\n\r\n if (user) {\r\n this.loadHistoricalTrackingOperationMarkers(historicalTracking);\r\n }\r\n\r\n if(fit && historicalTracking.trackingLine) {\r\n // O extend modifica a bounds, então tem que fazer uma cópia na primeira vez\r\n bounds ? bounds.extend(historicalTracking.trackingLine.getBounds()) : bounds = this.copyBounds(historicalTracking.trackingLine.getBounds()); // Esse get bounds retorna o bounds interno da Polyline\r\n polyLine = polyLine.concat(historicalTracking.trackingLine.getLatLngs() as L.LatLng[]);\r\n }\r\n }\r\n\r\n if (bounds){\r\n this.highlightBounds(bounds);\r\n this.highlightLatLongLine(polyLine);\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n });\r\n\r\n let endDate = moment(operation.startDate).add(SHIFT_DURATION*2, 'hours').valueOf(); // Apenas um default, o que vai valer mesmo é o operationId\r\n\r\n if (!operation.patrolTeam.vehicle || !operation.patrolTeam.vehicle.plate) return; // Isso não deveria acontecer. Mas ainda acontece...\r\n\r\n this.loadingListService.loadingOn();\r\n this.trackingService.loadFromServerByMobileObjectId(operation.patrolTeam.vehicle.plate, SourceType.VEHICLE, operation.patrolTeam, operation, operation.startDate, endDate).pipe(first()).subscribe((historicSignals: AbstractSignalModel[]) => {\r\n this.logger.debug(`MapComponent.onHistoricalTrackingOperationSelection - Carregou Rastro de Veículo da Operação com ${historicSignals?.length} sinais.`);\r\n this.loadingListService.loadingOff();\r\n\r\n if (!historicSignals || historicSignals.length < 1) {\r\n this.addHistoricalTrackingObject(operation.patrolTeam.vehicle.plate, SourceType.VEHICLE, operation.patrolTeam, operation, null, [], null, null);\r\n return; // Não mostra warning, pode não haver sinais do veículo\r\n }\r\n\r\n let historicalTracking = this.addHistoricalTrackingObject(operation.patrolTeam.vehicle.plate, SourceType.VEHICLE, operation.patrolTeam, operation, null, historicSignals, null, null);\r\n\r\n if(fit && historicalTracking.trackingLine) {\r\n // O extend modifica a bounds, então tem que fazer uma cópia na primeira vez\r\n bounds ? bounds.extend(historicalTracking.trackingLine.getBounds()) : bounds = this.copyBounds(historicalTracking.trackingLine.getBounds()); // Esse get bounds retorna o bounds interno da Polyline\r\n polyLine = polyLine.concat(historicalTracking.trackingLine.getLatLngs() as L.LatLng[]);\r\n }\r\n\r\n if (bounds){\r\n this.highlightBounds(bounds);\r\n this.highlightLatLongLine(polyLine);\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n });\r\n }\r\n\r\n onHistoricalTrackingSelection(tracking: TrackingModel){\r\n this.onHistoricalTracking(tracking.signal.mobileObjectId, tracking.signal.sourceType, tracking.patrolTeam, null, tracking.user, true);\r\n }\r\n\r\n onHistoricalTrackingListSelection(trackingList: TrackingModel[]){\r\n trackingList.forEach((tracking) =>{\r\n this.onHistoricalTracking(tracking.signal.mobileObjectId, tracking.signal.sourceType, tracking.patrolTeam, null, tracking.user, false);\r\n });\r\n }\r\n \r\n onHistoricalTrackingLastOperationSelection(tracking : TrackingModel){\r\n this.onHistoricalTracking(tracking.signal.mobileObjectId, tracking.signal.sourceType, tracking.patrolTeam, tracking.operation, tracking.user, true);\r\n }\r\n\r\n onHistoricalTrackingLastOperationListSelection(trackingList: TrackingModel[]){\r\n trackingList.forEach((tracking) =>{\r\n this.onHistoricalTracking(tracking.signal.mobileObjectId, tracking.signal.sourceType, tracking.patrolTeam, tracking.operation, tracking.user, false);\r\n });\r\n }\r\n\r\n onHistoricalTrackingUserListSelection(userList: UserModel[]){\r\n userList.forEach((user) =>{\r\n this.onHistoricalTrackingUserSelection(user, false);\r\n });\r\n }\r\n\r\n onHistoricalTrackingUserSelection(user: UserModel, fit: boolean) {\r\n this.onHistoricalTracking(user.id, SourceType.MOBILE_APP, null, null, user, fit);\r\n }\r\n\r\n onHistoricalTrackingVehicleListSelection(vehicleList: VehicleModel[]){\r\n vehicleList.forEach((vehicle) =>{\r\n this.onHistoricalTrackingVehicleSelection(vehicle, false);\r\n });\r\n }\r\n\r\n onHistoricalTrackingVehicleSelection(vehicle: VehicleModel, fit: boolean) {\r\n this.onHistoricalTracking(vehicle.plate, SourceType.VEHICLE, null, null, null, fit);\r\n }\r\n\r\n onHistoricalTrackingTeamListSelection(historicalTrackingTeamList: PatrolTeamModel[]){\r\n historicalTrackingTeamList.forEach((patrolTeam) =>{\r\n this.onHistoricalTrackingTeamSelection(patrolTeam, false);\r\n });\r\n }\r\n\r\n onHistoricalTrackingTeamSelection(patrolTeam: PatrolTeamModel, fit: boolean) {\r\n this.logger.debug('MapComponent.onHistoricalTrackingTeamSelection');\r\n\r\n let bounds: L.LatLngBounds = null;\r\n let polyLine: L.LatLng[] = []; \r\n\r\n let startDate = moment().subtract(SHIFT_DURATION, 'hours').valueOf(); // startDate = Now - Shift\r\n let endDate = moment(startDate).add(SHIFT_DURATION, 'hours').valueOf(); // subtract e add mudam o moment original, então não dá para reusar\r\n\r\n this.loadingListService.loadingOn();\r\n this.trackingService.loadFromServerByTeamId(patrolTeam.id, startDate, endDate).pipe(first()).subscribe((historicSignals: AbstractSignalModel[]) => {\r\n this.logger.debug(`MapComponent.onHistoricalTrackingTeamSelection - Carregou Rastro de Equipe com ${historicSignals?.length} sinais.`);\r\n this.loadingListService.loadingOff();\r\n\r\n if (!historicSignals || historicSignals.length < 1) {\r\n this.toastr.warning(\"Não foram encontrados sinais para a equipe \" + patrolTeam.name, 'Leitura de Rastro');\r\n patrolTeam.users.forEach(user => {\r\n this.addHistoricalTrackingObject(user.id, SourceType.MOBILE_APP, patrolTeam, null, user, [], startDate, endDate);\r\n });\r\n return;\r\n }\r\n\r\n let signalsPerId = {};\r\n historicSignals.forEach( (signal : AbstractSignalModel) => {\r\n let id = this.getHistoricalTrackingId(signal.mobileObjectId, signal.sourceType, patrolTeam, null, signal['userId']);\r\n if (!signalsPerId[id]) {\r\n signalsPerId[id] = [];\r\n }\r\n\r\n signalsPerId[id].push(signal);\r\n });\r\n\r\n for (const id in signalsPerId) {\r\n let firstSignal = signalsPerId[id][0] as SignalModel;\r\n let user = this.getTeamUser(patrolTeam, firstSignal.userId);\r\n if (!user) {\r\n if (firstSignal.teamId != patrolTeam.id)\r\n this.logger.error(\"MapComponent.onHistoricalTrackingTeamSelection - Dados inconsistentes no Sinal! Equipe não é a mesma\", 'Leitura de Rastro');\r\n else\r\n this.logger.error(\"MapComponent.onHistoricalTrackingTeamSelection - Dados inconsistentes na Equipe! Usuário não encontrado\", 'Leitura de Rastro');\r\n }\r\n let historicalTracking = this.addHistoricalTrackingObject(firstSignal.mobileObjectId, SourceType.MOBILE_APP, patrolTeam, null, user, signalsPerId[id], startDate, endDate);\r\n if(fit && historicalTracking.trackingLine) {\r\n // O extend modifica a bounds, então tem que fazer uma cópia na primeira vez\r\n bounds ? bounds.extend(historicalTracking.trackingLine.getBounds()) : bounds = this.copyBounds(historicalTracking.trackingLine.getBounds()); // Esse get bounds retorna o bounds interno da Polyline\r\n polyLine = polyLine.concat(historicalTracking.trackingLine.getLatLngs() as L.LatLng[]);\r\n }\r\n }\r\n\r\n if (bounds){\r\n this.highlightBounds(bounds);\r\n this.highlightLatLongLine(polyLine);\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n });\r\n\r\n this.loadingListService.loadingOn();\r\n this.trackingService.loadFromServerByMobileObjectId(patrolTeam.vehicle.plate, SourceType.VEHICLE, patrolTeam, null, startDate, endDate).pipe(first()).subscribe((historicSignals: AbstractSignalModel[]) => {\r\n this.logger.debug(`MapComponent.onHistoricalTrackingTeamSelection - Carregou Rastro de Veículo da Equipe com ${historicSignals?.length} sinais.`);\r\n this.loadingListService.loadingOff();\r\n\r\n if (!historicSignals || historicSignals.length < 1) {\r\n this.addHistoricalTrackingObject(patrolTeam.vehicle.plate, SourceType.VEHICLE, patrolTeam, null, null, [], startDate, endDate);\r\n return; // Não mostra warning, pode não haver sinais do veículo\r\n }\r\n\r\n let historicalTracking = this.addHistoricalTrackingObject(patrolTeam.vehicle.plate, SourceType.VEHICLE, patrolTeam, null, null, historicSignals, startDate, endDate);\r\n\r\n if(fit && historicalTracking.trackingLine) {\r\n // O extend modifica a bounds, então tem que fazer uma cópia na primeira vez\r\n bounds ? bounds.extend(historicalTracking.trackingLine.getBounds()) : bounds = this.copyBounds(historicalTracking.trackingLine.getBounds()); // Esse get bounds retorna o bounds interno da Polyline\r\n polyLine = polyLine.concat(historicalTracking.trackingLine.getLatLngs() as L.LatLng[]);\r\n }\r\n\r\n if (bounds){\r\n this.highlightBounds(bounds);\r\n this.highlightLatLongLine(polyLine);\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n });\r\n }\r\n\r\n onHistoricalTracking(mobileObjectId: string, sourceType: SourceType, patrolTeam: PatrolTeamModel, operation: OperationModel, user: UserModel, fit: boolean) {\r\n this.logger.debug('MapComponent.onHistoricalTracking');\r\n\r\n // Chamado a partir do rastreamento\r\n\r\n if (operation) {\r\n // Mostra também a operação\r\n this.onOperationSelection(operation, false);\r\n }\r\n\r\n // Data/hora a partir da qual os dados históricos serão recuperados do servidor inicialmente;\r\n let startDate: number;\r\n let endDate: number;\r\n if (operation) {\r\n startDate = operation.startDate;\r\n endDate = moment(startDate).add(SHIFT_DURATION*2, 'hours').valueOf(); // endDate = startDate + Shift\r\n }\r\n else {\r\n endDate = moment().valueOf();\r\n startDate = moment(endDate).subtract(SHIFT_DURATION, 'hours').valueOf(); // startDate = Now - Shift\r\n }\r\n\r\n this.loadingListService.loadingOn();\r\n this.trackingService.loadFromServerByMobileObjectId(mobileObjectId, sourceType, patrolTeam, operation, startDate, endDate).pipe(first()).subscribe((historicSignals: AbstractSignalModel[]) => {\r\n this.logger.debug(`MapComponent.onHistoricalTracking - Carregou Rastro do Rastreamento com ${historicSignals?.length} sinais.`);\r\n this.loadingListService.loadingOff();\r\n\r\n if (!historicSignals || historicSignals.length < 1) {\r\n this.toastr.warning(\"Não foram encontrados sinais para o rastro de \" + this.getHistoricalTrackingTitle(mobileObjectId, sourceType, patrolTeam, operation, user), 'Leitura de Rastro');\r\n this.addHistoricalTrackingObject(mobileObjectId, sourceType, patrolTeam, operation, user, [], startDate, endDate);\r\n return;\r\n }\r\n\r\n let historicalTracking = this.addHistoricalTrackingObject(mobileObjectId, sourceType, patrolTeam, operation, user, historicSignals, startDate, endDate);\r\n\r\n if (operation) {\r\n this.loadHistoricalTrackingOperationMarkers(historicalTracking);\r\n }\r\n\r\n if (fit && this.historicalTrackingsVisible) {\r\n let bounds = this.fitHistoricalTrackingBounds(historicalTracking);\r\n if (bounds) this.highlightBounds(bounds);\r\n if (historicalTracking.trackingLine) this.highlightPolyline(historicalTracking.trackingLine);\r\n }\r\n });\r\n }\r\n\r\n private addStateMarker(historicalTracking: HistoricalTrackingObject, marker: MarkerModel){\r\n let inOperation = false;\r\n if (historicalTracking.firstSignalTimestamp == historicalTracking.startTimestamp && marker.timestamp < historicalTracking.startTimestamp){\r\n inOperation = true;\r\n }\r\n if (historicalTracking.lastSignalTimestamp == historicalTracking.finishTimestamp && marker.timestamp > historicalTracking.finishTimestamp){\r\n inOperation = true;\r\n }\r\n if (inOperation || marker.timestamp >= historicalTracking.startTimestamp && marker.timestamp <= historicalTracking.finishTimestamp) {\r\n let stateMarker = this.baseMap.createMarker([marker.location.lat, marker.location.lng], this.markerIcon, MarkerModel.getPopupContent(marker, historicalTracking.patrolTeam.name));\r\n stateMarker.bindTooltip(MarkerModel.getTooltipContent(marker));\r\n historicalTracking.stateMarkers.push(stateMarker);\r\n return stateMarker;\r\n }\r\n }\r\n\r\n private subscribeToNewMarkersNotifications() {\r\n this.onNewMarkerSubscription = this.markerService.onNewMarkerReceived().subscribe((marker: MarkerModel) => {\r\n if (!marker) return;\r\n\r\n // ATENCAO: appointedLocation e serverTimestamp não vem no avro do websocket\r\n // id vem em objectId\r\n if (!marker.id) {\r\n marker.id = marker['objectId'];\r\n }\r\n // Location vem separada\r\n if (!marker.location){\r\n marker.location = {lat: marker['latitude'], lng: marker['longitude']};\r\n }\r\n\r\n // Mesmo filtro que loadHistoricalTrackingOperationMarkers\r\n if (marker.sourceType === SourceType.MOBILE_APP && \r\n marker.markerType !== MarkerType.TEXT_MESSAGE &&\r\n marker.markerType !== MarkerType.AUDIO_MESSAGE &&\r\n marker.markerType !== MarkerType.IMAGE_MESSAGE &&\r\n marker.markerType !== MarkerType.VIDEO_MESSAGE){\r\n // mudanças de estado\r\n this.historicalTrackingMap.forEach( historicalTracking => {\r\n if (historicalTracking.sourceType == SourceType.MOBILE_APP &&\r\n historicalTracking.patrolTeam && historicalTracking.patrolTeam.id == marker.patrolTeamId &&\r\n historicalTracking.operation && (historicalTracking.operation.id == marker.operationId && historicalTracking.operation.type == marker.operationType) &&\r\n historicalTracking.user && historicalTracking.user.id == marker.userId){\r\n if (!historicalTracking.markers) historicalTracking.markers = [];\r\n historicalTracking.markers.push(marker);\r\n\r\n let stateMarker = this.addStateMarker(historicalTracking, marker);\r\n\r\n if(historicalTracking.visible && historicalTracking.stateVisible && stateMarker) {\r\n this.baseMap.addMarker(stateMarker);\r\n }\r\n }\r\n });\r\n }\r\n\r\n this.renderComponent();\r\n });\r\n }\r\n\r\n buildStateMarkers(historicalTracking: HistoricalTrackingObject) {\r\n this.removeHistoricalTrackingStateMarkers(historicalTracking);\r\n\r\n if (!historicalTracking.markers || historicalTracking.markers.length == 0) return;\r\n\r\n historicalTracking.stateMarkers = [];\r\n historicalTracking.markers.forEach( marker => {\r\n this.addStateMarker(historicalTracking, marker);\r\n });\r\n\r\n if(historicalTracking.visible && historicalTracking.stateVisible) {\r\n historicalTracking.stateMarkers.forEach(marker =>{\r\n this.baseMap.addMarker(marker);\r\n });\r\n }\r\n }\r\n\r\n loadHistoricalTrackingOperationMarkers(historicalTracking: HistoricalTrackingObject){\r\n let markerFilterModel: MarkerFilterModel = new MarkerFilterModel();\r\n markerFilterModel.patrolTeamId = historicalTracking.operation.patrolTeam.id;\r\n markerFilterModel.operationId = historicalTracking.operation.id;\r\n markerFilterModel.operationType = historicalTracking.operation.type;\r\n\r\n this.markerService.loadFilteredListFromRestApi(null, null, SORT_TIMESTAMP_DESC, markerFilterModel).pipe(first()).subscribe((markers: MarkerModel[]) =>{\r\n historicalTracking.markers = [];\r\n markers.forEach((marker: MarkerModel) => {\r\n if (marker.sourceType === SourceType.MOBILE_APP && \r\n marker.markerType !== MarkerType.TEXT_MESSAGE &&\r\n marker.markerType !== MarkerType.AUDIO_MESSAGE &&\r\n marker.markerType !== MarkerType.IMAGE_MESSAGE &&\r\n marker.markerType !== MarkerType.VIDEO_MESSAGE &&\r\n marker.userId == historicalTracking.user.id){\r\n // mudanças de estado\r\n historicalTracking.markers.push(marker);\r\n }\r\n });\r\n \r\n this.buildStateMarkers(historicalTracking);\r\n }, error => this.logger.error(error));\r\n }\r\n\r\n onHistoricalTrackingClick(historicalTracking: HistoricalTrackingObject){\r\n if (historicalTracking.visible) {\r\n let bounds = this.fitHistoricalTrackingBounds(historicalTracking);\r\n if (bounds) this.highlightBounds(bounds);\r\n if (historicalTracking.trackingLine) this.highlightPolyline(historicalTracking.trackingLine);\r\n }\r\n }\r\n\r\n private removeHistoricalTrackingStateMarkers(historicalTracking: HistoricalTrackingObject){\r\n if(historicalTracking.stateMarkers) {\r\n historicalTracking.stateMarkers.forEach(marker =>{\r\n this.baseMap.removeMarker(marker);\r\n });\r\n }\r\n }\r\n\r\n private removeHistoricalTrackingTimeMarkers(historicalTracking: HistoricalTrackingObject){\r\n if(historicalTracking.timeMarkers) {\r\n historicalTracking.timeMarkers.forEach(marker =>{\r\n this.baseMap.removeMarker(marker);\r\n });\r\n }\r\n }\r\n\r\n private removeHistoricalTrackingLine(historicalTracking: HistoricalTrackingObject){\r\n if(historicalTracking.trackingLine) {\r\n this.baseMap.removeLayerFromMap(historicalTracking.trackingLine);\r\n }\r\n if(historicalTracking.trackingDecorator) {\r\n this.baseMap.removeLayerFromMap(historicalTracking.trackingDecorator);\r\n }\r\n }\r\n\r\n onHistoricalTrackingRemoveClick(id, historicalTracking: HistoricalTrackingObject) {\r\n this.removeHistoricalTrackingLine(historicalTracking);\r\n this.removeHistoricalTrackingTimeMarkers(historicalTracking);\r\n this.removeHistoricalTrackingStateMarkers(historicalTracking);\r\n this.historicalTrackingMap.delete(id);\r\n }\r\n\r\n onHistoricalTrackingsRemoveClick() {\r\n this.historicalTrackingMap.forEach( (historicalTracking: HistoricalTrackingObject, id) => {\r\n this.onHistoricalTrackingRemoveClick(id, historicalTracking);\r\n });\r\n }\r\n\r\n onHistoricalTrackingsVisibilityClick() {\r\n this.historicalTrackingMap.forEach( (historicalTracking: HistoricalTrackingObject) => {\r\n // Se global é visible/invisible, faz todos invisible/visible, independente do estado individual\r\n if (this.historicalTrackingsVisible) {\r\n this.removeHistoricalTrackingLine(historicalTracking);\r\n this.removeHistoricalTrackingTimeMarkers(historicalTracking);\r\n this.removeHistoricalTrackingStateMarkers(historicalTracking);\r\n historicalTracking.visible = false;\r\n }\r\n else {\r\n if (historicalTracking.trackingLine) {\r\n this.baseMap.addLayerToMap(historicalTracking.trackingLine);\r\n this.baseMap.addLayerToMap(historicalTracking.trackingDecorator);\r\n }\r\n if(historicalTracking.timeMarkers && historicalTracking.timeVisible) {\r\n historicalTracking.timeMarkers.forEach(marker =>{\r\n this.baseMap.addMarker(marker);\r\n });\r\n }\r\n if(historicalTracking.stateMarkers && historicalTracking.stateVisible) {\r\n historicalTracking.stateMarkers.forEach(marker =>{\r\n this.baseMap.addMarker(marker);\r\n });\r\n }\r\n historicalTracking.visible = true;\r\n }\r\n });\r\n\r\n if (this.historicalTrackingsVisible) {\r\n this.historicalTrackingsVisible = false;\r\n }\r\n else {\r\n this.historicalTrackingsVisible = true;\r\n }\r\n }\r\n\r\n onHistoricalTrackingVisibilityClick(historicalTracking: HistoricalTrackingObject) {\r\n // se é individual, então troca o estado (como é um botão o estado ainda não mudou)\r\n if (historicalTracking.visible) {\r\n this.removeHistoricalTrackingLine(historicalTracking);\r\n this.removeHistoricalTrackingTimeMarkers(historicalTracking);\r\n this.removeHistoricalTrackingStateMarkers(historicalTracking);\r\n historicalTracking.visible = false;\r\n }\r\n else\r\n {\r\n if (historicalTracking.trackingLine) {\r\n this.baseMap.addLayerToMap(historicalTracking.trackingLine);\r\n }\r\n if(historicalTracking.timeMarkers && historicalTracking.timeVisible) {\r\n historicalTracking.timeMarkers.forEach(marker =>{\r\n this.baseMap.addMarker(marker);\r\n });\r\n }\r\n if(historicalTracking.stateMarkers && historicalTracking.stateVisible) {\r\n historicalTracking.stateMarkers.forEach(marker =>{\r\n this.baseMap.addMarker(marker);\r\n });\r\n }\r\n historicalTracking.visible = true;\r\n }\r\n }\r\n\r\n onToggleStateMarkerChange(historicalTracking: HistoricalTrackingObject) {\r\n if (!historicalTracking.stateVisible) {\r\n this.removeHistoricalTrackingStateMarkers(historicalTracking);\r\n }\r\n else\r\n {\r\n if(historicalTracking.stateMarkers) {\r\n historicalTracking.stateMarkers.forEach(marker =>{\r\n this.baseMap.addMarker(marker);\r\n });\r\n }\r\n }\r\n }\r\n\r\n onToggleTimeMarkerChange(historicalTracking: HistoricalTrackingObject) {\r\n if (!historicalTracking.timeVisible) {\r\n this.removeHistoricalTrackingTimeMarkers(historicalTracking);\r\n }\r\n else\r\n {\r\n if(historicalTracking.timeMarkers) {\r\n historicalTracking.timeMarkers.forEach(marker =>{\r\n this.baseMap.addMarker(marker);\r\n });\r\n }\r\n }\r\n }\r\n\r\n private reloadSignalsForHistoricalTracking(historicalTracking: HistoricalTrackingObject) {\r\n // recarrega os dados do servidor\r\n this.loadingListService.loadingOn();\r\n this.trackingService.loadFromServerByMobileObjectId(historicalTracking.mobileObjectId, historicalTracking.sourceType, historicalTracking.patrolTeam, historicalTracking.operation, historicalTracking.firstTimestamp, historicalTracking.lastTimestamp).pipe(first()).subscribe((historicSignals: AbstractSignalModel[]) => {\r\n this.logger.debug(`MapComponent.reloadSignalsForHistoricalTracking - Carregou Rastro com ${historicSignals?.length} sinais.`);\r\n this.loadingListService.loadingOff();\r\n\r\n if (!historicSignals || historicSignals.length < 1) {\r\n this.toastr.warning(\"Não foram encontrados sinais para o rastro de \" + this.getHistoricalTrackingTitle(historicalTracking.mobileObjectId, historicalTracking.sourceType, historicalTracking.patrolTeam, historicalTracking.operation, historicalTracking.user), 'Leitura de Rastro');\r\n }\r\n\r\n this.sortHistoricalSignals(historicSignals);\r\n\r\n historicalTracking.signals = historicSignals;\r\n\r\n this.updateTimeFields(historicalTracking);\r\n this.buildStateMarkers(historicalTracking);\r\n this.buildTrackingLine(historicalTracking, historicalTracking.signals);\r\n },\r\n (error) => {\r\n if(error.status == 400){\r\n this.toastr.warning(\"Parâmetros inválidos, o intervalo entre a data de início e fim não deve ser maior a 15 días\");\r\n }\r\n else{\r\n this.logger.error('Erro ao obter o rastro ', error);\r\n }\r\n this.loadingListService.loadingOff();\r\n } \r\n );\r\n }\r\n\r\n /** Centraliza o mapa nos dados históricos */\r\n private fitHistoricalTrackingBounds(historicalTracking: HistoricalTrackingObject) {\r\n let bounds: L.LatLngBounds = null;\r\n\r\n if(historicalTracking.trackingLine) {\r\n bounds = this.copyBounds(historicalTracking.trackingLine.getBounds()); // Esse get bounds retorna o bounds interno da Polyline\r\n }\r\n\r\n if (bounds) {\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n \r\n return bounds;\r\n }\r\n\r\n /** Callback para restabelecer o histórico completo do rastro */\r\n onHistoricalTrackingResetFilterClick(historicalTracking: HistoricalTrackingObject) {\r\n this.updateTimeFields(historicalTracking);\r\n this.buildStateMarkers(historicalTracking);\r\n this.buildTrackingLine(historicalTracking, historicalTracking.signals);\r\n }\r\n\r\n onStartTimeSliderChange(event: MatSliderChange, historicalTracking: HistoricalTrackingObject) {\r\n historicalTracking.startTimestamp = event.value;\r\n const startTimeMoment = moment(historicalTracking.startTimestamp);\r\n historicalTracking.startTime = startTimeMoment.format(TIME_FORMAT);\r\n historicalTracking.startDate = startTimeMoment.format(DATE_FORMAT);\r\n this.filterHistoricalTracking(historicalTracking);\r\n }\r\n\r\n onFinishTimeSliderChange(event: MatSliderChange, historicalTracking: HistoricalTrackingObject) {\r\n historicalTracking.finishTimestamp = event.value;\r\n if (historicalTracking.finishTimestamp/1000 == historicalTracking.lastSignalTimestamp/1000) {// compara em segundos apenas (ignora miliseconds)\r\n historicalTracking.finishChanged = false;\r\n }\r\n else {\r\n historicalTracking.finishChanged = true;\r\n }\r\n const finishTimeMoment = moment(historicalTracking.finishTimestamp);\r\n historicalTracking.finishTime = finishTimeMoment.format(TIME_FORMAT);\r\n historicalTracking.finishDate = finishTimeMoment.format(DATE_FORMAT);\r\n this.filterHistoricalTracking(historicalTracking);\r\n }\r\n\r\n /** Atualiza a interface a partir dos sinais */\r\n private updateTimeFields(historicalTracking: HistoricalTrackingObject, runTime?: boolean) {\r\n if (historicalTracking.signals.length != 0){\r\n historicalTracking.firstSignalTimestamp = historicalTracking.signals[0].timestamp;\r\n historicalTracking.lastSignalTimestamp = historicalTracking.signals[historicalTracking.signals.length-1].timestamp; // ordem cronológica\r\n\r\n if (runTime && historicalTracking.lastSignalTimestamp > historicalTracking.lastTimestamp){\r\n historicalTracking.lastTimestamp = historicalTracking.lastSignalTimestamp;\r\n\r\n const lastTimeMoment = moment(historicalTracking.lastTimestamp);\r\n historicalTracking.lastTime = lastTimeMoment.format(TIME_FORMAT);\r\n historicalTracking.lastDate = lastTimeMoment.format(DATE_FORMAT);\r\n }\r\n }\r\n else {\r\n // Não tem nenhum sinal, apenas copia os valores\r\n historicalTracking.firstSignalTimestamp = historicalTracking.firstTimestamp;\r\n historicalTracking.lastSignalTimestamp = historicalTracking.lastTimestamp;\r\n }\r\n\r\n if (!runTime) {\r\n const firstSignalMoment = moment(historicalTracking.firstSignalTimestamp);\r\n historicalTracking.startTime = firstSignalMoment.format(TIME_FORMAT);\r\n historicalTracking.startDate = firstSignalMoment.format(DATE_FORMAT);\r\n historicalTracking.startTimestamp = historicalTracking.firstSignalTimestamp;\r\n\r\n const lastSignalMoment = moment(historicalTracking.lastSignalTimestamp);\r\n historicalTracking.finishTime = lastSignalMoment.format(TIME_FORMAT);\r\n historicalTracking.finishDate = lastSignalMoment.format(DATE_FORMAT);\r\n historicalTracking.finishTimestamp = historicalTracking.lastSignalTimestamp;\r\n }\r\n else {\r\n // Em run time atualiza somente se a string não foi modificada\r\n if (!historicalTracking.finishChanged){\r\n const lastSignalMoment = moment(historicalTracking.lastSignalTimestamp);\r\n historicalTracking.finishTime = lastSignalMoment.format(TIME_FORMAT);\r\n historicalTracking.finishDate = lastSignalMoment.format(DATE_FORMAT);\r\n historicalTracking.finishTimestamp = historicalTracking.lastSignalTimestamp;\r\n }\r\n }\r\n }\r\n\r\n /** Atualiza os sinais a partir da interface */\r\n onHistoricalTrackingApplyFilterClick(historicalTracking: HistoricalTrackingObject) {\r\n const startTimestamp = DateUtils.stringDateTimeToTimestamp(historicalTracking.startDate, historicalTracking.startTime, true);\r\n const finishTimestamp = DateUtils.stringDateTimeToTimestamp(historicalTracking.finishDate, historicalTracking.finishTime, false);\r\n if (startTimestamp > finishTimestamp) {\r\n this.toastr.warning(\"O valor final deve ser maior que o valor inicial.\", \"Parâmetros inválidos\");\r\n return;\r\n }\r\n\r\n historicalTracking.startTimestamp = startTimestamp;\r\n historicalTracking.finishTimestamp = finishTimestamp; \r\n\r\n if (historicalTracking.startTimestamp < historicalTracking.firstSignalTimestamp) {\r\n historicalTracking.startTimestamp = historicalTracking.firstSignalTimestamp;\r\n const firstSignalMoment = moment(historicalTracking.firstSignalTimestamp);\r\n historicalTracking.startTime = firstSignalMoment.format(TIME_FORMAT);\r\n historicalTracking.startDate = firstSignalMoment.format(DATE_FORMAT);\r\n }\r\n\r\n if (historicalTracking.finishTimestamp > historicalTracking.lastSignalTimestamp) {\r\n historicalTracking.finishTimestamp = historicalTracking.lastSignalTimestamp;\r\n const lastSignalMoment = moment(historicalTracking.lastSignalTimestamp);\r\n historicalTracking.finishTime = lastSignalMoment.format(TIME_FORMAT);\r\n historicalTracking.finishDate = lastSignalMoment.format(DATE_FORMAT);\r\n }\r\n\r\n this.filterHistoricalTracking(historicalTracking);\r\n }\r\n\r\n onHistoricalTrackingLoadClick(historicalTracking: HistoricalTrackingObject) {\r\n const firstTimestamp = DateUtils.stringDateTimeToTimestamp(historicalTracking.firstDate, historicalTracking.firstTime, true);\r\n const lastTimestamp = DateUtils.stringDateTimeToTimestamp(historicalTracking.lastDate, historicalTracking.lastTime, false);\r\n if (firstTimestamp > lastTimestamp) {\r\n this.toastr.warning(\"O valor final deve ser maior que o valor inicial.\", \"Parâmetros inválidos\");\r\n return;\r\n }\r\n\r\n const numberOfHours = ((((lastTimestamp - firstTimestamp) / 1000) / 60)/ 60);\r\n \r\n if(numberOfHours > MAX_TIME_OF_TRACE){\r\n this.toastr.warning(\"O máximo interválo de tempo a ser consultado é 15 días.\", \"Parâmetros inválidos\");\r\n return;\r\n }\r\n\r\n historicalTracking.firstTimestamp = firstTimestamp;\r\n historicalTracking.lastTimestamp = lastTimestamp;\r\n\r\n this.reloadSignalsForHistoricalTracking(historicalTracking);\r\n }\r\n\r\n private getCompany(historicalTracking: HistoricalTrackingObject): CompanyModel{\r\n if (historicalTracking.patrolTeam) {\r\n return historicalTracking.patrolTeam.company;\r\n }\r\n if (historicalTracking.sourceType === SourceType.VEHICLE) {\r\n return historicalTracking.vehicle?.company;\r\n }\r\n else {\r\n return historicalTracking.user?.company;\r\n }\r\n }\r\n \r\n onHistoricalTrackingFilterDataClick(historicalTracking: HistoricalTrackingObject) {\r\n const historicSignals = this.filterHistoricalSignals(historicalTracking);\r\n if (!historicSignals || historicSignals.length < 1) {\r\n this.toastr.warning(\"Sem dados para mostrar. \\nO filtro eliminou todos os sinais do rastro de \" + this.getHistoricalTrackingTitle(historicalTracking.mobileObjectId, historicalTracking.sourceType, historicalTracking.patrolTeam, historicalTracking.operation, historicalTracking.user), 'Filtro de Rastro');\r\n return;\r\n }\r\n\r\n this.dialog.open(TrackPointsDialogComponent, {\r\n data: {\r\n signals: historicSignals, \r\n title: this.getHistoricalTrackingTitle(historicalTracking.mobileObjectId, historicalTracking.sourceType, historicalTracking.patrolTeam, historicalTracking.operation, historicalTracking.user),\r\n isVehicle: historicalTracking.sourceType == SourceType.VEHICLE? true: false,\r\n showOperation: historicalTracking.operation? false: true, // Mostra dados de operação somente se não é o rastro de uma operação\r\n companyName: this.getCompany(historicalTracking)?.name\r\n },\r\n panelClass: 'sipd-modal'\r\n });\r\n }\r\n\r\n private filterHistoricalTracking(historicalTracking: HistoricalTrackingObject){\r\n const historicSignals = this.filterHistoricalSignals(historicalTracking);\r\n if (!historicSignals || historicSignals.length < 1) {\r\n this.toastr.warning(\"O filtro eliminou todos os sinais do rastro de \" + this.getHistoricalTrackingTitle(historicalTracking.mobileObjectId, historicalTracking.sourceType, historicalTracking.patrolTeam, historicalTracking.operation, historicalTracking.user), 'Filtro de Rastro');\r\n }\r\n this.buildTrackingLine(historicalTracking, historicSignals);\r\n this.buildStateMarkers(historicalTracking);\r\n }\r\n\r\n /** Filtra os sinais históricos já existentes no cliente dentro de um período */\r\n private filterHistoricalSignals(historicalTracking: HistoricalTrackingObject) : AbstractSignalModel[] {\r\n return historicalTracking.signals.filter( (signal: AbstractSignalModel) => {\r\n return signal.timestamp >= historicalTracking.startTimestamp && signal.timestamp <= historicalTracking.finishTimestamp;\r\n });\r\n }\r\n\r\n private getHistoricalTrackingPopupContent(historicalTracking: HistoricalTrackingObject, search: boolean = false): string{\r\n const operation: OperationModel = historicalTracking.operation;\r\n const patrolTeam: PatrolTeamModel = historicalTracking.patrolTeam;\r\n const user: UserModel = historicalTracking.user;\r\n const title = TrackingModel.getTitle(historicalTracking.sourceType, historicalTracking.mobileObjectId, patrolTeam, user, search);\r\n return `
${historicalTracking.sourceType == SourceType.MOBILE_APP?'Rastro de Profissional': 'Rastro de Veículo'}
\r\n
${ title }
\r\n ${ operation ? OperationModel.getPopupContent(operation) : ''}\r\n ${ PatrolTeamModel.getPopupContent(patrolTeam, search) }\r\n
Distância Percorrida: ${historicalTracking.accumDistance.toLocaleString(\"pt-br\", {minimumFractionDigits: 3, maximumFractionDigits: 3}) + ' km'}
\r\n `;\r\n }\r\n\r\n private getTimeMarkerTooltipContent(historicalTracking: HistoricalTrackingObject, signal: AbstractSignalModel){\r\n const patrolTeam: PatrolTeamModel = historicalTracking.patrolTeam;\r\n const user: UserModel = historicalTracking.user;\r\n const title = TrackingModel.getTitle(historicalTracking.sourceType, historicalTracking.mobileObjectId, patrolTeam, user);\r\n return `
${ title }
\r\n
${DateUtils.timestampToStringInSeconds(signal.timestamp)}
\r\n
${FieldUtils.coordToString(signal.latitude)},${FieldUtils.coordToString(signal.longitude)}
\r\n
Distância Percorrida: ${historicalTracking.accumDistance.toLocaleString(\"pt-br\", {minimumFractionDigits: 3, maximumFractionDigits: 3}) + ' km'}
\r\n `;\r\n }\r\n\r\n private addTimeMarker(historicalTracking: HistoricalTrackingObject, signal: AbstractSignalModel) {\r\n let marker = L.circleMarker(L.latLng(signal.latitude, signal.longitude), {radius: MapInfo.TRACKING_LINE_WEIGHT, color: MapInfo.TRACKING_LINE_COLOR, fill: true, fillOpacity: 1.0});\r\n const tips = this.getTimeMarkerTooltipContent(historicalTracking, signal);\r\n marker.bindTooltip(tips);\r\n marker.bindPopup(tips, { minWidth: MapInfo.POPUP_MIN_WIDTH });\r\n historicalTracking.timeMarkers.push(marker);\r\n if ((this.historicalTrackingsVisible || historicalTracking.visible) && historicalTracking.timeVisible)\r\n this.baseMap.addMarker(marker);\r\n }\r\n\r\n private signalToTurfPoint(signal : AbstractSignalModel): turf.Coord{\r\n return turf.point([signal.longitude, signal.latitude]); // Note que é invertido (longitude, latitude)\r\n }\r\n\r\n private latLngToTurfPoint(latLng: L.LatLng): turf.Coord{\r\n return turf.point([latLng.lng, latLng.lat]); // Note que é invertido (longitude, latitude)\r\n }\r\n\r\n private buildTimeMarkers(historicalTracking: HistoricalTrackingObject, historicSignals: AbstractSignalModel[]) {\r\n historicalTracking.timeMarkers = [];\r\n let prevLatLng: turf.Coord, lastLatLng: turf.Coord;\r\n\r\n historicalTracking.accumDistance = 0;\r\n this.addTimeMarker(historicalTracking, historicSignals[0]);\r\n lastLatLng = prevLatLng = this.signalToTurfPoint(historicSignals[0]);\r\n\r\n for (let i = 1; i < historicSignals.length; i++) {\r\n let signal = historicSignals[i];\r\n let curLatLng = this.signalToTurfPoint(signal);\r\n historicalTracking.accumDistance += turf.distance(prevLatLng, curLatLng, {units: 'kilometers'});\r\n prevLatLng = curLatLng;\r\n\r\n if(turf.distance(lastLatLng, curLatLng, {units: 'kilometers'}) > MapInfo.TIME_MARKER_DISTANCE) {\r\n this.addTimeMarker(historicalTracking, signal);\r\n lastLatLng = curLatLng;\r\n }\r\n };\r\n }\r\n\r\n private addArrowsToTracking(historicalTracking: HistoricalTrackingObject){\r\n historicalTracking.trackingDecorator = L.polylineDecorator(historicalTracking.trackingLine, {\r\n patterns: [{\r\n repeat: 200,\r\n symbol: L.Symbol.arrowHead({\r\n pixelSize: MapInfo.TRACKING_LINE_WEIGHT*3,\r\n headAngle: 75,\r\n polygon: false,\r\n pathOptions: {\r\n stroke: true,\r\n weight: MapInfo.TRACKING_LINE_WEIGHT,\r\n color: MapInfo.TRACKING_LINE_COLOR\r\n }\r\n })\r\n }]\r\n });\r\n }\r\n\r\n /** Constrói o objeto geográfico do rastro a partir de uma lista de sinais */\r\n private buildTrackingLine(historicalTracking: HistoricalTrackingObject, historicSignals: AbstractSignalModel[]){\r\n const latLngsArray = [];\r\n let latLngs = [];\r\n\r\n if (!historicSignals || historicSignals.length < 1) {\r\n return;\r\n }\r\n\r\n historicSignals.forEach( (signal : AbstractSignalModel) => {\r\n\r\n latLngs.push([signal.latitude, signal.longitude]);\r\n\r\n // Subdivide o poligono se a distancia entre dois pontos for maior que o definido\r\n // Comentado temporariamente para avaliar rastros de veículos em produção\r\n // Outro problema Ronda 22021016R0001 dá erro de null[0] nessa etapa\r\n // if(latLngs.length>1){\r\n // const from = this.latLngToTurfPoint(latLngs[latLngs.length-2]); // penultimo\r\n // const to = this.latLngToTurfPoint(latLngs[latLngs.length-1]); // ultimo adicionado\r\n // const dist = turf.distance(from, to, {units: 'kilometers'});\r\n // if (dist > MapInfo.MAX_DISTANCE_KM) {\r\n // const lastPoint = latLngs[latLngs.length-1];\r\n // const temp = latLngs.slice(0,-1);\r\n // if (temp.length === 1) {\r\n // latLngsArray.push(temp.push(latLngs[0]));\r\n // }\r\n // else {\r\n // latLngsArray.push(temp);\r\n // }\r\n // latLngs = [];\r\n // latLngs.push(lastPoint);\r\n // }\r\n // }\r\n });\r\n\r\n if (latLngs.length === 1) {\r\n latLngs.push(latLngs[0]); // repete o ponto para permitir à polyline traçar uma linha\r\n latLngsArray.push(latLngs);\r\n }\r\n else\r\n {\r\n latLngsArray.push(latLngs);\r\n }\r\n\r\n this.removeHistoricalTrackingLine(historicalTracking);\r\n this.removeHistoricalTrackingTimeMarkers(historicalTracking);\r\n\r\n this.buildTimeMarkers(historicalTracking, historicSignals);\r\n\r\n historicalTracking.trackingLine = L.polyline(latLngsArray, { color: MapInfo.TRACKING_LINE_COLOR, weight: MapInfo.TRACKING_LINE_WEIGHT, dashArray: MapInfo.TRACKING_LINE_STYLE });\r\n historicalTracking.popupContent = this.getHistoricalTrackingPopupContent(historicalTracking, true);\r\n historicalTracking.trackingLine.bindPopup(this.getHistoricalTrackingPopupContent(historicalTracking));\r\n this.addArrowsToTracking(historicalTracking);\r\n\r\n if (this.historicalTrackingsVisible || historicalTracking.visible){\r\n this.baseMap.addLayerToMap(historicalTracking.trackingLine);\r\n this.baseMap.addLayerToMap(historicalTracking.trackingDecorator);\r\n historicalTracking.visible = true;\r\n }\r\n\r\n if (this.searchValue) {\r\n this.updateListedObject(historicalTracking);\r\n }\r\n\r\n this.historicalTrackingsListedCount = this.updateListedCount(this.historicalTrackingMap);\r\n }\r\n\r\n updateHistoricalTracking(tracking: TrackingModel) {\r\n // Chamada quando o tracking é atualizado\r\n // Ou seja para que o rastro seja real time, a página de tracking tem que estar aberta\r\n let id = this.getHistoricalTrackingId(tracking.signal.mobileObjectId, tracking.signal.sourceType, tracking.patrolTeam, tracking.operation, tracking.user?.id);\r\n let historicalTracking: HistoricalTrackingObject = this.historicalTrackingMap.get(id);\r\n if (historicalTracking){\r\n if (tracking.operation && tracking.signal.operationStatus != OperationStatus.STARTED) {\r\n // Somente sinais que estão com status STARTED fazem parte da operação\r\n return;\r\n }\r\n\r\n let curLatLng = this.signalToTurfPoint(tracking.signal);\r\n\r\n if (historicalTracking.signals.length > 0) {\r\n let lastSignal = historicalTracking.signals[historicalTracking.signals.length-1]; // ordem cronológica, pega o último sinal antes de acrescentar o novo\r\n let prevLatLng = this.signalToTurfPoint(lastSignal);\r\n historicalTracking.accumDistance += turf.distance(prevLatLng, curLatLng, {units: 'kilometers'})\r\n }\r\n else {\r\n historicalTracking.accumDistance = 0;\r\n }\r\n\r\n historicalTracking.signals.push(tracking.signal);\r\n\r\n // Se o filtro está posicionado no último sinal, então atualiza os valores na interface\r\n if (!historicalTracking.finishChanged) {\r\n this.updateTimeFields(historicalTracking, true);\r\n }\r\n\r\n if (historicalTracking.visible) {\r\n if (tracking.signal.timestamp >= historicalTracking.startTimestamp && tracking.signal.timestamp <= historicalTracking.finishTimestamp) {\r\n if (historicalTracking.trackingLine) {\r\n if(historicalTracking.trackingDecorator) {\r\n this.baseMap.removeLayerFromMap(historicalTracking.trackingDecorator);\r\n }\r\n \r\n historicalTracking.trackingLine.addLatLng([tracking.signal.latitude, tracking.signal.longitude]);\r\n this.addArrowsToTracking(historicalTracking);\r\n\r\n if (this.historicalTrackingsVisible || historicalTracking.visible){\r\n this.baseMap.addLayerToMap(historicalTracking.trackingDecorator);\r\n historicalTracking.visible = true;\r\n }\r\n \r\n if (!historicalTracking.timeMarkers || historicalTracking.timeMarkers.length == 0){\r\n historicalTracking.timeMarkers = [];\r\n let marker = this.addTimeMarker(historicalTracking, tracking.signal);\r\n if ((this.historicalTrackingsVisible || historicalTracking.visible) && historicalTracking.timeVisible)\r\n this.baseMap.addMarker(marker);\r\n }\r\n else{\r\n let prevTimeLatLng = historicalTracking.timeMarkers[historicalTracking.timeMarkers.length-1].getLatLng();\r\n let lastLatLng = this.latLngToTurfPoint(prevTimeLatLng);\r\n if (turf.distance(lastLatLng, curLatLng, {units: 'kilometers'}) > MapInfo.TIME_MARKER_DISTANCE) {\r\n this.addTimeMarker(historicalTracking, tracking.signal);\r\n }\r\n }\r\n }\r\n else {\r\n this.buildTrackingLine(historicalTracking, historicalTracking.signals);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n historicalTrackingListOrder = (a: KeyValue, b: KeyValue): number => {\r\n if (a.value.patrolTeam && b.value.patrolTeam)\r\n return a.value.patrolTeam.name.localeCompare(b.value.patrolTeam.name);\r\n else if (a.value.patrolTeam)\r\n return -1;\r\n else if (b.value.patrolTeam)\r\n return 1;\r\n else {\r\n if (a.value.sourceType == 'MOBILE_APP' && b.value.sourceType == 'MOBILE_APP') {\r\n return a.value.user?.name.localeCompare(b.value.user?.name);\r\n }\r\n else {\r\n return a.key.localeCompare(b.key);\r\n }\r\n }\r\n }\r\n\r\n\r\n /**\r\n * ###########################################\r\n * Location Marker\r\n * ###########################################\r\n */\r\n\r\n onPasteLatLong(event: ClipboardEvent){\r\n let pastedValue = FieldUtils.pasteLatLong(event, this.locationMarkerLatLong);\r\n if (pastedValue != null) {\r\n this.locationMarkerLatLong = pastedValue;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n onZoomFitClick() {\r\n this.baseMap.fitZoom();\r\n }\r\n\r\n /** Posiciona um marcador na posição solicitada (componente de busca de localização) */\r\n onAddLocationMarker() {\r\n try {\r\n if(!this.locationMarkerLatLong) return;\r\n\r\n const latlong: Array = this.locationMarkerLatLong.split(',');\r\n if(latlong.length !== 2) return;\r\n\r\n const latitude: number = +latlong[0].trim();\r\n const longitude: number = +latlong[1].trim();\r\n\r\n this.baseMap.removeMarker(this.locationMarker);\r\n\r\n this.locationMarker = this.baseMap.createMarker([latitude, longitude], this.baseMap.searchLatLngIcon, this.getLocationMarkerPopupContent(latitude, longitude));\r\n this.locationMarker.bindTooltip(this.getLocationMarkerTooltipContent(latitude, longitude));\r\n this.baseMap.addMarker(this.locationMarker);\r\n this.baseMap.fitMarker(this.locationMarker);\r\n } catch (e) {\r\n this.toastr.warning('Siga o padrão: , separados por virgula.', 'Dados inválidos');\r\n }\r\n }\r\n\r\n onRemoveLocationMarker() {\r\n this.locationMarkerLatLong = undefined;\r\n\r\n this.baseMap.clearSearchResults();\r\n\r\n if (this.locationMarker) {\r\n this.baseMap.removeMarker(this.locationMarker);\r\n this.locationMarker = undefined;\r\n }\r\n }\r\n\r\n getLocationMarkerPopupContent(latitude: number, longitude: number){\r\n return `
Marcador de Posição
\r\n
Lat, Long:${FieldUtils.coordToString(latitude)},${FieldUtils.coordToString(longitude)}
`;\r\n }\r\n\r\n getLocationMarkerTooltipContent(latitude: number, longitude: number){\r\n return `
${FieldUtils.coordToString(latitude)},${FieldUtils.coordToString(longitude)}
`;\r\n }\r\n\r\n /**\r\n * ###################################################\r\n * Alertas\r\n * ###################################################\r\n */\r\n\r\n onAlertListSelection(alertList: AlertModel[]){\r\n alertList.forEach(alert =>{\r\n this.onAlertSelection(alert, false);\r\n });\r\n\r\n this.fitAlertListBounds(alertList);\r\n }\r\n\r\n fitAlertListBounds(alertList: AlertModel[]) {\r\n let latLongs: L.LatLngTuple[] = [];\r\n\r\n alertList.forEach(alert =>{\r\n latLongs.push([alert.location.coordinates[0], alert.location.coordinates[1]]); // inicialização do GeoPoint para alertas está trocada, está sendo feito (x=latitude e y=longitude)\r\n });\r\n\r\n if (latLongs.length > 1) {\r\n let bounds: L.LatLngBounds = this.getLatLongBounds(latLongs);\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n else if (latLongs.length == 1) {\r\n this.baseMap.fitPoint(latLongs[0]);\r\n }\r\n }\r\n\r\n onAlertsRemoveClick(){\r\n this.alertObjectsMap.forEach( (alertMapObject, id) => {\r\n this.onAlertRemoveClick(alertMapObject);\r\n });\r\n }\r\n\r\n onAlertClick(alertMapObject: AlertMapObject){\r\n if (alertMapObject.visible) {\r\n this.baseMap.fitMarker(alertMapObject.marker);\r\n this.highlightMarker(alertMapObject.marker);\r\n }\r\n }\r\n\r\n onAlertRemoveClick(alertMapObject: AlertMapObject){\r\n this.baseMap.removeMarker(alertMapObject.marker);\r\n this.alertObjectsMap.delete(alertMapObject.alert.id);\r\n if (alertMapObject.listed) this.alertsListedCount--;\r\n }\r\n\r\n onAlertsVisibilityClick(){\r\n this.alertObjectsMap.forEach( (alertMapObject, id) => {\r\n if (this.alertsVisible) {\r\n this.baseMap.removeMarker(alertMapObject.marker);\r\n alertMapObject.visible = false;\r\n }\r\n else{\r\n this.baseMap.addMarker(alertMapObject.marker);\r\n alertMapObject.visible = true;\r\n }\r\n });\r\n\r\n if (this.alertsVisible) {\r\n this.alertsVisible = false;\r\n }\r\n else{\r\n this.alertsVisible = true;\r\n }\r\n }\r\n\r\n onAlertVisibilityClick(alertMapObject: AlertMapObject){\r\n if (alertMapObject.visible) {\r\n this.baseMap.removeMarker(alertMapObject.marker);\r\n alertMapObject.visible = false;\r\n }\r\n else{\r\n this.baseMap.addMarker(alertMapObject.marker);\r\n alertMapObject.visible = true;\r\n }\r\n }\r\n\r\n onAlertSelection(alert : AlertModel, fit: boolean){\r\n this.logger.debug('MapComponent.onSelectAlert()');\r\n let alertMapObject = this.alertObjectsMap.get(alert.id);\r\n if (alertMapObject) {\r\n // Se existe, remove do mapa antes de atualizar\r\n this.baseMap.removeMarker(alertMapObject.marker);\r\n }\r\n else {\r\n alertMapObject = new AlertMapObject();\r\n this.alertObjectsMap.set(alert.id, alertMapObject);\r\n }\r\n\r\n alertMapObject.alert = alert;\r\n alertMapObject.popupContent = AlertModel.getPopupContent(alert, true);\r\n alertMapObject.marker = this.baseMap.createMarker([alert.location.coordinates[0], alert.location.coordinates[1]], this.alertIcon, AlertModel.getPopupContent(alert)); // inicialização do GeoPoint para alertas está errada, está sendo feito (x=latitude e y=longitude)\r\n\r\n if (this.alertsVisible) {\r\n this.baseMap.addMarker(alertMapObject.marker);\r\n alertMapObject.visible = true;\r\n\r\n if (fit) {\r\n this.highlightMarker(alertMapObject.marker);\r\n this.baseMap.fitMarker(alertMapObject.marker);\r\n }\r\n }\r\n\r\n if (this.searchValue) {\r\n this.updateListedObject(alertMapObject);\r\n }\r\n\r\n this.alertsListedCount = this.updateListedCount(this.alertObjectsMap);\r\n }\r\n\r\n private getAlertsList() {\r\n let alertList: AlertModel[] = [];\r\n this.alertObjectsMap.forEach( (alertMapObject: AlertMapObject) => {\r\n alertList.push(alertMapObject.alert);\r\n });\r\n return alertList;\r\n }\r\n\r\n alertListOrder = (a: KeyValue, b: KeyValue): number => {\r\n return b.value.alert.timestamp - a.value.alert.timestamp;\r\n }\r\n\r\n /**\r\n * ###################################################\r\n * Pontos\r\n * ###################################################\r\n */\r\n\r\n pointListOrder = (a: KeyValue, b: KeyValue): number => {\r\n return b.value.inspectionPoint.identifier.localeCompare(a.value.inspectionPoint.identifier);\r\n }\r\n\r\n private getPointsList() {\r\n let pointList: InspectionPointModel[] = [];\r\n this.pointObjectsMap.forEach( (inspectionPointObject: InspectionPointMapObject) => {\r\n pointList.push(inspectionPointObject.inspectionPoint);\r\n });\r\n return pointList;\r\n }\r\n\r\n onPointsRemoveClick(){\r\n this.pointObjectsMap.forEach( (inspectionPointObject, id) => {\r\n this.onPointRemoveClick(inspectionPointObject);\r\n });\r\n }\r\n\r\n onPointClick(inspectionPointObject: InspectionPointMapObject){\r\n if (inspectionPointObject.visible) {\r\n this.baseMap.fitMarker(inspectionPointObject.marker);\r\n this.highlightMarker(inspectionPointObject.marker);\r\n }\r\n }\r\n\r\n onPointVisibilityClick(inspectionPointObject: InspectionPointMapObject){\r\n if (inspectionPointObject.visible) {\r\n this.baseMap.removeMarker(inspectionPointObject.marker);\r\n inspectionPointObject.visible = false;\r\n }\r\n else{\r\n this.baseMap.addMarker(inspectionPointObject.marker);\r\n inspectionPointObject.visible = true;\r\n }\r\n }\r\n\r\n onPointsVisibilityClick(){\r\n this.pointObjectsMap.forEach( (inspectionPointObject, id) => {\r\n if (this.pointsVisible) {\r\n this.baseMap.removeMarker(inspectionPointObject.marker);\r\n inspectionPointObject.visible = false;\r\n }\r\n else{\r\n this.baseMap.addMarker(inspectionPointObject.marker);\r\n inspectionPointObject.visible = true;\r\n }\r\n });\r\n\r\n if (this.pointsVisible) {\r\n this.pointsVisible = false;\r\n }\r\n else {\r\n this.pointsVisible = true;\r\n }\r\n }\r\n\r\n onPointRemoveClick(inspectionPointObject: InspectionPointMapObject){\r\n this.baseMap.removeMarker(inspectionPointObject.marker);\r\n this.pointObjectsMap.delete(inspectionPointObject.inspectionPoint.id);\r\n if (inspectionPointObject.listed) this.pointsListedCount--;\r\n }\r\n\r\n getInspectionPointLatLong(inspectionPoint: InspectionPointModel): L.LatLngTuple {\r\n const latlong: Array = inspectionPoint.latLong.split(',');\r\n if (latlong.length !== 2)\r\n return null;\r\n\r\n const latitude: number = +latlong[0].trim();\r\n const longitude: number = +latlong[1].trim();\r\n\r\n return [latitude, longitude];\r\n }\r\n\r\n onInspectionPointSelection(inspectionPoint: InspectionPointModel, fit: boolean){\r\n this.logger.debug('MapComponent.onInspectionPointSelection()');\r\n\r\n const latlong: L.LatLngTuple = this.getInspectionPointLatLong(inspectionPoint);\r\n if (!latlong) return;\r\n\r\n let inspectionPointObject = this.pointObjectsMap.get(inspectionPoint.id);\r\n if (inspectionPointObject) {\r\n // Se existe, remove do mapa antes de atualizar\r\n this.baseMap.removeMarker(inspectionPointObject.marker);\r\n }\r\n else {\r\n inspectionPointObject = new InspectionPointMapObject();\r\n this.pointObjectsMap.set(inspectionPoint.id, inspectionPointObject);\r\n }\r\n\r\n inspectionPointObject.inspectionPoint = inspectionPoint;\r\n inspectionPointObject.popupContent = InspectionPointModel.getPopupContent(inspectionPoint, latlong[0], latlong[1], true);\r\n inspectionPointObject.marker = this.baseMap.createMarker(latlong, this.pointIcon, InspectionPointModel.getPopupContent(inspectionPoint, latlong[0], latlong[1]));\r\n\r\n if (this.pointsVisible) {\r\n this.baseMap.addMarker(inspectionPointObject.marker);\r\n inspectionPointObject.visible = true;\r\n \r\n if (fit) {\r\n this.highlightMarker(inspectionPointObject.marker);\r\n this.baseMap.fitMarker(inspectionPointObject.marker);\r\n }\r\n }\r\n\r\n if (this.searchValue) {\r\n this.updateListedObject(inspectionPointObject);\r\n }\r\n\r\n this.pointsListedCount = this.updateListedCount(this.pointObjectsMap);\r\n }\r\n\r\n onInspectionPointListSelection(inspectionPointList: InspectionPointModel[]){\r\n inspectionPointList.forEach(inspectionPoint =>{\r\n this.onInspectionPointSelection(inspectionPoint, false);\r\n });\r\n\r\n this.fitInspectionPointListBounds(inspectionPointList);\r\n }\r\n\r\n fitInspectionPointListBounds(inspectionPointList: InspectionPointModel[]) {\r\n let latLongs: L.LatLngTuple[] = [];\r\n\r\n inspectionPointList.forEach(inspectionPoint =>{\r\n const latlong: L.LatLngTuple = this.getInspectionPointLatLong(inspectionPoint);\r\n if (latlong) latLongs.push(latlong);\r\n });\r\n\r\n if (latLongs.length > 1) {\r\n let bounds: L.LatLngBounds = this.getLatLongBounds(latLongs);\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n else if (latLongs.length == 1) {\r\n this.baseMap.fitPoint(latLongs[0]);\r\n }\r\n }\r\n\r\n /**\r\n * ###################################################\r\n * Eventos\r\n * ###################################################\r\n */\r\n\r\n getLatLong(latlong: String): L.LatLngTuple {\r\n const latlongArray: Array = latlong.split(',');\r\n if (latlongArray.length !== 2)\r\n return null;\r\n\r\n const latitude: number = +latlongArray[0].trim();\r\n const longitude: number = +latlongArray[1].trim();\r\n\r\n return [latitude, longitude];\r\n }\r\n\r\n onEventClick(eventMapObject: EventMapObject){\r\n if (eventMapObject.visible) {\r\n if (eventMapObject.marker) {\r\n this.baseMap.fitMarker(eventMapObject.marker);\r\n this.highlightMarker(eventMapObject.marker);\r\n }\r\n else {\r\n let bounds = eventMapObject.line.getBounds().pad(MapInfo.BOUNDS_PAD_RATIO); // Esse get bounds retorna o bounds interno da Polyline\r\n this.baseMap.fitBounds(bounds);\r\n this.highlightBounds(bounds);\r\n this.highlightPolyline(eventMapObject.line);\r\n }\r\n }\r\n }\r\n\r\n onEventsRemoveClick(){\r\n this.eventObjectsMap.forEach( (eventMapObject, id) => {\r\n if (eventMapObject.marker) {\r\n this.baseMap.removeMarker(eventMapObject.marker);\r\n }\r\n else {\r\n this.baseMap.removeLayerFromMap(eventMapObject.line);\r\n }\r\n this.eventObjectsMap.delete(id);\r\n });\r\n }\r\n\r\n onEventRemoveClick(eventMapObject: EventMapObject){\r\n if (eventMapObject.marker) {\r\n this.baseMap.removeMarker(eventMapObject.marker);\r\n }\r\n else {\r\n this.baseMap.removeLayerFromMap(eventMapObject.line);\r\n }\r\n this.eventObjectsMap.delete(eventMapObject.event.id);\r\n }\r\n\r\n onEventsVisibilityClick(){\r\n this.eventObjectsMap.forEach( (eventMapObject, id) => {\r\n if (this.eventsVisible){\r\n if (eventMapObject.marker) {\r\n this.baseMap.removeMarker(eventMapObject.marker);\r\n }\r\n else {\r\n this.baseMap.removeLayerFromMap(eventMapObject.line);\r\n }\r\n eventMapObject.visible = false;\r\n }\r\n else{\r\n if (eventMapObject.marker) {\r\n this.baseMap.addMarker(eventMapObject.marker);\r\n }\r\n else {\r\n this.baseMap.addLayerToMap(eventMapObject.line);\r\n }\r\n eventMapObject.visible = true;\r\n }\r\n });\r\n\r\n if (this.eventsVisible){\r\n this.eventsVisible = false;\r\n }\r\n else{\r\n this.eventsVisible = true;\r\n }\r\n }\r\n\r\n onEventVisibilityClick(eventMapObject: EventMapObject){\r\n if (eventMapObject.visible){\r\n if (eventMapObject.marker) {\r\n this.baseMap.removeMarker(eventMapObject.marker);\r\n }\r\n else {\r\n this.baseMap.removeLayerFromMap(eventMapObject.line);\r\n }\r\n eventMapObject.visible = false;\r\n }\r\n else{\r\n if (eventMapObject.marker) {\r\n this.baseMap.addMarker(eventMapObject.marker);\r\n }\r\n else {\r\n this.baseMap.addLayerToMap(eventMapObject.line);\r\n }\r\n eventMapObject.visible = true;\r\n }\r\n }\r\n\r\n onEventSelection(event : EventModel, fit: boolean){\r\n this.logger.debug('MapComponent.onEventSelection()');\r\n let eventMapObject = this.eventObjectsMap.get(event.id);\r\n if (eventMapObject) {\r\n // Se existe, remove do mapa antes de atualizar\r\n if (eventMapObject.marker) {\r\n this.baseMap.removeMarker(eventMapObject.marker);\r\n }\r\n else {\r\n this.baseMap.removeLayerFromMap(eventMapObject.line);\r\n }\r\n }\r\n else {\r\n eventMapObject = new EventMapObject();\r\n this.eventObjectsMap.set(event.id, eventMapObject);\r\n this.eventsListedCount++;\r\n }\r\n\r\n eventMapObject.event = event;\r\n eventMapObject.popupContent = EventModel.getPopupContent(event, true);\r\n\r\n if (!!event.stretchStartLatLong && !!event.stretchEndLatLong) {\r\n const latLngs = [];\r\n latLngs.push(this.getLatLong(event.stretchStartLatLong));\r\n latLngs.push(this.getLatLong(event.stretchEndLatLong));\r\n\r\n eventMapObject.line = L.polyline(latLngs, { color: MapInfo.PLANNED_ROUTE_LINE_COLOR, weight: MapInfo.PLANNED_ROUTE_LINE_WEIGHT });\r\n eventMapObject.line.bindPopup(EventModel.getPopupContent(event));\r\n\r\n if (this.eventsVisible) {\r\n this.baseMap.addLayerToMap(eventMapObject.line);\r\n eventMapObject.visible = true;\r\n \r\n if (fit) {\r\n let bounds: L.LatLngBounds = this.getLatLongBounds(latLngs);\r\n this.highlightBounds(bounds);\r\n this.highlightPolyline(eventMapObject.line);\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n }\r\n }\r\n else if (!!event.targetPointLatLong) {\r\n const latlong = this.getLatLong(event.targetPointLatLong);\r\n if (!latlong) return;\r\n\r\n eventMapObject.marker = this.baseMap.createMarker(latlong, this.eventIcon, EventModel.getPopupContent(event));\r\n\r\n if (this.eventsVisible) {\r\n this.baseMap.addMarker(eventMapObject.marker);\r\n eventMapObject.visible = true;\r\n\r\n if (fit) {\r\n this.highlightMarker(eventMapObject.marker);\r\n this.baseMap.fitMarker(eventMapObject.marker);\r\n }\r\n }\r\n }\r\n\r\n if (this.searchValue) {\r\n this.updateListedObject(eventMapObject);\r\n }\r\n\r\n this.eventsListedCount = this.updateListedCount(this.eventObjectsMap);\r\n }\r\n\r\n onEventListSelection(eventList: EventModel[]){\r\n eventList.forEach(event =>{\r\n this.onEventSelection(event, false);\r\n });\r\n\r\n this.fitEventListBounds(eventList);\r\n }\r\n\r\n fitEventListBounds(eventList: EventModel[]) {\r\n let latLongs: L.LatLngTuple[] = [];\r\n let latlong: L.LatLngTuple;\r\n\r\n eventList.forEach(event =>{\r\n if (!!event.stretchStartLatLong && !!event.stretchEndLatLong) {\r\n latlong = this.getLatLong(event.stretchStartLatLong);\r\n if (latlong) latLongs.push(latlong);\r\n latlong = this.getLatLong(event.stretchEndLatLong);\r\n if (latlong) latLongs.push(latlong);\r\n }\r\n else {\r\n latlong = this.getLatLong(event.targetPointLatLong);\r\n if (latlong) latLongs.push(latlong);\r\n }\r\n });\r\n\r\n if (latLongs.length > 1) {\r\n let bounds: L.LatLngBounds = this.getLatLongBounds(latLongs);\r\n this.baseMap.fitBounds(bounds);\r\n }\r\n else if (latLongs.length == 1) {\r\n this.baseMap.fitPoint(latLongs[0]);\r\n }\r\n }\r\n\r\n private getEventsList() {\r\n let eventList: EventModel[] = [];\r\n this.eventObjectsMap.forEach( (eventMapObject: EventMapObject) => {\r\n eventList.push(eventMapObject.event);\r\n });\r\n return eventList;\r\n }\r\n\r\n eventListOrder = (a: KeyValue, b: KeyValue): number => {\r\n return b.value.event.date - a.value.event.date;\r\n }\r\n\r\n /**\r\n * ###################################################\r\n * Modo de Edição\r\n * ###################################################\r\n */\r\n\r\n onEditionModeSelection(data){\r\n this.logger.debug('MapComponent.onEditionModeSelection()');\r\n if (data.editionMode) {\r\n this.updateDrawPolylineButton(data.autoRoute);\r\n if (this.editionMode){\r\n // Já está em modo de edição = > atualizando a operação\r\n if (this.editionMode.OperationId != data.operationId ||\r\n this.editionMode.operation.type != data.operation.type) {\r\n this.glEmitEvent(LOCATION_UPDATE_PREFIX + 'operation-edit', {id: this.editionMode.OperationId, clearEditionMode: true});\r\n // Remove anterior antes de colocar um novo\r\n this.clearEditionMode();\r\n }\r\n else {\r\n this.updateEditionMode(data.operationId, data.operation, data.inspections, data.fileKmlRoute, data.removedKmlRoute, data.autoRoute);\r\n return;\r\n }\r\n }\r\n this.setEditionMode(data.operationId, data.operation, data.inspections, data.fileKmlRoute, data.removedKmlRoute, data.autoRoute);\r\n }\r\n else {\r\n if (this.editionMode) {\r\n // Estava em modo de edição => saindo modo de edção\r\n if (this.editionMode.OperationId == data.operationId &&\r\n this.editionMode.operation.type == data.operation.type) {\r\n // Remove o modo de edição existente, se o pedido vier da própria operação\r\n this.clearEditionMode();\r\n }\r\n }\r\n }\r\n }\r\n\r\n updateObjectsOpacity(opacity: number) {\r\n this.alertObjectsMap.forEach((alertMapObject) => {\r\n alertMapObject.marker.setOpacity(opacity);\r\n });\r\n\r\n this.pointObjectsMap.forEach((inspectionPointObject) => {\r\n inspectionPointObject.marker.setOpacity(opacity);\r\n });\r\n\r\n this.operationObjectsMap.forEach((operationMapObject) => {\r\n if (operationMapObject.geoPoints) operationMapObject.geoPoints.invoke('setOpacity', opacity);\r\n if (operationMapObject.geoRoute) operationMapObject.geoRoute.setStyle({ opacity: opacity });\r\n });\r\n\r\n this.historicalTrackingMap.forEach((historicalTracking) => {\r\n if (historicalTracking.trackingLine) historicalTracking.trackingLine.setStyle({ opacity: opacity });\r\n if (historicalTracking.trackingDecorator) historicalTracking.trackingDecorator.setStyle({ opacity: opacity });\r\n historicalTracking.timeMarkers.forEach( timeMarker =>{\r\n timeMarker.setStyle({ opacity: opacity });\r\n });\r\n if (historicalTracking.stateMarkers) {\r\n historicalTracking.stateMarkers.forEach( marker =>{\r\n marker.setOpacity(opacity);\r\n });\r\n }\r\n });\r\n\r\n this.eventObjectsMap.forEach((eventMapObject) => {\r\n if (eventMapObject.marker) {\r\n eventMapObject.marker.setOpacity(opacity);\r\n }\r\n else {\r\n eventMapObject.line.setStyle({ opacity: opacity });\r\n }\r\n });\r\n\r\n this.baseMap.updateObjectsOpacity(opacity); // Trata Camadas e Equipes\r\n }\r\n\r\n onCloseEditionMode() {\r\n this.glEmitEvent(LOCATION_UPDATE_PREFIX + 'operation-edit', {id: this.editionMode.OperationId, clearEditionMode: true});\r\n this.clearEditionMode();\r\n }\r\n\r\n isMarker(layer: L.Layer): boolean {\r\n return layer instanceof L.Marker;\r\n }\r\n\r\n isPolyline(layer: L.Layer): boolean {\r\n return layer instanceof L.Polyline;\r\n }\r\n\r\n findInspectionFromMarker(inspections: any [], marker) {\r\n if(marker.editionId){\r\n return inspections.find(inspection => (inspection.editionId == marker.editionId));\r\n }\r\n else{\r\n const id = L.stamp(marker); // pego o id do layer\r\n return inspections.find(inspection => (inspection.id_layer == id));\r\n }\r\n }\r\n\r\n findInspectionIndexFromMarker(inspections: any [], marker) {\r\n if(marker.editionId){\r\n return inspections.findIndex(inspection => (inspection.editionId == marker.editionId));\r\n }\r\n else{\r\n const id= L.stamp(marker); // pego o id do layer\r\n return inspections.findIndex(inspection => inspection.id_layer == id);\r\n }\r\n }\r\n\r\n kmlStringToFile(kmlStr: string){\r\n let strArray = [];\r\n strArray.push(kmlStr);\r\n let blob = new Blob(strArray);\r\n let arrayOfBlob = new Array();\r\n arrayOfBlob.push(blob);\r\n let file = new File(arrayOfBlob, '[Rota Editada]');\r\n return file;\r\n }\r\n\r\n removeEditedRoute() {\r\n let layers = this.baseMap.getDrawLayers();\r\n\r\n layers.forEach( layer => {\r\n if (!this.isMarker(layer)) {\r\n this.baseMap.removeDrawLayer(layer);\r\n }\r\n });\r\n }\r\n\r\n getEditedKmlRoute() {\r\n let layers = this.baseMap.getDrawLayers();\r\n let routeGroup = new L.LayerGroup();\r\n let hasLine = false;\r\n\r\n layers.forEach( layer => {\r\n if (!this.isMarker(layer)) {\r\n routeGroup.addLayer(layer);\r\n hasLine = true;\r\n }\r\n });\r\n\r\n if (!hasLine)\r\n return null;\r\n\r\n let routeGeoJSON = routeGroup.toGeoJSON();\r\n\r\n let kmlStr = tokml(routeGeoJSON, {\r\n name: 'Rota Editada',\r\n description: 'description'\r\n });\r\n\r\n let fileKmlRoute = this.kmlStringToFile(kmlStr);\r\n return fileKmlRoute;\r\n }\r\n\r\n /** Função que espera a criação do panel leaflet draw\r\n * dependendo da opção do toggle (rota automatizada ou não)\r\n * apresenta ou esconde botão para o desenho de polyline\r\n */\r\n updateDrawPolylineButton(autoRoute) {\r\n const myDrawPanel = document.getElementById('mapDOM');\r\n const observer = new MutationObserver(mutations=>{\r\n mutations.forEach(record => {\r\n if(record.type==='childList'){\r\n let button = document.getElementsByClassName(\"leaflet-draw-draw-polyline\")[0];\r\n if(button){ // se o button existe\r\n if (autoRoute) {\r\n // esconde button se rota automática\r\n button.style.display = \"none\"\r\n } else {\r\n // mostra button se rota manual\r\n button.style.display = \"\"\r\n }\r\n observer.disconnect();\r\n }\r\n }\r\n });\r\n });\r\n observer.observe(myDrawPanel,{\r\n childList:true,\r\n subtree: true,\r\n })\r\n }\r\n\r\n mapEditUpdate(data) {\r\n this.logger.debug(\"MapComponent.mapEditUpdate - \", data);\r\n let inspections: InspectionModel [] = undefined; // indica que houve alguma mudança nos pontos\r\n let rebuildKmlRoute = false; // indica que alguma linha mudou e a rota precisa ser atualizada\r\n if (data.createdLayer) {\r\n // Adiciona novos\r\n if (data.layerType == \"marker\") {\r\n let marker: L.Marker = data.createdLayer;\r\n let inspection = new InspectionModel();\r\n\r\n marker.setIcon(this.routeGeographicalObjectService.getCriticalPointIcon(this.editionMode.inspections.length+1));\r\n\r\n let latLng: L.LatLng = marker.getLatLng();\r\n inspection.location.latitude = FieldUtils.coordToString(latLng.lat);\r\n inspection.location.longitude = FieldUtils.coordToString(latLng.lng);\r\n inspection.id_layer = data.idlayer;\r\n this.editionMode.inspections.push(inspection);\r\n inspections = this.editionMode.inspections;\r\n }\r\n else { /* \"polyline\" */\r\n let polyline: L.Polyline = data.createdLayer;\r\n polyline.setStyle( {opacity: 1.0});\r\n\r\n rebuildKmlRoute = true;\r\n }\r\n }\r\n else if (data.editedLayers) {\r\n // Modifica os existentes\r\n let layerGroup = data.editedLayers;\r\n let layers: L.Layer[] = layerGroup.getLayers();\r\n\r\n layers.forEach( (layer: L.Layer) => {\r\n if (this.isMarker(layer)) {\r\n let marker: L.Marker = layer;\r\n let inspection = this.findInspectionFromMarker(this.editionMode.inspections, marker);\r\n if (inspection) {\r\n let latLng: L.LatLng = marker.getLatLng();\r\n inspection.location.latitude = FieldUtils.coordToString(latLng.lat);\r\n inspection.location.longitude = FieldUtils.coordToString(latLng.lng);\r\n inspections = this.editionMode.inspections;\r\n }\r\n else {\r\n this.logger.debug(\"MapComponent.mapEditUpdate - Erro Interno: marcador não encontrado nas inspeções\");\r\n }\r\n }\r\n else{\r\n // let polyline: L.Polyline = layer;\r\n rebuildKmlRoute = true;\r\n }\r\n });\r\n }\r\n else if (data.deletedLayers) {\r\n // Remove existentes\r\n let layerGroup = data.deletedLayers;\r\n let layers: L.Layer[] = layerGroup.getLayers();\r\n\r\n layers.forEach( (layer: L.Layer) => {\r\n if (this.isMarker(layer)) {\r\n let marker: L.Marker = layer;\r\n\r\n let inspectionIndex = this.findInspectionIndexFromMarker(this.editionMode.inspections, marker);\r\n if (inspectionIndex != -1) {\r\n this.editionMode.inspections.splice(inspectionIndex, 1);\r\n inspections = this.editionMode.inspections;\r\n }\r\n else {\r\n this.logger.debug(\"MapComponent.mapEditUpdate - Erro Interno: marcador não encontrado nas inspeções\");\r\n }\r\n }\r\n else{\r\n //let polyline: L.Polyline = layer;\r\n rebuildKmlRoute = true;\r\n }\r\n });\r\n }\r\n else if (data.editStart) {\r\n if (this.editionMode.autoRoute) {\r\n // Se estava com rota automática, simplifica antes de editar, mas não desliga o automático ainda\r\n this.removeEditedRoute();\r\n this.addEditionRouteToMap(true);\r\n }\r\n }\r\n\r\n if (rebuildKmlRoute && this.editionMode.autoRoute) { // Se alguma linha mudou e estava em rota automática, muda para rota manual\r\n this.editionMode.autoRoute = false;\r\n this.updateDrawPolylineButton(this.editionMode.autoRoute);\r\n }\r\n\r\n if(this.editionMode.autoRoute){\r\n if (inspections) { // Se algum ponto mudou\r\n this.glEmitEvent(LOCATION_UPDATE_PREFIX + 'operation-edit', {id: this.editionMode.OperationId, inspections: inspections, autoRoute: this.editionMode.autoRoute});\r\n }\r\n }\r\n else if (data.createdLayer || data.editedLayers || data.deletedLayers) {\r\n this.updateKmlRouteAndNotifyEdition(rebuildKmlRoute, inspections);\r\n }\r\n }\r\n\r\n updateKmlRouteAndNotifyEdition(rebuildKmlRoute:boolean, inspections: InspectionModel []){\r\n let fileKmlRoute = undefined;\r\n let removedKmlRoute = undefined;\r\n\r\n if (rebuildKmlRoute) {\r\n fileKmlRoute = this.getEditedKmlRoute();\r\n if (!fileKmlRoute) removedKmlRoute = true;\r\n\r\n this.editionMode.fileKmlRoute = fileKmlRoute;\r\n this.editionMode.removedKmlRoute = removedKmlRoute;\r\n }\r\n\r\n this.glEmitEvent(LOCATION_UPDATE_PREFIX + 'operation-edit', {id: this.editionMode.OperationId,\r\n inspections: inspections, fileKmlRoute: fileKmlRoute, removedKmlRoute: removedKmlRoute, autoRoute: this.editionMode.autoRoute});\r\n }\r\n\r\n private simplifyPolyline(polyline: L.Polyline, tolerance: number): L.Polyline{\r\n let simp = true;\r\n if (simp) {\r\n var turfOptions = {\r\n tolerance: tolerance,\r\n // whether or not to spend more time to create a higher-quality simplification with a different algorithm\r\n highQuality: false \r\n };\r\n let turfPolygon = turf.simplify(polyline.toGeoJSON(), turfOptions);\r\n let leafletGeoJSON = new L.GeoJSON(turfPolygon);\r\n let layer = leafletGeoJSON.getLayers()[0];\r\n if (layer instanceof L.Polyline) {\r\n layer.options = polyline.options;\r\n return layer;\r\n }\r\n }\r\n return polyline;\r\n }\r\n\r\n addEditionRouteToMap(simplify: boolean){\r\n if (this.editionMode.fileKmlRoute) {\r\n this.routeGeographicalObjectService.importKmlRoute(this.editionMode.fileKmlRoute, this.editionMode.operation).then((geoRoute) => {\r\n geoRoute.on('ready', () => {\r\n let polylines: L.Polyline [] = RouteGeographicalService.getGeoRoutePolyline(geoRoute);\r\n if (polylines && polylines.length > 0) {\r\n // Tem que adicionar um a um no mapa para que sejam reconhecidas pelo leaflet-draw\r\n polylines.forEach(polyline => {\r\n if (simplify) polyline = this.simplifyPolyline(polyline, MapInfo.SIMPLIFY_POLYLINE_TOL);\r\n this.baseMap.addDrawLayer(polyline);\r\n });\r\n this.baseMap.fitDrawLayer();\r\n }\r\n });\r\n });\r\n } else if (!this.editionMode.removedKmlRoute) {\r\n if (this.editionMode.operation.route && this.editionMode.operation.route.fileRouteKml) {\r\n this.routeGeographicalObjectService.loadKML(this.editionMode.operation)\r\n .then((geoRoute) => {\r\n geoRoute.on('ready', () => {\r\n let polylines: L.Polyline [] = RouteGeographicalService.getGeoRoutePolyline(geoRoute);\r\n if (polylines && polylines.length > 0) {\r\n polylines.forEach(polyline => {\r\n if (simplify) polyline = this.simplifyPolyline(polyline, MapInfo.SIMPLIFY_POLYLINE_TOL);\r\n this.baseMap.addDrawLayer(polyline);\r\n });\r\n this.baseMap.fitDrawLayer();\r\n }\r\n });\r\n })\r\n .catch( error => {\r\n this.toastr.error(\"Falha ao carregar rota\");\r\n this.logger.error(error);\r\n });\r\n }\r\n }\r\n }\r\n\r\n addEditionOperationToMap() {\r\n // Chamada quando vem da tela de edição para o mapa\r\n\r\n let markers: L.Marker[] = this.routeGeographicalObjectService.getOperationPointMarkers(this.editionMode.operation, this.editionMode.inspections);\r\n if (markers) markers.forEach( (marker => {\r\n this.baseMap.addDrawLayer(marker);\r\n }));\r\n\r\n if (markers && markers.length != 0) {\r\n this.baseMap.fitDrawLayer();\r\n }\r\n\r\n this.addEditionRouteToMap(false);\r\n\r\n let operationMapObject = this.operationObjectsGet(this.editionMode.operation.id, this.editionMode.operation.type);\r\n if (operationMapObject) {\r\n this.editionMode.wasVisible = operationMapObject.visible;\r\n operationMapObject.visible = false;\r\n }\r\n }\r\n\r\n setEditionMode(operationId: string, operation: OperationModel, inspections: InspectionModel[], fileKmlRoute: File, removedKmlRoute: boolean, autoRoute: boolean) {\r\n this.logger.debug('MapComponent.setEditionMode()');\r\n this.editionMode = new EditionModeObject();\r\n this.editionMode.OperationId = operationId;\r\n this.editionMode.operation = operation;\r\n this.editionMode.inspections = JSON.parse(JSON.stringify(inspections));\r\n this.editionMode.fileKmlRoute = fileKmlRoute;\r\n this.editionMode.removedKmlRoute = removedKmlRoute;\r\n this.editionMode.autoRoute = autoRoute;\r\n\r\n this.editionMode.glassPanel = new GlassPanelObject();\r\n this.baseMap.addLayerToMap(this.editionMode.glassPanel.geoRectangle);\r\n this.editionMode.glassPanel.geoRectangle.bringToFront();\r\n\r\n this.updateObjectsOpacity(MapInfo.GLASS_OBJECT_OPACITY);\r\n\r\n this.baseMap.shownDraw = true;\r\n this.addEditionOperationToMap();\r\n }\r\n\r\n updateEditionMode(operationId: string, operation: OperationModel, inspections: InspectionModel[], fileKmlRoute: File, removedKmlRoute: boolean, autoRoute: boolean) {\r\n this.logger.debug('MapComponent.updateEditionMode()');\r\n this.editionMode.OperationId = operationId;\r\n this.editionMode.operation = operation;\r\n this.editionMode.inspections = JSON.parse(JSON.stringify(inspections));\r\n this.editionMode.fileKmlRoute = fileKmlRoute;\r\n this.editionMode.removedKmlRoute = removedKmlRoute;\r\n this.editionMode.autoRoute = autoRoute;\r\n\r\n this.baseMap.removeDrawLayers();\r\n\r\n this.addEditionOperationToMap();\r\n }\r\n\r\n clearEditionMode() {\r\n this.baseMap.removeLayerFromMap(this.editionMode.glassPanel.geoRectangle);\r\n\r\n let operationMapObject = this.operationObjectsGet(this.editionMode.operation.id, this.editionMode.operation.type);\r\n if (operationMapObject) {\r\n operationMapObject.visible = this.editionMode.wasVisible ? true: false;\r\n }\r\n\r\n this.editionMode = null;\r\n this.baseMap.shownDraw = false;\r\n\r\n this.baseMap.removeDrawLayers();\r\n\r\n this.updateObjectsOpacity(1.0);\r\n }\r\n\r\n\r\n /**\r\n * ###################################################\r\n * Métodos do mapa\r\n * ###################################################\r\n */\r\n\r\n sidenavToggle(opened) {\r\n this.openedSideList = opened;\r\n this.glOnResize();\r\n }\r\n\r\n mapReady(map: L.Map){\r\n this.logger.debug(\"MapComponent.mapReady\");\r\n this.glOnResize();\r\n\r\n map.on('click', () => {\r\n if (this.highlight) { \r\n this.baseMap.removeLayerFromMap(this.highlight);\r\n this.highlight = null;\r\n }\r\n if (this.highlightLine) { \r\n this.baseMap.removeLayerFromMap(this.highlightLine);\r\n this.highlightLine = null;\r\n }\r\n });\r\n }\r\n\r\n highlightMarker(marker: L.Marker){\r\n let latLongs: L.LatLng[] = [];\r\n latLongs.push(marker.getLatLng());\r\n this.highlightLatLongPoints(latLongs);\r\n }\r\n\r\n highlightMarkers(markers: L.Marker[]){\r\n if (markers.length == 1) {\r\n this.highlightMarker(markers[0]);\r\n }\r\n else {\r\n let latLongs: L.LatLngTuple[] = [];\r\n\r\n markers.forEach(marker => {\r\n const latLong: L.LatLng = marker.getLatLng();\r\n latLongs.push([latLong.lat, latLong.lng]);\r\n });\r\n\r\n let bounds: L.LatLngBounds = this.getLatLongBounds(latLongs);\r\n this.highlightBounds(bounds);\r\n }\r\n }\r\n\r\n highlightLatLongPoints(latLongs: L.LatLng[]){\r\n if (this.highlight) this.baseMap.removeLayerFromMap(this.highlight);\r\n\r\n let layerGroup = L.layerGroup();\r\n\r\n latLongs.forEach(latLong => {\r\n layerGroup.addLayer(L.circle(latLong, {radius: MapInfo.HIGHLIGHT_CIRCLE_RADIUS, fill: true, fillColor: MapInfo.HIGHLIGHT_FILL_COLOR, opacity: MapInfo.HIGHLIGHT_OPACITY}));\r\n });\r\n\r\n this.highlight = layerGroup;\r\n\r\n this.baseMap.addLayerToMap(this.highlight);\r\n }\r\n\r\n highlightBounds(bounds: L.LatLngBounds) {\r\n if (this.highlight) this.baseMap.removeLayerFromMap(this.highlight);\r\n\r\n this.highlight = L.rectangle(bounds, {fill: true, fillColor: MapInfo.HIGHLIGHT_FILL_COLOR, opacity: MapInfo.HIGHLIGHT_OPACITY});\r\n\r\n this.baseMap.addLayerToMap(this.highlight);\r\n }\r\n\r\n highlightLatLongLine(latLongLine: L.LatLng[]) {\r\n if (this.highlightLine) this.baseMap.removeLayerFromMap(this.highlightLine);\r\n\r\n this.highlightLine = L.polyline(latLongLine, {stroke: true, weight: MapInfo.HIGHLIGHT_LINE_WEIGHT, color: MapInfo.HIGHLIGHT_LINE_COLOR, opacity: MapInfo.HIGHLIGHT_OPACITY-0.3});\r\n\r\n this.baseMap.addLayerToMap(this.highlightLine);\r\n }\r\n\r\n highlightPolyline(line: L.Polyline) {\r\n this.highlightLatLongLine(line.getLatLngs() as L.LatLng[]);\r\n }\r\n\r\n highlightGeoRoute(geoRoute: L.GeoJSON){\r\n if (this.highlightLine) this.baseMap.removeLayerFromMap(this.highlightLine);\r\n\r\n let layerGroup = L.layerGroup();\r\n\r\n let polylines: L.Polyline [] = RouteGeographicalService.getGeoRoutePolyline(geoRoute);\r\n polylines.forEach(line => {\r\n let highLine = L.polyline(line.getLatLngs() as L.LatLng[], {stroke: true, weight: MapInfo.HIGHLIGHT_LINE_WEIGHT, color: MapInfo.HIGHLIGHT_LINE_COLOR, opacity: MapInfo.HIGHLIGHT_OPACITY-0.3});\r\n layerGroup.addLayer(highLine);\r\n });\r\n\r\n this.highlightLine = layerGroup;\r\n \r\n this.baseMap.addLayerToMap(this.highlightLine);\r\n }\r\n\r\n glOnResize(maximizing?) {\r\n let width: number;\r\n let height: number;\r\n\r\n if (this.sidenavcontent) {\r\n let nativeElement = this.sidenavcontent.getElementRef().nativeElement;\r\n width = nativeElement.parentElement.clientWidth;\r\n height = nativeElement.parentElement.clientHeight;\r\n }\r\n else {\r\n width = this.glContainerWidth();\r\n height = this.glContainerHeight() - HEADER_VERTICAL_SPACE;\r\n }\r\n\r\n width = Math.floor(width) - 1;\r\n height = Math.floor(height) - 1;\r\n\r\n if (this.openedSideList) {\r\n width = width - SIDE_HORIZONTAL_SPACE;\r\n }\r\n\r\n if (width <= 0 || height <= 0) return;\r\n\r\n this.logger.debug(`MapComponent.glOnResize - [${width.toFixed(0)}, ${height.toFixed(0)}]`);\r\n\r\n this.mapStyle = { width:width.toFixed(0) + 'px', height: height.toFixed(0) + 'px'};\r\n\r\n setTimeout(() => {this.baseMap.invalidateSize();}, 100);\r\n }\r\n\r\n /**\r\n * ###################################################\r\n * Popout\r\n * ###################################################\r\n */\r\n\r\n glOnPopout() {\r\n super.glOnPopout();\r\n this.savePopoutData()\r\n }\r\n\r\n glOnPopin() {\r\n super.glOnPopin();\r\n this.savePopoutData()\r\n }\r\n\r\n savePopoutData() {\r\n this.storageService.setPopoutData({\r\n alertsList: this.getAlertsList(),\r\n pointsList: this.getPointsList(),\r\n operationsIdList: this.getOperationsIdList(),\r\n operationsList: this.getOperationsList(),\r\n eventsList: this.getEventsList(),\r\n historicalTrackingList: this.getHistoricalTrackingList(),\r\n historicalTrackingOptionsList: this.getHistoricalTrackingOptionsList(),\r\n layerFilter: this.layersFilter,\r\n areasFiltered: this.areasFiltered,\r\n allResponsibles: this.allResponsibles,\r\n openedSideList: this.openedSideList,\r\n });\r\n }\r\n\r\n restorePopoutData(popout) {\r\n this.logger.debug(\"MapComponent.restorePopoutData - \", popout);\r\n\r\n if (popout.layerFilter) {\r\n this.layersFilter = popout.layerFilter;\r\n this.areasFiltered = popout.areasFiltered;\r\n this.allResponsibles = popout.allResponsibles;\r\n\r\n this.baseMap.updateAllFilters();\r\n }\r\n\r\n popout.alertsList.forEach( (alert: AlertModel) => {\r\n this.onAlertSelection(alert, false); // Não centraliza\r\n });\r\n\r\n popout.pointsList.forEach( (inspectionPoint: InspectionPointModel) => {\r\n this.onInspectionPointSelection(inspectionPoint, false); // Não faz fit\r\n });\r\n\r\n popout.operationsList.forEach( (operation: OperationModel) => {\r\n this.onOperationSelection(operation, false); // Não faz fit\r\n });\r\n\r\n popout.operationsIdList.forEach( (data) => {\r\n this.onOperationIdSelection(data, false); // Não faz fit\r\n });\r\n\r\n popout.eventsList.forEach( (event: EventModel) => {\r\n this.onEventSelection(event, false); // Não centraliza\r\n });\r\n\r\n // Apenas adiciona na lista\r\n popout.historicalTrackingList.forEach( (options) => {\r\n let historicalTracking = new HistoricalTrackingObject();\r\n historicalTracking.patrolTeam = options.patrolTeam;\r\n historicalTracking.operation = options.operation;\r\n historicalTracking.user = options.user;\r\n historicalTracking.sourceType = options.sourceType;\r\n historicalTracking.mobileObjectId = options.mobileObjectId;\r\n let id = this.getHistoricalTrackingId(options.mobileObjectId, options.sourceType, options.patrolTeam, options.operation, options.user?.id);\r\n this.historicalTrackingMap.set(id, historicalTracking);\r\n });\r\n\r\n // Agora processa os dados considerando as opções selecionadas\r\n popout.historicalTrackingOptionsList.forEach( (options) => {\r\n let id = this.getHistoricalTrackingId(options.mobileObjectId, options.sourceType, options.patrolTeam, options.operation, options.user?.id);\r\n let historicalTracking: HistoricalTrackingObject = this.historicalTrackingMap.get(id);\r\n historicalTracking.finishTime = options.finishTime;\r\n historicalTracking.startTime = options.startTime;\r\n historicalTracking.visible = options.visible;\r\n historicalTracking.timeVisible = options.timeVisible;\r\n historicalTracking.stateVisible = options.stateVisible;\r\n\r\n this.reloadSignalsForHistoricalTracking(historicalTracking);\r\n });\r\n\r\n this.openedSideList = popout.openedSideList;\r\n if (this.openedSideList) {\r\n this.sidenav.open();\r\n this.glOnResize();\r\n }\r\n }\r\n\r\n /**\r\n * ###################################################\r\n * Menu de Contexto\r\n * ###################################################\r\n */\r\n\r\n eventClicked(marker){\r\n // Cria um novo evento\r\n this.glOpenContainer(\"events-edit\", {id: null, options: {} });\r\n }\r\n\r\n verificationClicked(marker) { // Use \"any\" because of mobileObjectId and patrolTeamId\r\n let patrolTeam : PatrolTeamModel;\r\n const trackingObject = this.trackingObjectsMap.get(marker.mobileObjectId);\r\n if(trackingObject){\r\n patrolTeam = trackingObject.tracking.patrolTeam;\r\n }\r\n else {\r\n const teamTrackingObject = this.teamTrackingObjectsMap.get(marker.patrolTeamId);\r\n if (teamTrackingObject) {\r\n patrolTeam = teamTrackingObject.patrolTeam;\r\n }\r\n }\r\n\r\n // Mas antes seleciona qual o evento ficará associado a verificação\r\n\r\n let filter: EventFilterModel = new EventFilterModel();\r\n let dialogRef = this.dialog.open(EventListDialogComponent, {\r\n panelClass: 'sipd-modal',\r\n data: filter\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe( (events: EventModel[]) => {\r\n if(events && events.length == 1){\r\n // Cria uma nova verificação\r\n this.glOpenContainer('verifications-edit', {id: null, options: {event: events[0], patrolTeam: patrolTeam }});\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * ###################################################\r\n * Busca\r\n * ###################################################\r\n */\r\n\r\n updateListedCount(map: Map) {\r\n let count: number = 0;\r\n if (this.searchValue) {\r\n map.forEach (object => {\r\n if (object.listed) count++;\r\n });\r\n }\r\n else {\r\n count = map.size;\r\n }\r\n return count;\r\n }\r\n\r\n updateOperationListedCount() {\r\n this.operationsListedCount['PATROL'] = 0;\r\n this.operationsListedCount['EVENT_VERIFICATION'] = 0;\r\n this.operationObjectsMap.forEach(operationObject => {\r\n if (operationObject.listed) this.operationsListedCount[operationObject.operation.type]++;\r\n });\r\n }\r\n\r\n updateTrackingListedCount() {\r\n this.trackingsListedCount['MOBILE_APP'] = 0;\r\n this.trackingsListedCount['VEHICLE'] = 0;\r\n this.trackingObjectsMap.forEach (trackingObject => {\r\n if (trackingObject.listed) this.trackingsListedCount[trackingObject.tracking.signal.sourceType]++;\r\n });\r\n }\r\n\r\n updateTrackingListed(trackingObject: TrackingMapObject){\r\n // TODO scuri Não usamos trackingObject.popupContent porque o conteúdo é atualizado dinamicamente ao longo do tempo. O ideal é o basemap armazenar essa string.\r\n const str = TrackingModel.getPopupContent(trackingObject.tracking, true).toLowerCase();\r\n if (str.includes(this.searchValue)){\r\n trackingObject.listed = true;\r\n this.lastSearchResult = {object: trackingObject};\r\n }\r\n else {\r\n trackingObject.listed = false;\r\n }\r\n }\r\n\r\n updateTeamTrackingListedCount() {\r\n this.teamTrackingsListedCount = 0;\r\n this.teamTrackingObjectsMap.forEach (teamTrackingObject => {\r\n if (teamTrackingObject.listed) this.teamTrackingsListedCount++;\r\n });\r\n }\r\n\r\n updateTeamTrackingListed(teamTrackingObject: TeamTrackingMapObject){\r\n let str = '';\r\n teamTrackingObject.trackings.forEach(tracking => {\r\n // TODO scuri Não usamos trackingObject.popupContent porque o conteúdo é atualizado dinamicamente ao longo do tempo. O ideal é o basemap armazenar essa string.\r\n str += TrackingModel.getPopupContent(tracking, true).toLowerCase();\r\n });\r\n if (str.includes(this.searchValue)){\r\n teamTrackingObject.listed = true;\r\n this.lastSearchResult = {object: teamTrackingObject};\r\n }\r\n else {\r\n teamTrackingObject.listed = false;\r\n }\r\n }\r\n\r\n updateListedObject(object: AbstractMapObject) {\r\n if (!object.popupContent) { \r\n object.listed = false;\r\n return;\r\n }\r\n \r\n const str = object.popupContent.toLowerCase();\r\n if (str.includes(this.searchValue)){\r\n object.listed = true;\r\n this.lastSearchResult = {object: object};\r\n }\r\n else {\r\n object.listed = false;\r\n }\r\n }\r\n\r\n updateListedObjectsMap(map: Map) {\r\n let count: number = 0;\r\n map.forEach (object => {\r\n this.updateListedObject(object);\r\n if (object.listed) count++;\r\n });\r\n return count;\r\n }\r\n\r\n resetListedObjectsMap(map: Map) {\r\n let count: number = map.size;\r\n map.forEach (object => {\r\n object.listed = true;\r\n });\r\n return count;\r\n }\r\n\r\n resetListedObjects() {\r\n this.trackingsListedCount['MOBILE_APP'] = 0;\r\n this.trackingsListedCount['VEHICLE'] = 0;\r\n this.trackingObjectsMap.forEach (trackingObject => {\r\n trackingObject.listed = true;\r\n this.trackingsListedCount[trackingObject.tracking.signal.sourceType]++;\r\n });\r\n this.trackingsExpanded['MOBILE_APP'] = false;\r\n this.trackingsExpanded['VEHICLE'] = false;\r\n\r\n this.teamTrackingsListedCount = 0;\r\n this.teamTrackingsListedCount = 0;\r\n this.teamTrackingObjectsMap.forEach (teamTrackingObject => {\r\n teamTrackingObject.listed = true;\r\n this.teamTrackingsListedCount++;\r\n });\r\n this.teamTrackingsExpanded = false;\r\n this.teamTrackingsExpanded = false;\r\n\r\n this.operationsListedCount['PATROL'] = 0;\r\n this.operationsListedCount['EVENT_VERIFICATION'] = 0;\r\n this.operationObjectsMap.forEach (operationObject => {\r\n operationObject.listed = true;\r\n this.operationsListedCount[operationObject.operation.type]++;\r\n });\r\n this.operationsExpanded['PATROL'] = false;\r\n this.operationsExpanded['EVENT_VERIFICATION'] = false;\r\n\r\n this.alertsListedCount = this.resetListedObjectsMap(this.alertObjectsMap);\r\n this.pointsListedCount = this.resetListedObjectsMap(this.pointObjectsMap);\r\n this.eventsListedCount = this.resetListedObjectsMap(this.eventObjectsMap);\r\n this.historicalTrackingsListedCount = this.resetListedObjectsMap(this.historicalTrackingMap);\r\n this.alertsExpanded = false;\r\n this.pointsExpanded = false;\r\n this.eventsExpanded = false;\r\n this.historicalTrackingsExpanded = false;\r\n\r\n this.resetAllLayersSearch();\r\n this.layersExpanded = false;\r\n }\r\n\r\n resetAllLayersSearch() {\r\n this.resetSearchLayer(this.baseMap.DC_HISTORY_ID);\r\n this.resetSearchLayer(this.baseMap.BAND_ID);\r\n this.resetSearchLayer(this.baseMap.GASDUCT_ID);\r\n this.resetSearchLayer(this.baseMap.OILDUCT_ID);\r\n this.resetSearchLayer(this.baseMap.SIMF_ID);\r\n this.resetSearchLayer(this.baseMap.DELIVERY_POINT_ID);\r\n this.resetSearchLayer(this.baseMap.KILOMETER_MARK_ID);\r\n this.resetSearchLayer(this.baseMap.REFINARY_ID);\r\n this.resetSearchLayer(this.baseMap.TERMINAL_ID);\r\n this.resetSearchLayer(this.baseMap.VALVE_ID);\r\n this.resetSearchLayer(this.baseMap.OBSERVED_AREA_ID);\r\n this.layersSearchCount = 0;\r\n }\r\n\r\n layerReady(id: string){\r\n this.logger.debug(\"MapComponent.layerReady(\"+id+\")\");\r\n if (this.searchValue) {\r\n if (this.layersSearchMap.get(id)) { // Proteção para caso a busca seja feita antes de todos os layers terem sido carregados\r\n this.layersSearchCount -= this.layersSearchMap.get(id).length;\r\n\r\n this.searchLayer(id);\r\n\r\n this.layersSearchCount += this.layersSearchMap.get(id).length;\r\n this.layersExpanded = this.layersSearchCount > 0;\r\n }\r\n }\r\n else {\r\n this.resetSearchLayer(id);\r\n }\r\n\r\n if (id == this.baseMap.DC_HISTORY_ID) {\r\n let dcs = this.baseMap.layerData(this.baseMap.DC_HISTORY_ID) as DcModel[];\r\n dcs.forEach(dc => {\r\n if(!this.allDcYears.includes(dc.year)){\r\n this.allDcYears.push(dc.year);\r\n }\r\n });\r\n this.allDcYears.sort();\r\n }\r\n\r\n if (id == this.baseMap.BAND_ID) {\r\n this.allBands = this.baseMap.layerData(this.baseMap.BAND_ID) as BandModel[];\r\n this.layersFilterSelectState();\r\n }\r\n\r\n if (id == this.baseMap.OBSERVED_AREA_ID){\r\n this.allObservedAreas = this.baseMap.layerData(this.baseMap.OBSERVED_AREA_ID) as ObservedAreaModel[];\r\n this.filterObservedArea();\r\n if (this.lastSavedArea) {\r\n this.onObservedAreaSelection(this.lastSavedArea, false);\r\n this.lastSavedArea = null;\r\n }\r\n }\r\n }\r\n\r\n getLayerTooltip(id) {\r\n if (id==this.baseMap.KILOMETER_MARK_ID) {\r\n return \"\\nMarcos Quilométricos são listados apenas durante o Buscar.\\nE são visiveis apenas a partir de um determinado nível de zoom.\";\r\n }\r\n return \"\";\r\n }\r\n\r\n resetSearchLayer(id: string) {\r\n if (id == this.baseMap.KILOMETER_MARK_ID) {\r\n this.layersSearchMap.set(this.baseMap.KILOMETER_MARK_ID, []);\r\n return;\r\n }\r\n\r\n let geoData: GeoModel[] = this.baseMap.layerData(id);\r\n this.layersSearchMap.set(id, geoData);\r\n this.layersSearchExpanded[id] = false;\r\n }\r\n\r\n searchLayer(id: string): number {\r\n let searchResult: GeoModel[] = [];\r\n this.layersSearchMap.set(id, searchResult);\r\n\r\n // Algumas camadas não podem ser consultadas dependendo do perfil do usuário\r\n if (!this.baseMap.isLayerOptionToProfile(id)) return 0;\r\n\r\n // Como são muitos KmMarks, criamos a função sob demanda\r\n let getPopupContent;\r\n if (id == this.baseMap.KILOMETER_MARK_ID) {\r\n getPopupContent = function(feature) {\r\n const kmMark = feature.properties;\r\n return kmMark?.name;\r\n };\r\n }\r\n else {\r\n getPopupContent = this.baseMap.layerPopupContent(id);\r\n if (!getPopupContent) return 0; // Proteção para caso a busca seja feita antes de todos os layers terem sido carregados\r\n }\r\n\r\n let result_count = 0;\r\n\r\n let geoData: GeoModel[] = this.baseMap.layerData(id);\r\n geoData?.forEach(geo => {\r\n if (result_count > MapInfo.MAX_LAYER_RESULT){\r\n return;\r\n }\r\n const feature = {properties: geo};\r\n const str = getPopupContent(feature, true).toLowerCase();\r\n if (str.includes(this.searchValue)){\r\n searchResult.push(geo);\r\n this.lastSearchResult = {layer: geo};\r\n }\r\n });\r\n\r\n let count = this.layersSearchMap.get(id).length;\r\n this.layersSearchExpanded[id] = count > 0;\r\n\r\n return count;\r\n }\r\n\r\n layerCount(id: string) {\r\n let geoData: GeoModel[] = this.baseMap.layerData(id);\r\n return geoData.length;\r\n }\r\n\r\n showLastSearchResult(){\r\n if (this.lastSearchResult){\r\n if (this.lastSearchResult.layer) {\r\n this.onLayerSearchClick(this.lastSearchResult.layer);\r\n }\r\n else {\r\n if (this.lastSearchResult.object instanceof AlertMapObject){\r\n this.onAlertClick(this.lastSearchResult.object);\r\n }\r\n if (this.lastSearchResult.object instanceof TrackingMapObject){\r\n this.onTrackingClick(this.lastSearchResult.object);\r\n }\r\n if (this.lastSearchResult.object instanceof EventMapObject){\r\n this.onEventClick(this.lastSearchResult.object);\r\n }\r\n if (this.lastSearchResult.object instanceof OperationMapObject){\r\n this.onOperationClick(this.lastSearchResult.object);\r\n }\r\n if (this.lastSearchResult.object instanceof HistoricalTrackingObject){\r\n this.onHistoricalTrackingClick(this.lastSearchResult.object);\r\n }\r\n if (this.lastSearchResult.object instanceof InspectionPointMapObject){\r\n this.onPointClick(this.lastSearchResult.object);\r\n }\r\n }\r\n }\r\n }\r\n\r\n onLayerSearchClick(geo){\r\n this.onLayerSelection(geo);\r\n }\r\n\r\n searchMapObjects(){\r\n let searchCount: number = 0;\r\n\r\n this.trackingsListedCount['MOBILE_APP'] = 0;\r\n this.trackingsListedCount['VEHICLE'] = 0;\r\n this.trackingObjectsMap.forEach(trackingObject => {\r\n this.updateTrackingListed(trackingObject);\r\n if (trackingObject.listed) this.trackingsListedCount[trackingObject.tracking.signal.sourceType]++;\r\n });\r\n searchCount += this.trackingsListedCount['MOBILE_APP'];\r\n searchCount += this.trackingsListedCount['VEHICLE'];\r\n this.trackingsExpanded['MOBILE_APP'] = this.trackingsListedCount['MOBILE_APP'] > 0;\r\n this.trackingsExpanded['VEHICLE'] = this.trackingsListedCount['VEHICLE'] > 0;\r\n\r\n this.teamTrackingsListedCount = 0;\r\n this.teamTrackingsListedCount = 0;\r\n this.teamTrackingObjectsMap.forEach(teamTrackingObject => {\r\n this.updateTeamTrackingListed(teamTrackingObject);\r\n if (teamTrackingObject.listed) this.teamTrackingsListedCount++;\r\n });\r\n searchCount += this.teamTrackingsListedCount;\r\n searchCount += this.teamTrackingsListedCount;\r\n this.teamTrackingsExpanded = this.teamTrackingsListedCount > 0;\r\n this.teamTrackingsExpanded = this.teamTrackingsListedCount > 0;\r\n\r\n this.operationsListedCount['PATROL'] = 0;\r\n this.operationsListedCount['EVENT_VERIFICATION'] = 0;\r\n this.operationObjectsMap.forEach(operationObject => {\r\n this.updateListedObject(operationObject);\r\n if (operationObject.listed) this.operationsListedCount[operationObject.operation.type]++;\r\n });\r\n searchCount += this.operationsListedCount['PATROL'];\r\n searchCount += this.operationsListedCount['EVENT_VERIFICATION'];\r\n this.operationsExpanded['PATROL'] = this.operationsListedCount['PATROL'] > 0;\r\n this.operationsExpanded['EVENT_VERIFICATION'] = this.operationsListedCount['EVENT_VERIFICATION'] > 0;\r\n\r\n searchCount += this.alertsListedCount = this.updateListedObjectsMap(this.alertObjectsMap);\r\n searchCount += this.pointsListedCount = this.updateListedObjectsMap(this.pointObjectsMap);\r\n searchCount += this.eventsListedCount = this.updateListedObjectsMap(this.eventObjectsMap);\r\n searchCount += this.historicalTrackingsListedCount = this.updateListedObjectsMap(this.historicalTrackingMap);\r\n this.alertsExpanded = this.alertsListedCount > 0;\r\n this.pointsExpanded = this.pointsListedCount > 0;\r\n this.eventsExpanded = this.eventsListedCount > 0;\r\n this.historicalTrackingsExpanded = this.historicalTrackingsListedCount > 0;\r\n\r\n this.layersSearchCount = 0;\r\n this.layersSearchCount += this.searchLayer(this.baseMap.DC_HISTORY_ID);\r\n this.layersSearchCount += this.searchLayer(this.baseMap.BAND_ID);\r\n this.layersSearchCount += this.searchLayer(this.baseMap.GASDUCT_ID);\r\n this.layersSearchCount += this.searchLayer(this.baseMap.OILDUCT_ID);\r\n this.layersSearchCount += this.searchLayer(this.baseMap.SIMF_ID);\r\n this.layersSearchCount += this.searchLayer(this.baseMap.DELIVERY_POINT_ID);\r\n this.layersSearchCount += this.searchLayer(this.baseMap.KILOMETER_MARK_ID);\r\n this.layersSearchCount += this.searchLayer(this.baseMap.REFINARY_ID);\r\n this.layersSearchCount += this.searchLayer(this.baseMap.TERMINAL_ID);\r\n this.layersSearchCount += this.searchLayer(this.baseMap.VALVE_ID);\r\n this.layersSearchCount += this.searchLayer(this.baseMap.OBSERVED_AREA_ID);\r\n this.layersExpanded = this.layersSearchCount > 0;\r\n \r\n searchCount += this.layersSearchCount;\r\n\r\n if (searchCount == 1) this.showLastSearchResult();\r\n }\r\n\r\n layerSearchListOrder = (a: KeyValue, b: KeyValue): number => {\r\n return a.value.name.toLowerCase().localeCompare(b.value.name.toLowerCase());\r\n }\r\n\r\n keyupSearch() {\r\n // A cada tecla o timer é reiniciado\r\n if (this.searchTimeOut) {clearTimeout(this.searchTimeOut); this.searchTimeOut = null;}\r\n\r\n // A busca só acontece quando o timer é acionado\r\n this.searchTimeOut = setTimeout(() => {\r\n if (this.searchValue) {\r\n this.searchValue = this.searchValue.trim().toLowerCase();\r\n\r\n if (this.searchValue.length == 0) {\r\n this.searchValue = undefined;\r\n this.resetListedObjects();\r\n }\r\n else {\r\n this.searchMapObjects();\r\n }\r\n }\r\n\r\n this.searchTimeOut = null;\r\n }, 2000);\r\n }\r\n\r\n onRemoveSearch(){\r\n this.searchValue = undefined;\r\n this.resetListedObjects();\r\n if (this.searchTimeOut) {clearTimeout(this.searchTimeOut); this.searchTimeOut = null;}\r\n }\r\n}\r\n","import DateUtils from '../service/util/date-utils';\r\nimport FieldUtils from '../service/util/field-utils';\r\nimport {EntityModel} from './entity.model';\r\nimport { AlertPriorityDescription, AlertTypeDescription, OperationTypeDescription, SimfAlertTypeDescription, SourceType } from './enums.enum';\r\nimport {PatrolTeamModel} from './patrolteam.model';\r\n\r\nexport class AlertModel extends EntityModel {\r\n identifier: string;\r\n acknowledged: boolean;\r\n acknowledgmentAuthor: string;\r\n acknowledgmentDate: number;\r\n alertType: string;\r\n alertPriority: string;\r\n description: string;\r\n observation: string;\r\n sourceType: string;\r\n location: GeoJSON.Point; // inicialização do GeoPoint para alertas está errada, está sendo feito (x=latitude e y=longitude)\r\n timestamp: number;\r\n patrolTeam: PatrolTeamModel;\r\n operationId: string;\r\n operationIdentifier: string;\r\n operationType: string;\r\n eventIdentifier: string;\r\n inspectionId: string;\r\n userId: string;\r\n userName: string;\r\n band: string;\r\n duct: string;\r\n km: string;\r\n simfAlertId: string;\r\n simfAlertType: string;\r\n observedArea: string;\r\n locationTimestamp: number;\r\n endChannel: number;\r\n scalePoint: string;\r\n cpsNumber: number;\r\n createdAt: number;\r\n \r\n simf: any;\r\n\r\n constructor(){\r\n super();\r\n this.acknowledged = false;\r\n }\r\n\r\n public static getPopupContent(alert: AlertModel, search: boolean = false){\r\n const patrolTeam: PatrolTeamModel = alert.patrolTeam;\r\n\r\n return `
Alerta ${ alert.sourceType == SourceType.MOBILE_APP ? 'App Móvel': 'SIMF'}
\r\n ${alert.identifier? `
ID: ${ alert.identifier }
` : ''}\r\n
Origem: ${ alert.sourceType == SourceType.MOBILE_APP ? AlertTypeDescription[alert.alertType]: (SimfAlertTypeDescription[alert.simfAlertType]? SimfAlertTypeDescription[alert.simfAlertType]: alert.simfAlertType) }
\r\n
Reconhecido: ${ alert.acknowledged? 'Sim': 'Não' }
\r\n
Nível: ${ AlertPriorityDescription[alert.alertPriority] }
\r\n ${ alert.operationType? `
Operação: ${ OperationTypeDescription[alert.operationType] }
` : '' }\r\n ${ alert.eventIdentifier || alert.operationIdentifier ? `
ID: ${ alert.eventIdentifier? alert.eventIdentifier: alert.operationIdentifier}
` : '' }\r\n ${ alert.sourceType == SourceType.MOBILE_APP ? PatrolTeamModel.getPopupContent(patrolTeam, search): '' }\r\n ${ alert.sourceType == SourceType.MOBILE_APP ? '
Descrição: ' + alert?.description: '' }\r\n ${ alert.sourceType == SourceType.SIMF ? '
Dados SIMF:
' + this.getSimfInfo(alert, \"
\") + '
': '' }\r\n
Lat, Long: ${!search? FieldUtils.coordToString(alert.location.coordinates[0]): ''},${!search? FieldUtils.coordToString(alert.location.coordinates[1]): ''}
\r\n
Data/Hora da localização: ${alert.locationTimestamp ? DateUtils.timestampToStringInMinutes(alert.locationTimestamp) : \"Não\"}
\r\n
Data/Hora: ${DateUtils.timestampToStringInMinutes(alert.timestamp)}
\r\n `;\r\n }\r\n\r\n public static getSimfInfo(alert, linebreak): string{\r\n if (!alert)\r\n return '';\r\n\r\n if (!alert.simf)\r\n return '';\r\n\r\n let info = \"\" +\r\n \"Id: \" + alert.simf.alertId + linebreak +\r\n \"Início: \" + DateUtils.timestampToStringInMinutes(alert.simf.startTime) + linebreak +\r\n \"Fim: \" + DateUtils.timestampToStringInMinutes(alert.simf.endTime) + linebreak +\r\n \"OPS: \" + alert.simf.cpsNumber + linebreak +\r\n \"Canal Inicial: \" + alert.simf.startChannel + linebreak +\r\n \"Canal Final: \" + alert.simf.endChannel + linebreak +\r\n \"Distância Ótica Inicial (metros): \" + alert.simf.startOpticalDistanceMetres + linebreak +\r\n \"Distância Ótica Final (metros): \" + alert.simf.endOpticalDistanceMetres + linebreak +\r\n \"Latitude Inicial: \" + FieldUtils.coordToString(alert.simf.startLatitude) + linebreak +\r\n \"Longitude Inicial: \" + FieldUtils.coordToString(alert.simf.startLongitude) + linebreak +\r\n ((alert.simf.endLatitude && alert.simf.endLatitude != 0)? \"Latitude Final: \" + FieldUtils.coordToString(alert.simf.endLatitude) + linebreak: \"\") +\r\n ((alert.simf.endLongitude && alert.simf.endLongitude != 0)? \"Longitude Final: \" + FieldUtils.coordToString(alert.simf.endLongitude) + linebreak: \"\") +\r\n \"Kpoint: \" + alert.simf.scalePoint + linebreak +\r\n ((alert.simf.zoneName && alert.simf.zoneName.lenght > 0)? \"Zona: \" + alert.simf.zoneName + linebreak: \"\") +\r\n \"Origem: \" + (SimfAlertTypeDescription[alert.simf.alertType]? SimfAlertTypeDescription[alert.simf.alertType]: alert.simf.alertType) + linebreak +\r\n \"Nível: \" + AlertPriorityDescription[alert.simf.alertLevel.toUpperCase()] + linebreak +\r\n \"Velocidade: \" + alert.simf.speed + linebreak +\r\n (alert.simf.externalType? \"Tipo Externo: \" + alert.simf.externalType + linebreak: '') +\r\n (alert.simf.externalId? \"Id Externo: \" + alert.simf.externalId: '');\r\n\r\n return info;\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { AfterViewInit, ChangeDetectorRef, Component, Inject, Input, NgZone, OnInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { first } from 'rxjs/operators';\r\nimport { OperationAnswerModel } from 'src/app/model/operation.answer.model';\r\nimport { ListComponent } from 'src/app/pages/list-component';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { OperationFormAnswersService } from 'src/app/service/model/operation.form.answers.service';\r\nimport { VerificationService } from 'src/app/service/model/verification.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EvidenceNumber } from '../../model/enums.enum';\r\n\r\n@Component({\r\n selector: 'app-answer-list',\r\n templateUrl: './answer-list.component.html',\r\n styleUrls: ['./answer-list.component.scss']\r\n})\r\nexport class AnswerListComponent extends ListComponent implements OnInit {\r\n\r\n operationAnswersDisplayedColumns: string[];\r\n\r\n _operationId : string;\r\n _operationType : string;\r\n _readonly : boolean;\r\n @Input() \r\n set operationId(id : string){\r\n this._operationId = id;\r\n this.loadRecordsFromServer();\r\n }\r\n get operationId(): string {\r\n return this._operationId;\r\n }\r\n\r\n @Input()\r\n set editReadOnly(readonly: boolean){\r\n this._readonly = readonly;\r\n }\r\n\r\n get editReadOnly() : boolean{\r\n return this._readonly;\r\n }\r\n\r\n @Input()\r\n set operationType(type: string){\r\n this._operationType = type;\r\n }\r\n\r\n get operationType() : string{\r\n return this._operationType;\r\n }\r\n\r\n evidenceNumber = EvidenceNumber;\r\n\r\n constructor(public logger: NGXLogger,\r\n public authorizationService: AuthorizationService,\r\n protected operationFormAnswersService: OperationFormAnswersService,\r\n protected dialog: MatDialog,\r\n protected toastr: ToastrService,\r\n protected storageService: StorageService,\r\n protected changeDetector: ChangeDetectorRef,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container,\r\n protected http: HttpClient) {\r\n super(logger, authorizationService, operationFormAnswersService, dialog, toastr, 'operationFormAnswers',\r\n environment.VERIFICATION_GROUP_LABEL, environment.VERIFICATION_TITLE_LABEL, //TODO lbarros rever\r\n environment.VERIFICATION_MODEL_LABEL, storageService, changeDetector,\r\n goldenLayout, container);\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit(); \r\n this.loadRecordsFromServer();\r\n this.operationAnswersDisplayedColumns = ['answerIndex', 'inspectionPointIndex', 'band', 'km',\r\n 'date', 'time', 'latLong', 'professional', 'inspectionType', 'formName', 'question',\r\n 'answer', 'comments', 'evidence1', 'evidence2', 'evidence3', 'evidence4', 'evidence5' ];\r\n }\r\n\r\n loadRecordsFromServer() {\r\n\r\n if(this.operationId == \"[NOVA]\") // se é uma operação nova não precisa chamar ao endpoint\r\n return;\r\n \r\n this.loadingOn();\r\n this.dataSource = new MatTableDataSource([]);\r\n\r\n let params = new HttpParams();\r\n params = params.set('id', this.operationId); \r\n\r\n this.operationFormAnswersService.loadAnswersFromRestApi(params, this.operationType).subscribe( (result) => {\r\n if(result){\r\n this.updateDataSource(result);\r\n this.updateEvidenceFile(result); \r\n }\r\n \r\n this.loadingOff();\r\n }, error => {\r\n this.logger.error(error);\r\n this.loadingOff();\r\n });\r\n }\r\n\r\n updateEvidenceFile(answers : OperationAnswerModel[]){\r\n for( let i=0 ; i < answers.length ; i++){\r\n let answer = answers[i];\r\n if(answer.evidence1)\r\n this.getEvidenceFile(answer.evidence1 , answer, EvidenceNumber.ONE);\r\n\r\n if(answer.evidence2)\r\n this.getEvidenceFile(answer.evidence2 , answer, EvidenceNumber.TWO);\r\n \r\n if(answer.evidence3)\r\n this.getEvidenceFile(answer.evidence3 , answer, EvidenceNumber.THREE);\r\n \r\n if(answer.evidence4)\r\n this.getEvidenceFile(answer.evidence4 , answer, EvidenceNumber.FOUR);\r\n \r\n if(answer.evidence5) \r\n this.getEvidenceFile(answer.evidence5 , answer, EvidenceNumber.FIVE); \r\n }\r\n }\r\n\r\n getEvidenceFile(idFile : string , answer : OperationAnswerModel, evidenceNumber : EvidenceNumber){\r\n \r\n this.operationFormAnswersService.loadFileById(idFile, this.operationType).pipe(first()).subscribe((file) =>{\r\n\r\n if(file.body.size === 0) return;\r\n\r\n const entity: any = this.dataSource.data.find(entity => entity.id === answer.id);\r\n if(!entity) return;\r\n\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file.body);\r\n \r\n\r\n switch(evidenceNumber){\r\n case EvidenceNumber.ONE:\r\n reader.onload = (_event) => { \r\n entity.evidenceFileUrl1 = reader.result;\r\n }\r\n break;\r\n case EvidenceNumber.TWO:\r\n reader.onload = (_event) => {\r\n entity.evidenceFileUrl2 = reader.result;\r\n }\r\n break;\r\n case EvidenceNumber.THREE:\r\n reader.onload = (_event) => {\r\n entity.evidenceFileUrl3 = reader.result;\r\n }\r\n break;\r\n case EvidenceNumber.FOUR:\r\n reader.onload = (_event) => {\r\n entity.evidenceFileUrl4 = reader.result;\r\n }\r\n break;\r\n case EvidenceNumber.FIVE:\r\n reader.onload = (_event) => {\r\n entity.evidenceFileUrl5 = reader.result;\r\n }\r\n break;\r\n } \r\n }, (error : any) =>this.logger.error(error));\r\n }\r\n\r\n protected getDefaultSortColumn(): string {\r\n return \"answerIndex\";\r\n }\r\n\r\n protected getDefaultSortDirection(): 'asc' | 'desc' {\r\n return 'asc';\r\n }\r\n \r\n viewFile(fileData){ \r\n let image = new Image(); \r\n image.src = fileData;\r\n let w = window.open(\"\");\r\n w.document.write(image.outerHTML);\r\n }\r\n\r\n}\r\n","\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n search\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
Índice {{element?.answerIndex}} Ponto {{element?.inspectionPointIndex}} Faixa {{element?.band}} KM {{element?.km}} Data {{ element?.timestamp | date:'dd/MM/yyyy' }} Hora {{ element?.timestamp | date:'HH:mm' }} Lat, Long {{element?.location?.latitude + \", \" + element?.location?.longitude}} Profissional {{element?.professional}} Tipo de Inspeção {{element?.inspectionType}} Nome do Formulário {{element?.formName}} Pergunta {{element?.question}} Resposta {{element?.answer}} Comentários {{element?.comments}} Evidência 1 \r\n \r\n Evidência 2 \r\n \r\n Evidência 3 \r\n \r\n Evidência 4 \r\n \r\n Evidência 5 \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n","import { Component, OnInit, Inject, OnDestroy } from '@angular/core';\r\nimport { LatLongMask, LatLongPattern } from '../../../common/constants';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\nimport FieldUtils from 'src/app/service/util/field-utils';\r\nimport { InspectionModel } from '../../../model/inspection.model';\r\nimport { LocationModel } from 'src/app/model/location.model';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { LoadingListService } from \"src/app/service/loading/loading-list.service\";\r\n\r\n@Component({\r\n selector: 'app-insert-point-dialog',\r\n templateUrl: './insert-point-dialog.component.html',\r\n styleUrls: ['./insert-point-dialog.component.scss']\r\n})\r\nexport class InsertPointDialogComponent implements OnInit, OnDestroy {\r\n\r\n band: string;\r\n km: string;\r\n latlong: string;\r\n city: string;\r\n state: string;\r\n activities: string;\r\n\r\n editing: boolean;\r\n\r\n latLongPattern = LatLongPattern;\r\n latLongMask = LatLongMask;\r\n\r\n oldLatlong: string;\r\n \r\n loadingListService = new LoadingListService();\r\n\r\n constructor(private logger: NGXLogger,\r\n public singleDataCacheService: SingleDataCacheService,\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public inspection: InspectionModel) { }\r\n\r\n ngOnInit(): void { \r\n this.loadFormOptionsData();\r\n\r\n if (this.inspection) {\r\n this.editing = true;\r\n this.band = this.inspection.band;\r\n this.km = this.inspection.km;\r\n this.oldLatlong = this.latlong = this.inspection.location.latitude + \", \" + this.inspection.location.longitude;\r\n this.city = this.inspection.city;\r\n this.state = this.inspection.state;\r\n if (this.inspection.activities) {\r\n for (let i=0; i s.trim());\r\n // Removes from the activity array any activity with a empty descriptor\r\n this.inspection.activities = this.inspection.activities.filter(e => e);\r\n }\r\n else\r\n this.inspection.activities = [];\r\n this.inspection.name = this.band + ' ' + this.km;\r\n this.dialogRef.close(this.inspection);\r\n }\r\n\r\n onPasteLatLong(event: ClipboardEvent){\r\n let pastedValue = FieldUtils.pasteLatLong(event, this.latlong);\r\n if (pastedValue != null) {\r\n this.latlong = pastedValue;\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","
\r\n {{ getTitle() }}\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n KM\r\n \r\n Campo Obrigatório\r\n Formato inválido para o KM.\r\n \r\n\r\n \r\n Lat, Long\r\n \r\n Campo Obrigatório\r\n Formato inválido para o Lat, Long.\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n Atividades\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n \r\n \r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { forkJoin, Observable } from 'rxjs';\r\nimport { CommonModel } from 'src/app/model/common.model';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { EntityService } from './entity.service';\r\nimport { EventStatus, OperationStatus, OperationType } from 'src/app/model/enums.enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ArchiveService extends EntityService{\r\n\r\n constructor(logger: NGXLogger,\r\n http: HttpClient,\r\n apiUrl: string) {\r\n super(logger, http, apiUrl);\r\n }\r\n\r\n /**\r\n * Método que chama a API para arquivamento dos models\r\n * @param records\r\n * @returns\r\n */\r\n public archive(records: EntityModel[]){\r\n const observables: Observable[] = [];\r\n\r\n records.forEach( (record: CommonModel) => {\r\n if(record.archived == null){ // Se o model ainda não tem a flag ARCHIVED\r\n record.archived = true;\r\n }else{\r\n record.archived = !record.archived;\r\n }\r\n\r\n //se o flag \"archived\" foi mudado para true, modifica o status da operação\r\n if(record.archived){\r\n this.changeOperationStatus(record);\r\n }\r\n\r\n observables.push(this.editRecord(record));\r\n });\r\n\r\n return forkJoin(observables);\r\n }\r\n \r\n changeOperationStatus(record){\r\n if(record?.type && (record.type === OperationType.PATROL || record.type === OperationType.EVENT_VERIFICATION)){ // ronda ou verificação\r\n record.status = OperationStatus.FINISHED;\r\n } else{ // Evento\r\n record.status = EventStatus.FINALIZED;\r\n }\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { EditComponent } from 'src/app/pages/edit-component';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { PointService } from '../../../../service/model/point.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport * as moment from 'moment';\r\n\r\nimport {PointSourceValues,\r\n AccessArrangementValues,\r\n AccessTypeValues,\r\n BlockTypeValues,\r\n RoadConditionValues,\r\n NumberOfOutputsValues,\r\n TrafficVolumeValues,\r\n TrafficPossibilityValues,\r\n ResidencesValues,\r\n VideoMonitoringValues,\r\n AreaUnderControlValues,\r\n VulnerabilityViewValues,\r\n CategoryValues,\r\n AccessCriticalityValues,\r\n LatLongPattern,\r\n LatLongMask} from '../../../../common/constants';\r\nimport{InspectionPointModel} from 'src/app/model/inspection.point.model';\r\nimport { PointStatusDescription, PointStatus, InspectionBooleanDescription, Permission} from 'src/app/model/enums.enum';\r\nimport { UserType } from '../../../../model/enums.enum';\r\nimport { MAP_PAGE } from 'src/app/common/constants';\r\nimport FieldUtils from '../../../../service/util/field-utils';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\n\r\n@Component({\r\n selector: 'app-point-edit',\r\n templateUrl: './point-edit.component.html',\r\n styleUrls: ['./point-edit.component.scss']\r\n})\r\nexport class PointEditComponent extends EditComponent implements OnInit {\r\n\r\n startDate: moment.Moment;\r\n\r\n pointSourceValues = PointSourceValues;\r\n accessArrangementValues = AccessArrangementValues;\r\n accessTypeValues = AccessTypeValues;\r\n blockTypeValues = BlockTypeValues;\r\n roadConditionValues = RoadConditionValues;\r\n numberOfOutputsValues = NumberOfOutputsValues;\r\n trafficVolumeValues = TrafficVolumeValues;\r\n trafficPossibilityValues = TrafficPossibilityValues;\r\n residencesValues = ResidencesValues;\r\n videoMonitoringValues = VideoMonitoringValues;\r\n areaUnderControlValues = AreaUnderControlValues;\r\n vulnerabilityViewValues = VulnerabilityViewValues;\r\n categoryValues = CategoryValues;\r\n accessCriticalityValues = AccessCriticalityValues;\r\n\r\n pointStatus = PointStatus;\r\n pointStatusDescription = PointStatusDescription;\r\n\r\n inspectionBooleanDescription = InspectionBooleanDescription;\r\n\r\n latLongPattern = LatLongPattern;\r\n latLongMask = LatLongMask;\r\n\r\n date: moment.Moment;\r\n\r\n constructor(logger: NGXLogger,\r\n public pointService: PointService,\r\n public entityCacheService: EntityCacheService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n dialog: MatDialog,\r\n protected http: HttpClient,\r\n toastr: ToastrService,\r\n protected storageService: StorageService,\r\n authorizationService: AuthorizationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, pointService, dialog, environment.POINT_MODEL_LABEL, environment.POINT_TITLE_LABEL, storageService,\r\n 'points-edit', environment.POINT_GROUP_LABEL, toastr, authorizationService, goldenLayout, container);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initializeFields(); // Precisa vir antes da super.ngOnInit\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n createData(options?) {\r\n this.logger.debug('PointEditComponent.createData()');\r\n this.model = new InspectionPointModel();\r\n this.view = {};\r\n\r\n this.initializeFields();\r\n\r\n const startTimestamp = moment();\r\n this.view['creationDate'] = startTimestamp.format('DD/MM/yyyy HH:mm');\r\n this.view['source'] = 'Web';\r\n\r\n this.currentUserAsField('author');\r\n\r\n this.view['identifier'] = '[NOVO]';\r\n\r\n if (this.authorizationService.getLoggedUserType() === UserType.COORDINATOR_CCPD || this.authorizationService.getLoggedUserType() === UserType.COORDINATOR_OPPD){\r\n this.view['status'] = PointStatus.APPROVED;\r\n }\r\n else {\r\n this.view['status'] = PointStatus.IN_ANALYSIS;\r\n }\r\n }\r\n\r\n mapModelToView() {\r\n super.mapModelToView();\r\n\r\n this.logger.debug('PointEditComponent.mapModelToView()');\r\n\r\n if (this.model['creationDate']) {\r\n const createdTimestamp = moment(this.model['creationDate']);\r\n this.view['creationDate'] = createdTimestamp.format('DD/MM/yyyy HH:mm');\r\n }\r\n\r\n if (!this.model['source'])\r\n this.view['source'] = 'Web';\r\n\r\n if (!this.model['identifier'])\r\n this.view['identifier'] = \"[NOVO]\";\r\n\r\n if (this.model['km'] || this.model['km'] == 0) {\r\n this.view['km'] = FieldUtils.kmIntToString(this.model['km']);\r\n }\r\n\r\n if (this.copy){\r\n this.currentUserAsField('author');\r\n }\r\n\r\n this.glUpdateTabTitle(this.modelName + ': ' + this.view['identifier']);\r\n }\r\n\r\n mapViewToModel() {\r\n if (this.isSaving && this.isCreating())\r\n this.view['identifier'] = null;\r\n\r\n super.mapViewToModel();\r\n\r\n if (this.view['creationDate']) {\r\n const splitted = this.view['creationDate'].split(\" \", 2);\r\n const createDateMiliseconds = DateUtils.stringDateTimeToTimestamp(splitted[0], splitted[1], true);\r\n this.model['creationDate'] = createDateMiliseconds;\r\n }\r\n\r\n if (this.view['km']) {\r\n this.model['km'] = FieldUtils.kmStringToInt(this.view['km']);\r\n }\r\n }\r\n\r\n onEnableEditClick() {\r\n if (this.canEdit()) {\r\n this.readOnly = false;\r\n \r\n if (!this.view['author']) {\r\n this.currentUserAsField('author');\r\n }\r\n }\r\n }\r\n\r\n applyDate(dateString: string) {\r\n this.startDate = moment(dateString, \"DD/MM/yyyy\");\r\n }\r\n\r\n dateChanged() {\r\n this.view['creationDate'] = this.startDate.format(\"DD/MM/yyyy\");\r\n }\r\n\r\n loadFormOptionsData(){\r\n this.entityCacheService.loadUsers(this.loadingListService);\r\n\r\n const metadatas: string[] = [\r\n \"State\",\r\n \"Band\",\r\n \"PipeStretch\",\r\n \"City\"];\r\n\r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n\r\n initializeFields(){\r\n // Inicializando campos\r\n this.view['creationDate'] = '';\r\n }\r\n\r\n isRequiredFieldFilled(): boolean {\r\n if (!this.view['band'] ||\r\n !this.view['km'] ||\r\n !this.view['latLong']) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['band']) names.push('Faixa');\r\n if (!this.view['km']) names.push('KM');\r\n if (!this.view['latLong']) names.push('Lat, Long');\r\n return names;\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n this.model['creationDate'] = moment().valueOf();\r\n this.model['source'] = 'Web';\r\n\r\n this.model['identifier'] = null;\r\n this.model['approve'] = null;\r\n\r\n if (this.authorizationService.getLoggedUserType() === UserType.COORDINATOR_CCPD || this.authorizationService.getLoggedUserType() === UserType.COORDINATOR_OPPD){\r\n this.model['status'] = PointStatus.APPROVED;\r\n }\r\n else {\r\n this.model['status'] = PointStatus.IN_ANALYSIS;\r\n }\r\n }\r\n\r\n isStatusButtonHiddenForUser(): boolean {\r\n return !this.authorizationService.isPointStatusEditingAllowed();\r\n }\r\n\r\n onStatusChange(status) {\r\n this.view['status'] = status;\r\n if (status == PointStatus.APPROVED) {\r\n this.currentUserAsField('approve');\r\n }\r\n else {\r\n this.view['approve'] = null;\r\n }\r\n }\r\n \r\n replaceRunTimeData(data){\r\n // Substitui mudanças dinamicas, que independem da edição do usuário\r\n this.replaceModelViewDateData(data, 'creationDate');\r\n }\r\n\r\n canEdit(): boolean {\r\n if (!this.model) return false;\r\n\r\n if (!this.authorizationService.userHasPermission(Permission.CREATE_EDIT_POINT)){\r\n return false\r\n }\r\n\r\n return true;\r\n }\r\n \r\n onLocationClick(){\r\n this.glOpenContainer(MAP_PAGE, {inspectionPoint: this.view});\r\n }\r\n\r\n hasLocation(){\r\n if (this.view && this.view['latLong'])\r\n return true;\r\n return false;\r\n }\r\n\r\n onPasteLatLong(event: ClipboardEvent){\r\n let pastedValue = FieldUtils.pasteLatLong(event, this.view['latLong']);\r\n if (pastedValue != null) {\r\n this.view['latLong'] = pastedValue;\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","
\r\n\r\n
\r\n {{modelName + (isCreating()? ': [NOVO]': ':'+ view['identifier'])}}\r\n
\r\n {{ pointStatusDescription[view['status']] }} \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n \r\n \r\n Origem\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Data/Hora (criação)\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n KM\r\n \r\n Campo Obrigatório\r\n Formato inválido para o KM.\r\n \r\n\r\n \r\n Lat, Long\r\n \r\n Campo Obrigatório\r\n Formato inválido para o Lat, Long.\r\n \r\n\r\n \r\n Bairro\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Paralelo:\r\n
\r\n
\r\n \r\n metros\r\n \r\n Entre apenas com números. \r\n \r\n\r\n \r\n do KM\r\n \r\n Entre apenas com números. \r\n \r\n\r\n \r\n ao KM\r\n \r\n Entre apenas com números.\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n Referência\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n \r\n Nome da Via\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Rodovia Asfaltada mais Próxima\r\n \r\n \r\n\r\n \r\n \r\n Distância a essa rodovia (em metros)\r\n \r\n Entre apenas com números.\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n Abandonadas\r\n \r\n Entre apenas com números.\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n Motivo da Suspeita\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n Pesos\r\n \r\n Entre apenas com números.\r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { LOCAL_USER_KEY, LOGIN_AS_USER_KEY, POPOUT_DATA_KEY, PROFILE_USER_KEY, SPECIFICS_PLACEMENTS } from '../common/constants';\r\nimport { ProfileModel } from '../model/profile.model';\r\nimport { UserModel } from '../model/user.model';\r\n\r\n/**\r\n * Serviço responsável por guardar os dados do usuário logado e o estado da lista de objetos móveis da\r\n * tela de rastreamento na sessão do usuário.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n })\r\nexport class StorageService {\r\n\r\n private localUser: UserModel = null;\r\n private profileUser: ProfileModel = null;\r\n private loginAsUser: UserModel = null; \r\n private specificPlacementsId : string[] = [];\r\n\r\n getLocalUser(): UserModel {\r\n if (!this.localUser) this.localUser = this.get(LOCAL_USER_KEY);\r\n return this.localUser;\r\n }\r\n\r\n setLocalUser(loggedUser: UserModel) {\r\n this.localUser = loggedUser;\r\n this.set(LOCAL_USER_KEY, loggedUser);\r\n }\r\n\r\n getLoginAsUser(): UserModel {\r\n if (!this.loginAsUser) this.loginAsUser = this.get(LOGIN_AS_USER_KEY);\r\n return this.loginAsUser;\r\n }\r\n\r\n setLoginAsUser(loggedUser: UserModel) {\r\n this.loginAsUser = loggedUser;\r\n this.set(LOGIN_AS_USER_KEY, loggedUser);\r\n }\r\n\r\n getLocalProfile(): ProfileModel{\r\n if(!this.profileUser) this.profileUser = this.get(PROFILE_USER_KEY);\r\n return this.profileUser; \r\n }\r\n \r\n setLocalProfile(profileUser: ProfileModel) {\r\n this.set(PROFILE_USER_KEY, profileUser);\r\n }\r\n\r\n getSpecificPlacementIds(): string[] {\r\n this.specificPlacementsId = this.get(SPECIFICS_PLACEMENTS);\r\n if (!this.specificPlacementsId) return []; // Lista vazia quer dizer que tem acesso a todas as lotações\r\n return this.specificPlacementsId; \r\n }\r\n\r\n setSpecificPlacementIds(specificPlacementsId : string[]){\r\n this.set(SPECIFICS_PLACEMENTS, specificPlacementsId);\r\n }\r\n\r\n /**\r\n * Atribui um valor `value` à uma entrada `key` do `localStorage`.\r\n *\r\n * @param key A chave, do tipo `string`.\r\n * @param value O valor, do tipo `any`. Quando `!= null` o valor é serialiado\r\n * em JSON e armazenado. Quando `null` remove a entrada de chave `key` do\r\n * `localStorage`.\r\n */\r\n set(key: string, data: any): void {\r\n if(data){\r\n localStorage.setItem(key, JSON.stringify(data))\r\n }else{\r\n localStorage.removeItem(key);\r\n }\r\n }\r\n\r\n /**\r\n * Obtém o valor de chave `key` do `localStorage`.\r\n *\r\n * @param key A chave, do tipo `string`.\r\n * @return O objeto se existir, senão retorna `null`.\r\n */\r\n get(key: string): any {\r\n let data = localStorage.getItem(key);\r\n if(data){ \r\n return JSON.parse(data);\r\n } \r\n else{\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Obtém do `localStorage` dados salvos durante um destacamento de um painel\r\n * do Golden Layout (@see base-golden-panel.ts).\r\n *\r\n * @return Um objeto do tipo `any` se a entrada existir, senão `null`.\r\n */\r\n getPopoutData() {\r\n return this.get(POPOUT_DATA_KEY);\r\n }\r\n\r\n /**\r\n * Atribui ao `localStorage` os dados a serem salvos durante um destacamento\r\n * de um painel do Golden Layout (@see base-golden-panel.ts).\r\n *\r\n * @arg data Um objeto do tipo `any`. Se `null` remove o objeto (@see set).\r\n */\r\n setPopoutData(data): void {\r\n this.set(POPOUT_DATA_KEY, data);\r\n }\r\n\r\n /**\r\n * Indica se há dado a ser restaurado do `localStorage`durante o destacamento\r\n * de um painel do Golden Layout.\r\n *\r\n * @return `true` se a entrada `POPOUT_DATA_KEY` do `localStorage` for\r\n * diferente de `null`, senão retorna `false`.\r\n */\r\n hasPopoutData(): boolean {\r\n return localStorage.getItem(POPOUT_DATA_KEY) != null;\r\n }\r\n}\r\n","import * as XMLBuilder from 'xmlbuilder'\r\nimport { GeoJSON, Feature, Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon, GeometryCollection, GeoJsonProperties, Geometry } from 'geojson'\r\n\r\ninterface ToKMLOption {\r\n documentName?: string\r\n documentDescription?: string\r\n name?: string\r\n description?: string\r\n simplestyle?: boolean\r\n timestamp?: string\r\n}\r\n\r\nexport default function tokml(geojson: GeoJSON, initialOptions?: ToKMLOption) {\r\n const options: ToKMLOption = initialOptions || {\r\n documentName: undefined,\r\n documentDescription: undefined,\r\n name: 'name',\r\n description: 'description',\r\n simplestyle: false,\r\n timestamp: 'timestamp'\r\n };\r\n\r\n const xml = XMLBuilder.create('kml', {\r\n encoding: 'UTF-8',\r\n stringify: {\r\n // Compatibility with old tokml\r\n attValue: obj => (\r\n (typeof obj !== 'string') ? obj : obj.replace(/&/g, '&')\r\n .replace(//g, '>')\r\n .replace(/\"/g, '"')\r\n )\r\n }\r\n })\r\n xml.att('xmlns', 'http://www.opengis.net/kml/2.2')\r\n const documentElement = xml.ele({\r\n Document: {\r\n ...documentName(options),\r\n ...documentDescription(options)\r\n }\r\n });\r\n root(geojson, options, documentElement)\r\n return xml.end({allowEmpty: true})\r\n};\r\n\r\nfunction feature(options: ToKMLOption, styleHashesArray: string[], documentElement: XMLBuilder.XMLElement) {\r\n return function (_: Feature) {\r\n if (!_.properties || !geometry.valid(_.geometry)) return;\r\n\r\n var styleDefinition = {},\r\n styleReference = {};\r\n if (options.simplestyle) {\r\n var styleHash = hashStyle(_.properties);\r\n if (styleHash) {\r\n if (geometry.isPoint(_.geometry) && hasMarkerStyle(_.properties)) {\r\n if (styleHashesArray.indexOf(styleHash) === -1) {\r\n styleDefinition = markerStyle(_.properties, styleHash);\r\n styleHashesArray.push(styleHash);\r\n }\r\n styleReference = { 'styleUrl': '#' + styleHash };\r\n } else if ((geometry.isPolygon(_.geometry) || geometry.isLine(_.geometry)) &&\r\n hasPolygonAndLineStyle(_.properties)) {\r\n if (styleHashesArray.indexOf(styleHash) === -1) {\r\n styleDefinition = polygonAndLineStyle(_.properties, styleHash);\r\n styleHashesArray.push(styleHash);\r\n }\r\n styleReference = { 'styleUrl': '#' + styleHash };\r\n }\r\n // Note that style of GeometryCollection / MultiGeometry is not supported\r\n }\r\n }\r\n if (Object.keys(styleDefinition).length > 0) {\r\n documentElement.ele(styleDefinition)\r\n }\r\n const PlacemarkElement = documentElement.ele({\r\n Placemark: {\r\n ...name(_.properties, options),\r\n ...description(_.properties, options),\r\n ...extendeddata(_.properties),\r\n ...timestamp(_.properties, options),\r\n }\r\n });\r\n geometry.any(_.geometry, PlacemarkElement)\r\n if (Object.keys(styleReference).length > 0) {\r\n PlacemarkElement.ele(styleReference)\r\n }\r\n // Compatibility: Clear all elements when there is no geometry\r\n const geometries = PlacemarkElement.children.filter(\r\n c => c.type === 1).filter(\r\n c => ['Point', 'LineString', 'Polygon', 'MultiGeometry'].indexOf((c as XMLBuilder.XMLElement).name) >= 0)\r\n if (geometries.length === 0) {\r\n PlacemarkElement.remove()\r\n }\r\n };\r\n}\r\n\r\nfunction root(_: GeoJSON, options: ToKMLOption, documentElement: XMLBuilder.XMLElement) {\r\n if (!_.type) return '';\r\n var styleHashesArray: string[] = [];\r\n\r\n switch (_.type) {\r\n case 'FeatureCollection':\r\n if (!_.features) return '';\r\n _.features.map(feature(options, styleHashesArray, documentElement));\r\n case 'Feature':\r\n feature(options, styleHashesArray, documentElement)(_ as Feature);\r\n default:\r\n feature(options, styleHashesArray, documentElement)({\r\n type: 'Feature',\r\n geometry: _ as (Point | MultiPoint | LineString | MultiLineString | Polygon | MultiPolygon | GeometryCollection),\r\n properties: {}\r\n });\r\n }\r\n}\r\n\r\nfunction documentName(options: ToKMLOption) {\r\n return (options.documentName !== undefined) ? { 'name': options.documentName } : {};\r\n}\r\n\r\nfunction documentDescription(options: ToKMLOption) {\r\n return (options.documentDescription !== undefined) ? { 'description': options.documentDescription } : {};\r\n}\r\n\r\nfunction name(_: GeoJsonProperties, options: ToKMLOption) {\r\n return (_ && options.name && options.name in _) ? { 'name': _[options.name] } : {};\r\n}\r\n\r\nfunction description(_: GeoJsonProperties, options: ToKMLOption) {\r\n return (_ && options.description && _[options.description]) ? { 'description': _[options.description] } : {};\r\n}\r\n\r\nfunction timestamp(_: GeoJsonProperties, options: ToKMLOption) {\r\n return (_ && options.timestamp && _[options.timestamp]) ? { 'TimeStamp': { 'when': _[options.timestamp] } } : {};\r\n}\r\n\r\n// ## Geometry Types\r\n//\r\n// https://developers.google.com/kml/documentation/kmlreference#geometry\r\nvar geometry = {\r\n Point: function (_: Point, e: XMLBuilder.XMLElement) {\r\n e.ele({ 'Point': { 'coordinates': _.coordinates.join(',') } });\r\n },\r\n LineString: function (_: LineString, e: XMLBuilder.XMLElement) {\r\n e.ele({ 'LineString': { 'coordinates': linearring(_.coordinates) } });\r\n },\r\n Polygon: function (_: Polygon, e: XMLBuilder.XMLElement) {\r\n if (!_.coordinates.length) return;\r\n var outer = _.coordinates[0],\r\n inner = _.coordinates.slice(1);\r\n var outerRing = {\r\n outerBoundaryIs: {\r\n LinearRing: {\r\n coordinates: linearring(outer)\r\n }\r\n }\r\n };\r\n var innerRings = {\r\n innerBoundaryIs: inner.map(i => ({\r\n LinearRing: {\r\n coordinates: linearring(i)\r\n }\r\n }))\r\n };\r\n e.ele({ 'Polygon': { ...outerRing, ...innerRings } });\r\n },\r\n MultiPoint: function (_: MultiPoint, e: XMLBuilder.XMLElement) {\r\n if (!_.coordinates.length) return;\r\n const multi = e.ele('MultiGeometry');\r\n _.coordinates.forEach(c => {\r\n geometry.Point({ type: 'Point', coordinates: c }, multi);\r\n });\r\n },\r\n MultiPolygon: function (_: MultiPolygon, e: XMLBuilder.XMLElement) {\r\n if (!_.coordinates.length) return;\r\n const multi = e.ele('MultiGeometry');\r\n _.coordinates.forEach(c => {\r\n geometry.Polygon({ type: 'Polygon', coordinates: c }, multi);\r\n });\r\n },\r\n MultiLineString: function (_: MultiLineString, e: XMLBuilder.XMLElement) {\r\n if (!_.coordinates.length) return;\r\n const multi = e.ele('MultiGeometry');\r\n _.coordinates.forEach(c => {\r\n geometry.LineString({ type: 'LineString', coordinates: c }, multi);\r\n });\r\n },\r\n GeometryCollection: function (_: GeometryCollection, e: XMLBuilder.XMLElement) {\r\n const multi = e.ele('MultiGeometry');\r\n _.geometries.forEach(g => {\r\n geometry.any(g, multi);\r\n });\r\n },\r\n valid: function (_: Geometry) {\r\n return _ && _.type && (('coordinates' in _ && _.coordinates) ||\r\n _.type === 'GeometryCollection' && _.geometries && _.geometries.every(geometry.valid));\r\n },\r\n any: function (_: Geometry, e: XMLBuilder.XMLElement) {\r\n switch (_.type) {\r\n case 'Point':\r\n return geometry.Point(_, e)\r\n case 'LineString':\r\n return geometry.LineString(_, e)\r\n case 'Polygon':\r\n return geometry.Polygon(_, e)\r\n case 'MultiPoint':\r\n return geometry.MultiPoint(_, e)\r\n case 'MultiPolygon':\r\n return geometry.MultiPolygon(_, e)\r\n case 'MultiLineString':\r\n return geometry.MultiLineString(_, e)\r\n case 'GeometryCollection':\r\n return geometry.GeometryCollection(_, e)\r\n }\r\n },\r\n isPoint: function (_: Geometry) {\r\n return _.type === 'Point' ||\r\n _.type === 'MultiPoint';\r\n },\r\n isPolygon: function (_: Geometry) {\r\n return _.type === 'Polygon' ||\r\n _.type === 'MultiPolygon';\r\n },\r\n isLine: function (_: Geometry) {\r\n return _.type === 'LineString' ||\r\n _.type === 'MultiLineString';\r\n }\r\n};\r\n\r\nfunction linearring(_: number[][]) {\r\n return _.map(function (cds) { return cds.join(','); }).join(' ');\r\n}\r\n\r\n// ## Data\r\nfunction extendeddata(_: GeoJsonProperties) {\r\n return { 'ExtendedData': { 'Data': pairs(_).map(data) } };\r\n}\r\n\r\nfunction data(_: [string, any]) {\r\n return { '@name': _[0], 'value': _[1] || '' };\r\n}\r\n\r\n// ## Marker style\r\nfunction hasMarkerStyle(_: {[name: string]: any}) {\r\n return !!(_['marker-size'] || _['marker-symbol'] || _['marker-color']);\r\n}\r\n\r\nfunction markerStyle(_: {[name: string]: any}, styleHash: string) {\r\n return {\r\n 'Style': {\r\n '@id': styleHash,\r\n 'IconStyle': {\r\n 'Icon': { 'href': iconUrl(_) }\r\n },\r\n ...iconSize()\r\n }\r\n };\r\n}\r\n\r\nfunction iconUrl(_: {[name: string]: any}) {\r\n var size = _['marker-size'] || 'medium',\r\n symbol = _['marker-symbol'] ? '-' + _['marker-symbol'] : '',\r\n color = (_['marker-color'] || '7e7e7e').replace('#', '');\r\n\r\n return 'https://api.tiles.mapbox.com/v3/marker/' + 'pin-' + size.charAt(0) +\r\n symbol + '+' + color + '.png';\r\n}\r\n\r\nfunction iconSize() {\r\n return {\r\n 'hotSpot': {\r\n '@xunits': 'fraction',\r\n '@yunits': 'fraction',\r\n '@x': 0.5,\r\n '@y': 0.5\r\n }\r\n }\r\n}\r\n\r\n// ## Polygon and Line style\r\nfunction hasPolygonAndLineStyle(_: {[name: string]: any}) {\r\n return ('stroke' in _ || 'stroke-opacity' in _ || 'stroke-width' in _ || 'fill' in _ || 'fill-opacity' in _)\r\n}\r\n\r\nfunction polygonAndLineStyle(_: {[name: string]: any}, styleHash: string) {\r\n var lineStyle = {\r\n 'LineStyle': {\r\n 'color': hexToKmlColor(_['stroke'], _['stroke-opacity']) || 'ff555555',\r\n 'width': _['stroke-width'] === undefined ? 2 : _['stroke-width']\r\n }\r\n };\r\n var polyStyle = {};\r\n if (_['fill'] || _['fill-opacity']) {\r\n polyStyle = {\r\n 'PolyStyle': {\r\n 'color': hexToKmlColor(_['fill'], _['fill-opacity']) || '88555555'\r\n }\r\n }\r\n };\r\n\r\n return { 'Style': { ...lineStyle, ...polyStyle, '@id': styleHash } };\r\n}\r\n\r\n// ## Style helpers\r\nfunction hashStyle(_: GeoJsonProperties) {\r\n if (!_) { return '' }\r\n var hash = '';\r\n\r\n if (_['marker-symbol']) hash = hash + 'ms' + _['marker-symbol'];\r\n if (_['marker-color']) hash = hash + 'mc' + _['marker-color'].replace('#', '');\r\n if (_['marker-size']) hash = hash + 'ms' + _['marker-size'];\r\n if (_['stroke']) hash = hash + 's' + _['stroke'].replace('#', '');\r\n if (_['stroke-width']) hash = hash + 'sw' + _['stroke-width'].toString().replace('.', '');\r\n if (_['stroke-opacity']) hash = hash + 'mo' + _['stroke-opacity'].toString().replace('.', '');\r\n if (_['fill']) hash = hash + 'f' + _['fill'].replace('#', '');\r\n if (_['fill-opacity']) hash = hash + 'fo' + _['fill-opacity'].toString().replace('.', '');\r\n\r\n return hash;\r\n}\r\n\r\nfunction hexToKmlColor(hexColor: string, opacity: number) {\r\n if (typeof hexColor !== 'string') return '';\r\n\r\n hexColor = hexColor.replace('#', '').toLowerCase();\r\n\r\n if (hexColor.length === 3) {\r\n hexColor = hexColor[0] + hexColor[0] +\r\n hexColor[1] + hexColor[1] +\r\n hexColor[2] + hexColor[2];\r\n } else if (hexColor.length !== 6) {\r\n return '';\r\n }\r\n\r\n var r = hexColor[0] + hexColor[1];\r\n var g = hexColor[2] + hexColor[3];\r\n var b = hexColor[4] + hexColor[5];\r\n\r\n var o = 'ff';\r\n if (typeof opacity === 'number' && opacity >= 0.0 && opacity <= 1.0) {\r\n o = (opacity * 255).toString(16);\r\n if (o.indexOf('.') > -1) o = o.substr(0, o.indexOf('.'));\r\n if (o.length < 2) o = '0' + o;\r\n }\r\n\r\n return o + b + g + r;\r\n}\r\n\r\n// ## General helpers\r\nfunction pairs(_: GeoJsonProperties) {\r\n var o: [string, any][] = [];\r\n for (var i in _) o.push([i, _[i]]);\r\n return o;\r\n}","export class ServiceResponse {\r\n name: string;\r\n url: string;\r\n version: string;\r\n\r\n constructor(name: string, url: string) {\r\n this.name = name;\r\n this.url = url;\r\n }\r\n}\r\n","
\r\n
\r\n {{title}}[ {{getListCount()}} ]\r\n
\r\n\r\n
\r\n \r\n search\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n sync\r\n refresh\r\n sync_problem\r\n {{signalsConnectionState.text}}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Origem \r\n \r\n directions_car\r\n person\r\n \r\n Usuário/Veículo {{ getDescription(element) }} Empresa {{ element?.company?.name }} Equipe {{ element.patrolTeam ? element.patrolTeam?.name: '' }} Última Operação {{ !element.operation ? '' : element.operation?.identifier }} Tipo {{ !element.operation ? '' : operationTypeDescription[element.operation?.type] }} Status {{ !element.operation ? '' : operationStatusDescription[element.operation?.status] }} Data/Hora de Início {{ element?.operation?.startDate | date:'dd/MM/yyyy HH:mm' }} Última Atualização (GPS) {{ getLastUpdateTime(element) }}
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n","import { Component, Inject, OnInit, OnDestroy, ViewChild, NgZone, ChangeDetectorRef } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Subscription } from 'rxjs';\r\nimport { StorageService } from '../../service/storage-service';\r\n\r\nimport { BaseGoldenPanel } from '../base-golden-panel/base-golden-panel';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { StompState } from '@stomp/ng2-stompjs';\r\n\r\nimport { OperationTypeDescription, SourceType, OperationStatusDescription, SourceTypeDescription, Permission, MapEvents, OperationType } from '../../model/enums.enum';\r\nimport { TrackingService } from '../../service/model/tracking.service';\r\nimport { Websocket } from '../../service/websocket/websocket';\r\nimport { ESP, FILL_DATA_PREFIX, MAP_PAGE, TRACKING_PAGE, USER_NOT_FOUND } from 'src/app/common/constants';\r\nimport { TrackingModel } from '../../model/tracking.model';\r\n\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport * as moment from 'moment';\r\nimport { UserModel } from 'src/app/model/user.model';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { LoadingListService } from 'src/app/service/loading/loading-list.service';\r\nimport { AuthorizationService } from '../../service/authorization/authorization.service';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { EntityCacheService } from '../../service/model/entity.cache.service';\r\nimport { VehicleSignalModel } from 'src/app/model/vehicle.signal.model';\r\nimport { AuthenticationService } from '../login/login-services';\r\n\r\n/** SIGNALS WEBSOCKET STATES */\r\nconst DISCONNECTED = { value: 0, text: 'Sinais Desconectado' };\r\nconst CONNECTING = { value: 1, text: 'Sinais Conectando' };\r\nconst CONNECTED = { value: 2, text: 'Sinais Conectado' };\r\n\r\n@ProfileClassToConsole()\r\n@Component({\r\n selector: 'app-tracking',\r\n templateUrl: './tracking.component.html',\r\n styleUrls: ['./tracking.component.scss']\r\n})\r\nexport class TrackingComponent extends BaseGoldenPanel implements OnInit, OnDestroy {\r\n\r\n /** VARIÁVEIS EXTERNAS (referenciadas no HTML) */\r\n sourceType = SourceType;\r\n operationTypeDescription = OperationTypeDescription;\r\n operationStatusDescription = OperationStatusDescription;\r\n title = environment.TRACKING_TITLE_LABEL;\r\n tabTitle = environment.TRACKING_GROUP_LABEL;\r\n USER_NOT_FOUND = USER_NOT_FOUND;\r\n\r\n signalsConnectionState: {value: number, text: string} = DISCONNECTED;\r\n private vehicleSignalsWebsocket: Websocket;\r\n private signalsWebsocket: Websocket;\r\n\r\n private signalsWebsocketStateSubscription: Subscription;\r\n private signalsWebsocketConnectionSubscription: Subscription;\r\n private vehicleSignalsWebsocketConnectionSubscription: Subscription;\r\n\r\n filteredTrackings: TrackingModel[] = []; // apenas os filtrados do trackingMap (aponta para os mesmos modelos armazenados em trackingMap)\r\n displayedColumns: string[];\r\n dataSource: MatTableDataSource; // Baseado em filteredTrackings\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n @ViewChild(MatInput, { static: true }) searchInput: MatInput;\r\n selection = new SelectionModel(true, []);\r\n @ViewChild('contextMenuTrigger', { read: MatMenuTrigger, static: true }) contextMenu: MatMenuTrigger;\r\n contextMenuPosition = { x: '0px', y: '0px' };\r\n contextMenuSelectedItem; // Leave it as any, for now\r\n\r\n // permissões de acordo com o perfil\r\n permission = Permission;\r\n\r\n loadingListService: LoadingListService = new LoadingListService();\r\n\r\n authenticatedSubscription: Subscription;\r\n\r\n constructor(public logger: NGXLogger,\r\n protected ngZone: NgZone,\r\n protected toastr: ToastrService, \r\n private trackingService: TrackingService,\r\n private changeDetector: ChangeDetectorRef,\r\n private dialog: MatDialog,\r\n private storageService: StorageService,\r\n protected authorizationService: AuthorizationService,\r\n public entityCacheService: EntityCacheService,\r\n private authenticationService: AuthenticationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, goldenLayout, container);\r\n }\r\n\r\n ngOnInit() {\r\n this.logger.debug('TrackingComponent.ngOnInit()');\r\n\r\n this.glUpdateTabTitle(this.tabTitle);\r\n this.subscribeOnAuthenticatedStatus();\r\n\r\n // Para forçar uma leitura dos últimos sinais ao abrir essa tela\r\n this.trackingService.loadLastVehicleSignals(this.loadingListService, false);\r\n this.trackingService.loadLastSignals(this.loadingListService, false);\r\n this.entityCacheService.loadCompanies(this.loadingListService);\r\n\r\n this.subscribeOnFillData();\r\n \r\n this.initWebsocket();\r\n\r\n this.displayedColumns = ['select',\r\n 'signal.sourceType',\r\n 'description',\r\n 'company',\r\n 'patrolTeam.name',\r\n 'operation.identifier',\r\n 'operation.type',\r\n 'operation.status',\r\n 'operation.startDate',\r\n 'signal.receivedTimestamp'\r\n ];\r\n\r\n this.dataSource = new MatTableDataSource(this.filteredTrackings);\r\n this.sort.sort({id: \"signal.sourceType\", start: 'asc', disableClear: false});\r\n }\r\n\r\n initWebsocket() {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.subscribeToSignalsWebsocketStatusCheck();\r\n this.subscribeOnSignalWebsocketConnected();\r\n this.subscribeOnVehicleSignalWebsocketConnected();\r\n });\r\n }\r\n\r\n ngOnDestroy(){\r\n const loggedUser = this.storageService.getLocalUser();\r\n if(!loggedUser || !loggedUser.id ) return;\r\n\r\n this.signalsWebsocketStateSubscription?.unsubscribe();\r\n this.signalsWebsocketConnectionSubscription?.unsubscribe();\r\n this.vehicleSignalsWebsocketConnectionSubscription?.unsubscribe();\r\n\r\n this.signalsWebsocket?.destroy();\r\n this.signalsWebsocket = null;\r\n this.vehicleSignalsWebsocket?.destroy();\r\n this.vehicleSignalsWebsocket = null;\r\n\r\n this.glUnSubscribeEvent(FILL_DATA_PREFIX + TRACKING_PAGE);\r\n\r\n this.loadingListService.destroy();\r\n this.authenticatedSubscription?.unsubscribe();\r\n }\r\n\r\n private subscribeOnFillData(){\r\n this.glSubscribeEvent(FILL_DATA_PREFIX + TRACKING_PAGE, (data) => {\r\n if (data.updateFilter) {\r\n this.updateFilteredTrackings();\r\n }\r\n });\r\n }\r\n\r\n protected renderComponent(){\r\n // aguarda um pouco para outras tarefas terminarem\r\n setTimeout(() => {\r\n this.changeDetector.detectChanges();\r\n }, 1000);\r\n }\r\n\r\n /** Verifica o estado da conexão com o websocket de sinais */\r\n private subscribeToSignalsWebsocketStatusCheck(){\r\n this.signalsWebsocket = Websocket.createSignalsWebsocket();\r\n this.signalsWebsocketStateSubscription = this.signalsWebsocket.state().subscribe((state: StompState) => {\r\n if (state === 0 || state === 3){\r\n this.signalsConnectionState = DISCONNECTED;\r\n }else if (state === 1){\r\n this.signalsConnectionState = CONNECTING;\r\n }else if (state === 2){\r\n this.signalsConnectionState = CONNECTED;\r\n }\r\n this.changeDetector.detectChanges();\r\n }, error => this.logger.error(error));\r\n }\r\n\r\n /**\r\n * Ao conectar com o websocket, recarrega os últimos sinais do backend para evitar sinais antigos perdidos\r\n */\r\n private subscribeOnSignalWebsocketConnected(){\r\n this.signalsWebsocketConnectionSubscription = this.signalsWebsocket.onConnectCallback().subscribe(() => {\r\n this.logger.log('OnSignalWebsocketConnected ***** Conexão com o websocket estabelecida.');\r\n this.trackingService.loadLastSignals(this.loadingListService, false);\r\n this.renderComponent();\r\n }, (error: any) => this.logger.error(error));\r\n }\r\n\r\n /**\r\n * Ao conectar com o websocket, recarrega os últimos sinais de veículos do backend para evitar sinais antigos perdidos\r\n */\r\n private subscribeOnVehicleSignalWebsocketConnected(){\r\n this.vehicleSignalsWebsocket = Websocket.createVehicleSignalsWebsocket();\r\n this.vehicleSignalsWebsocketConnectionSubscription = this.vehicleSignalsWebsocket.onConnectCallback().subscribe(() => {\r\n this.logger.log('OnVehicleSignalWebsocketConnected ***** Conexão com o websocket estabelecida.');\r\n this.trackingService.loadLastVehicleSignals(this.loadingListService, false);\r\n this.renderComponent();\r\n }, (error: any) => this.logger.error(error));\r\n }\r\n\r\n // Filtra os itens de rastreamento pela lotação e pelos excluídos manualmente\r\n private updateFilteredTrackings(){\r\n const trackingList = this.trackingService.getTrackingList();\r\n const specificPlacements = this.storageService.getSpecificPlacementIds();\r\n\r\n this.filteredTrackings = [];\r\n\r\n trackingList.forEach((tracking)=>{\r\n // Se não foi removido manualmente da lista, e se a lotação é permitida, então adiciona na lista\r\n if(!tracking.invalidInfo && !tracking.removedFromTracking && this.trackingService.isPermittedPlacement(tracking, specificPlacements)) {\r\n this.filteredTrackings.push(tracking);\r\n }\r\n });\r\n\r\n // Deixar comentado. Usar apenas quando estiver depurando o tracking\r\n // this.logger.debug(\"TrackingComponent Total de Itens: \" + trackingList.length);\r\n // this.logger.debug(\"TrackingComponent Total de Itens Filtrados: \" + (trackingList.length - this.filteredTrackings.length));\r\n \r\n this.filteredTrackings.sort((track1, track2) => {\r\n if(track1?.patrolTeam?.name < track2?.patrolTeam?.name) return 1 ;\r\n if(track1?.patrolTeam?.name > track2?.patrolTeam?.name) return -1;\r\n return 0;\r\n })\r\n\r\n this.buildDataSource();\r\n }\r\n \r\n onRemoveManyClick(trackings: TrackingModel[]) {\r\n trackings.forEach(tracking => {\r\n let indexToRemove = this.filteredTrackings.findIndex( (element: TrackingModel) => element.signal.mobileObjectId === tracking.signal.mobileObjectId);\r\n this.filteredTrackings.splice(indexToRemove,1);\r\n tracking.removedFromTracking = true;\r\n });\r\n\r\n this.buildDataSource();\r\n this.selection.clear();\r\n }\r\n\r\n onRemoveItemClick(tracking: TrackingModel) {\r\n let indexToRemove = this.filteredTrackings.findIndex( (element: TrackingModel) => element.signal.mobileObjectId === tracking.signal.mobileObjectId);\r\n this.filteredTrackings.splice(indexToRemove,1);\r\n tracking.removedFromTracking = true;\r\n\r\n this.buildDataSource();\r\n this.selection.clear();\r\n }\r\n\r\n /** Callback para a seleção de um item da lista de objetos móveis */\r\n onTrackingClick(tracking: TrackingModel){\r\n this.glOpenContainer(MAP_PAGE, {tracking: tracking, fit: true});\r\n }\r\n\r\n onTrackingManyClick(trackings: TrackingModel[]) {\r\n let entityList = [];\r\n trackings.forEach( (tracking: TrackingModel) => {\r\n entityList.push(tracking);\r\n });\r\n\r\n this.glOpenContainer(MAP_PAGE, {trackingList: entityList, fit: true});\r\n }\r\n\r\n /** Retorna estilo de destaque para o item selecionado */\r\n getStyle(item: TrackingModel){\r\n if (this.selection.isSelected(item)) {\r\n return 'tracking-side-selected';\r\n } else {\r\n return 'tracking-side-not-selected';\r\n }\r\n }\r\n\r\n onHistoricalTrackingClick(tracking: TrackingModel) {\r\n this.glOpenContainer(MAP_PAGE, {historicalTracking: tracking});\r\n }\r\n\r\n onHistoricalTrackingManyClick(trackings: TrackingModel[]) {\r\n let entityList = [];\r\n trackings.forEach( (tracking: TrackingModel) => {\r\n entityList.push(tracking);\r\n });\r\n\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingList: entityList});\r\n }\r\n\r\n onOperationLocationClick(tracking: TrackingModel) {\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingLastOperation: tracking});\r\n }\r\n\r\n onOperationClick(tracking: TrackingModel) {\r\n if (tracking.operation.type == OperationType.PATROL){\r\n this.glOpenContainer('patrols-edit', {id: tracking.operation.id});\r\n }\r\n else {\r\n this.glOpenContainer('verifications-edit', {id: tracking.operation.id});\r\n }\r\n }\r\n\r\n onOperationLocationManyClick(trackings: TrackingModel[]) {\r\n let entityList = [];\r\n trackings.forEach( (tracking: TrackingModel) => {\r\n if(this.hasOperationLocation(tracking))\r\n entityList.push(tracking);\r\n });\r\n\r\n if(entityList.length > 0)\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingLastOperationList: entityList});\r\n else\r\n this.toastr.warning(\"Nenhum rastreamento selecionado possui operação.\");\r\n }\r\n\r\n hasOperation(tracking: TrackingModel): boolean {\r\n return !!tracking?.operation;\r\n }\r\n\r\n hasOperationLocation(tracking: TrackingModel): boolean {\r\n return tracking?.operation &&\r\n ((tracking?.operation.route && !!tracking?.operation.route.fileRouteKml) ||\r\n (tracking?.operation.inspections && tracking?.operation.inspections.length != 0));\r\n }\r\n\r\n getSourceClass(tracking: TrackingModel){\r\n if (tracking && tracking.operation){\r\n return tracking.operation.status;\r\n }\r\n return 'OTHER';\r\n }\r\n\r\n getSourceTooltip(tracking: TrackingModel){\r\n if(tracking && tracking.operation){\r\n return OperationStatusDescription[tracking.operation.status];\r\n }\r\n }\r\n\r\n getLastUpdateTime(tracking: TrackingModel, fullDate: boolean = false) {\r\n let timestamp = tracking.signal.receivedTimestamp? tracking.signal.receivedTimestamp: tracking.signal.timestamp;\r\n let lastMoment = moment(timestamp);\r\n const day = lastMoment.dayOfYear();\r\n const nowDay = moment().dayOfYear();\r\n if (fullDate)\r\n return lastMoment.format('yyyy/MM/DD HH:mm:ss');\r\n else if (nowDay != day)\r\n return lastMoment.format('DD/MM HH:mm:ss');\r\n else\r\n return lastMoment.format('HH:mm:ss');\r\n }\r\n\r\n getUserNameLoginTitle(user) {\r\n return UserModel.getUserTitle(user);\r\n }\r\n\r\n buildDataSource(){\r\n this.dataSource = new MatTableDataSource(this.filteredTrackings);\r\n this.dataSource.filterPredicate = (entity: TrackingModel, filter: string): boolean => {\r\n return this.getStringEntityForFilter(entity).indexOf(filter) != -1;\r\n };\r\n\r\n this.dataSource.sortingDataAccessor = (data, sortHeaderId: string) => {\r\n return this.getPropertyByPath(data, sortHeaderId);\r\n };\r\n\r\n this.dataSource.sort = this.sort;\r\n \r\n let filterValue = this.searchInput.value.trim().toLowerCase();\r\n if (filterValue != '') {\r\n this.dataSource.filter = filterValue;\r\n }\r\n }\r\n\r\n getDescription(tracking: TrackingModel) {\r\n if (!tracking) return;\r\n if (tracking.signal.sourceType === SourceType.VEHICLE) {\r\n const vehicleSignal = tracking.signal as VehicleSignalModel;\r\n return tracking.title + ' (' + vehicleSignal.movimento?.toLowerCase() + ')';\r\n }\r\n else {\r\n return tracking.title;\r\n }\r\n }\r\n\r\n protected getStringEntityForFilter(tracking: TrackingModel): string {\r\n const description = this.lowerAndTrimText(this.getDescription(tracking));\r\n const company = tracking.company? this.lowerAndTrimText(tracking.company.name): '';\r\n const patrolTeam = (tracking.patrolTeam) ? this.lowerAndTrimText(tracking.patrolTeam?.name) : '';\r\n const operationType = (tracking?.operation) ? this.lowerAndTrimText(this.operationTypeDescription[tracking.operation.type]) : '';\r\n const identifier = (tracking.operation) ? this.lowerAndTrimText(tracking.operation.identifier) : '';\r\n const operationStatus = (tracking.operation) ? this.lowerAndTrimText(OperationStatusDescription[tracking.operation.status]) : '';\r\n const sourceType = this.lowerAndTrimText(SourceTypeDescription[tracking.signal.sourceType]); // pode buscar por veículo ou App\r\n const startDate = tracking.operation ? DateUtils.timestampToStringInMinutes(tracking.operation.startDate) : '';\r\n const lastUpdate = this.getLastUpdateTime(tracking);\r\n return description + ESP + patrolTeam + ESP +company + ESP + sourceType + ESP + identifier + ESP + operationType + ESP + operationStatus + ESP + startDate + ESP + lastUpdate;\r\n }\r\n\r\n /** Método utilitário para passar strings para caixa alta e remover espaços (se existirem) */\r\n protected lowerAndTrimText(text: string) {\r\n return (text) ? text.trim().toLowerCase() : '';\r\n }\r\n\r\n getPropertyByPath(item: Object, property: string){\r\n let value = property.split('.').reduce(this.getProperty, item);\r\n if (property === 'sourceType') {\r\n value = SourceTypeDescription[value];\r\n }\r\n else if (property === 'description') {\r\n value = this.getDescription(item as TrackingModel);\r\n }\r\n else if (property === 'company') {\r\n value = item['company']? item['company'].name: '';\r\n }\r\n else if (property === 'signal.receivedTimestamp') {\r\n value = this.getLastUpdateTime(item as TrackingModel, true);\r\n console.log(value);\r\n }\r\n\r\n if (typeof value === 'string'){\r\n value = this.lowerAndTrimText(value);\r\n }\r\n return value ? value : '';\r\n }\r\n\r\n /* reducer method */\r\n getProperty (o, i) {\r\n if ( !o ) { return ''; }\r\n return o[i];\r\n }\r\n\r\n applySearch(filterValue: string) {\r\n this.dataSource.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n onRemoveSearch(){\r\n this.searchInput.value = '';\r\n this.dataSource.filter = '';\r\n }\r\n\r\n openContextMenu(event: MouseEvent, row) {\r\n event.preventDefault();\r\n this.contextMenuSelectedItem = row;\r\n\r\n this.contextMenuPosition.x = event.clientX + 'px';\r\n this.contextMenuPosition.y = event.clientY + 'px';\r\n this.contextMenu.menu.focusFirstItem('mouse');\r\n this.contextMenu.openMenu();\r\n }\r\n\r\n checkboxTip(row?: TrackingModel): string {\r\n return `${this.selection.isSelected(row) ? 'Desmarcar' : 'Selecionar'} Item`;\r\n }\r\n\r\n onCheckboxClick(alert: TrackingModel){\r\n this.selection.toggle(alert);\r\n }\r\n\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.dataSource ? this.dataSource.filteredData.length : 0;\r\n return numSelected === numRows;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n this.selection.hasValue() ?\r\n this.selection.clear() :\r\n this.dataSource.filteredData.forEach(row => this.selection.select(row));\r\n }\r\n\r\n getListCount(){\r\n return this.dataSource? this.dataSource.filteredData.length: 0;\r\n }\r\n\r\n getShowSpinner() {\r\n return this.loadingListService.getShowSpinner();\r\n }\r\n\r\n /**Como a tela de mensagem é carregado logo após a atenticação, é preciso verificar se o usuário tem acesso */\r\n subscribeOnAuthenticatedStatus() {\r\n this.authenticatedSubscription = this.authenticationService.authenticated$.subscribe(authenticated => {\r\n this.logger.debug('TrackingComponent.OnAuthenticatedStatus() - ' + authenticated);\r\n if (authenticated) {\r\n if(!this.authorizationService.userHasPermission(this.permission.VIEW_TRACKING_TEAM))\r\n this.glRemoveLayout('tracking');\r\n }\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MapComponent } from './map.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { GeneralModule } from 'src/app/general/general.module';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\n\r\n@NgModule({\r\n declarations: [\r\n MapComponent \r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n FlexLayoutModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatExpansionModule,\r\n MatSlideToggleModule,\r\n MatInputModule,\r\n MatSidenavModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatToolbarModule,\r\n MatDialogModule,\r\n MatSelectModule,\r\n MatSliderModule,\r\n MatCheckboxModule,\r\n MatSortModule,\r\n MatPaginatorModule,\r\n MatDividerModule,\r\n NgxMaskModule.forRoot(),\r\n GeneralModule\r\n ]\r\n})\r\nexport class MapModule { }\r\n","import { Component, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { EditComponent } from '../../../edit-component';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { environment } from 'src/environments/environment';\r\nimport { UserModel } from 'src/app/model/user.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorizationService } from '../../../../service/authorization/authorization.service';\r\nimport { StorageService } from '../../../../service/storage-service';\r\nimport { PermisionRuleOption, Permission, RegistrationType, UserFields, UserType } from 'src/app/model/enums.enum';\r\nimport { PlacementModel } from 'src/app/model/placement.model';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { UserService } from 'src/app/service/model/user.service';\r\nimport { first } from 'rxjs/operators';\r\nimport { PatrolTeamModel } from 'src/app/model/patrolteam.model';\r\nimport { UserTypeDescription } from '../../../../model/enums.enum';\r\nimport { ConfirmationDialogComponent } from '../../../../general/confirmation-dialog/confirmation-dialog.component';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { MAP_PAGE } from 'src/app/common/constants';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { MarkersService } from 'src/app/service/model/markers.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { MultiselectAutocomplete } from 'src/app/general/multiselect-autocomplete/multiselect-autocomplete.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-user-edit',\r\n templateUrl: './user-edit.component.html',\r\n styleUrls: ['../../../../app.component.scss', './user-edit.component.scss']\r\n})\r\nexport class UserEditComponent extends EditComponent implements OnInit, OnDestroy {\r\n\r\n hide: boolean;\r\n passwordHide: boolean = true;\r\n userTypeKey = UserType;\r\n disableOtherPlacements : boolean = false;\r\n disableAppAccess : boolean = false;\r\n /**User Profile */ \r\n permission = Permission;\r\n\r\n patrolTeamName: string = 'sem equipe';\r\n\r\n userFields= UserFields;\r\n userTypeDescription = UserTypeDescription;\r\n \r\n private reloadProfilesSubscription: Subscription;\r\n \r\n @ViewChild('listPlacements') listPlacements: MultiselectAutocomplete;\r\n\r\n constructor(logger: NGXLogger,\r\n public entityCacheService: EntityCacheService,\r\n dialog: MatDialog,\r\n toastr: ToastrService,\r\n public userService: UserService,\r\n private markerService: MarkersService,\r\n authorizationService: AuthorizationService,\r\n protected storageService: StorageService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, userService, dialog, environment.USERS_MODEL_LABEL, environment.USERS_TITLE_LABEL, storageService,\r\n 'users-edit', environment.USERS_GROUP_LABEL, toastr, authorizationService, goldenLayout, container);\r\n this.logger.debug('UserEditComponent.constructor()');\r\n }\r\n\r\n ngOnInit() {\r\n this.logger.debug('UserEditComponent.ngOnInit()');\r\n super.ngOnInit();\r\n this.hide = true;\r\n this.subscribeToProfileReload();\r\n }\r\n \r\n ngOnDestroy() {\r\n this.logger.debug('UserEditComponent.ngOnDestroy()');\r\n this.reloadProfilesSubscription?.unsubscribe();\r\n super.ngOnDestroy();\r\n }\r\n\r\n createData(options?) {\r\n this.logger.debug('UserEditComponent.createData()');\r\n\r\n this.model = new UserModel();\r\n this.view = {};\r\n }\r\n\r\n loadFormOptionsData() {\r\n this.logger.debug('UserEditComponent.loadFormOptionsData()');\r\n this.entityCacheService.loadPlacements(this.loadingListService);\r\n this.entityCacheService.loadCompanies(this.loadingListService);\r\n this.entityCacheService.loadProfiles(this.loadingListService);\r\n }\r\n\r\n replaceRunTimeData(data){\r\n // Substitui mudanças dinamicas, que independem da edição do usuário\r\n this.replaceModelViewData(data, 'patrolTeamId');\r\n\r\n if (this.entityCacheService.isAdminProfile(data['profileId'])) {\r\n // Restaura a lista de lotações depois de carregar um admin\r\n data['placements'] = this.copyModel(this.entityCacheService.getPlacements());\r\n }\r\n\r\n let profile = this.entityCacheService.getProfileById(data['profileId']);\r\n if (profile) data['profileName'] = profile.name;\r\n\r\n if (!this.hasAppAccessPermission(data['profileId'])) {\r\n this.replaceModelViewData(data, 'appAccess'); // Nesse caso é readonly\r\n }\r\n}\r\n \r\n mapViewToModel() {\r\n // Caso o usuário tenha preenchido uma senha mas clicou em 'Cancelar' a redefinição, deve-se limpar a mudança\r\n if (this.passwordHide) {\r\n this.view['password'] = null;\r\n }\r\n else {\r\n this.passwordHide = true; // Esconde automaticamente depois de salvar\r\n }\r\n\r\n if (this.isProfessionalProfile()) {\r\n this.view['appAccess'] = true;\r\n }\r\n\r\n super.mapViewToModel();\r\n\r\n if (this.entityCacheService.isAdminProfile(this.model['profileId'])) {\r\n // Limpa a lista de lotações antes de salvar um admin\r\n this.model['placements'] = null;\r\n }\r\n\r\n this.logger.debug('UserEditComponent.mapViewToModel()');\r\n }\r\n\r\n entitySaved(entity: EntityModel): void {\r\n if (this.entityCacheService.isAdminProfile(entity['profileId'])) {\r\n // Restaura a lista de lotações depois de salvar um admin\r\n entity['placements'] = this.copyModel(this.entityCacheService.getPlacements());\r\n }\r\n super.entitySaved(entity);\r\n }\r\n\r\n private hasAccessToAllPlacements(profileId: string): boolean{\r\n if (!profileId) return false;\r\n const profile = this.entityCacheService.getProfileById(profileId);\r\n if (!profile) return false;\r\n if (profile.userType == UserType.ADMINISTRATOR) return true;\r\n if (profile.permissions[Permission.ACCESS_TO_ALL_PLACEMENT])return true;\r\n return false;\r\n }\r\n\r\n private hasAppAccessPermission(profileId: string): boolean{\r\n if (!profileId) return false;\r\n const profile = this.entityCacheService.getProfileById(profileId);\r\n if (!profile) return false;\r\n if (profile.userType == UserType.ADMINISTRATOR) return true;\r\n if (profile.userType == UserType.PROFESSIONAL) return true;\r\n if (profile.permissions[Permission.ACCES_APP]) return true;\r\n return false;\r\n }\r\n\r\n private updateAppAccess(){\r\n if(!this.hasAppAccessPermission(this.view['profileId'])){\r\n this.disableAppAccess = true;\r\n this.view['appAccess'] = false;\r\n }\r\n else {\r\n this.disableAppAccess = false;\r\n }\r\n }\r\n\r\n mapModelToView() {\r\n super.mapModelToView();\r\n\r\n this.view['password'] = null;\r\n\r\n if(this.hasAccessToAllPlacements(this.view['profileId'])){\r\n this.disableOtherPlacements = true;\r\n this.view['placements'] = this.copyModel(this.entityCacheService.getPlacements()); // Seleciona todos as lotações\r\n }\r\n\r\n this.updateAppAccess();\r\n\r\n if (this.isProfessionalProfile()) {\r\n this.view['appAccess'] = true;\r\n }\r\n\r\n if (this.view['name']) {\r\n this.glUpdateTabTitle(this.modelName + ': \"' + this.view['name'] + '\"');\r\n }\r\n\r\n if (this.view['patrolTeamId']) {\r\n this.entityCacheService.loadPatrolTeams(this.loadingListService, () =>{\r\n let patrolTeam: PatrolTeamModel = this.entityCacheService.getPatrolTeamById(this.view['patrolTeamId']);\r\n if(!patrolTeam) {\r\n this.patrolTeamName = 'equipe não encontrada';\r\n this.view['patrolTeamId'] = null;\r\n }\r\n else {\r\n this.patrolTeamName = patrolTeam.name;\r\n\r\n let found = patrolTeam.users.find(el => el.id === this.id);\r\n if (!found) {\r\n this.patrolTeamName += \"(inconsistente, usuário não pertence à equipe)\";\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n this.patrolTeamName = 'sem equipe';\r\n }\r\n\r\n if (!this.view['originPlacement'] && this.view['placements'] && this.view['placements'].length == 1) {\r\n this.view['originPlacement'] = this.view['placements'][0];\r\n }\r\n }\r\n\r\n placementsTooltip(){\r\n if (!this.view['placements']) return;\r\n return this.view['placements'].length > 0 ? this.view['placements'].map(p => p.name): \"\";\r\n }\r\n\r\n getAppAccess(): boolean {\r\n if (this.isProfessionalProfile()) {\r\n return true;\r\n }\r\n return this.view['appAccess'];\r\n }\r\n\r\n isProfessionalProfile(){\r\n if(this.view['profileId']){\r\n let selectedProfile = this.entityCacheService.getProfileById(this.view['profileId']);\r\n if(selectedProfile && selectedProfile.userType === UserType.PROFESSIONAL) return true;\r\n else return false;\r\n }\r\n }\r\n\r\n isSendPasswordButtonDisabledForUser(): boolean {\r\n const email = this.view['email'];\r\n return !this.getAppAccess() || !email || email === '';\r\n }\r\n\r\n isSendPasswordButtonHiddenForUser(): boolean {\r\n return !this.authorizationService.isSendingPasswordToUserAllowed();\r\n }\r\n\r\n isRequiredFieldFilled(): boolean {\r\n if (!this.view['name'] ||\r\n (!this.hasAccessToAllPlacements(this.view['profileId']) && (!this.view['placements'] || (this.view['placements'] as PlacementModel[]).length == 0)) || // Se não tem acesso a todas, tem que selecionar ao menos uma\r\n !this.view['profileId'] ||\r\n !this.view['login'] ||\r\n (!this.isProfessionalProfile() && !this.view['email']) ||\r\n !this.view['company'] ||\r\n !this.view['originPlacement'] ||\r\n (!this.isCreating() && this.getAppAccess() && !this.passwordHide && !this.view['password'])) { // Só testa senha como obrigatório se não está criando, e tem acesso ao App, e usuário clicou em Redefinir senha \r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['name']) names.push('Nome');\r\n if (!this.hasAccessToAllPlacements(this.view['profileId']) && (!this.view['placements'] || (this.view['placements'] as PlacementModel[]).length == 0)) names.push('Outras Lotações Acessadas');\r\n if (!this.view['profileId']) names.push('Perfil');\r\n if (!this.view['login']) names.push(this.isProfessionalProfile() ? 'Login App': 'Chave Petrobras');\r\n if (!this.isProfessionalProfile() && !this.view['email']) names.push('E-mail');\r\n if (!this.view['company']) names.push('Empresa');\r\n if (!this.view['originPlacement']) names.push('Lotação de Origem');\r\n if (!this.isCreating() && this.getAppAccess() && !this.passwordHide && !this.view['password']) names.push('Senha App'); \r\n return names;\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n this.model['name'] = null;\r\n this.model['login'] = null;\r\n this.model['email'] = null;\r\n this.model['patrolTeamId'] = null;\r\n this.model['lastLogin'] = null;\r\n }\r\n\r\n /**\r\n * Verifica se o usuário possui permiso para deletar \"alguns perfis\"(lista)\r\n * Em caso positivo, os botões para deletar usuário é escondido para usuários que não tiverem o mesmo perfil do usuário na lista,\r\n * ou seja, não estiverem marcados na seleção de perfis que o usuário pode alterar\r\n */\r\n canDelete(){\r\n if (!this.model) return false;\r\n\r\n // Verifica se o usuário logado pode modificar o perfil do usuário sendo editado\r\n if(this.authorizationService.canDeleteUser((this.model as UserModel).profileId)) \r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n canEdit(){\r\n if (!this.model) return false;\r\n\r\n // Verifica se o usuário logado pode modificar o perfil do usuário sendo editado\r\n if(this.authorizationService.canEditUser((this.model as UserModel).profileId))\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n postEntityDeleteProcess(entity: EntityModel) {\r\n const user = entity as UserModel;\r\n if (user.patrolTeamId) {\r\n this.markerService.sendTeamInfoMessage(this.loggedUser, user.patrolTeamId, \"Usuário \\\"\" + user.name + \"\\\" removido da Equipe pois foi removido.\");\r\n }\r\n }\r\n \r\n onPasswordSendClick() {\r\n let user = this.model as UserModel;\r\n if (!user.email) {\r\n this.toastr.warning('Não foi possível enviar o email. Verifique se o usuário tem email válido cadastrado.', 'Atenção!');\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: 'Enviar a senha por email deste usuário?',\r\n title: 'Enviar Senha',\r\n okLabel: 'Enviar',\r\n identifier: user.login + ' - ' + user.email,\r\n showIdentifier: true\r\n }\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.logger.debug('ListComponent.onPasswordSendClick()');\r\n this.userService.sendEmailWithPassword(user).pipe(first()).subscribe( (user: UserModel) => {\r\n if(user!=null){\r\n this.logger.debug(`Email enviado para : ${user.email}`);\r\n this.toastr.success('Senha enviada com sucesso para o usuário: ' + user.login);\r\n }else{\r\n this.toastr.error('Não foi possível enviar o email. Verifique se o usuário tem email válido cadastrado.');\r\n } \r\n }, error => {\r\n this.toastr.warning('Não foi possível enviar o email. Verifique se o usuário tem email válido cadastrado.');\r\n this.logger.error(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Função que verifica qual perfil foi selecionado\r\n Se o perfil selecionado é administrador é desabilitada a lista de lotações\r\n */\r\n onProfileChanged(profileId): boolean{\r\n this.view['profileId'] = profileId;\r\n \r\n if(this.hasAccessToAllPlacements(this.view['profileId'])){\r\n this.disableOtherPlacements = true;\r\n this.view['placements'] = this.copyModel(this.entityCacheService.getPlacements()); // Seleciona todos as lotações\r\n }\r\n else{\r\n this.listPlacements.unSelectAll();\r\n this.view['placements'] = [];\r\n this.disableOtherPlacements = false;\r\n this.onOriginPlacementChanged('event');\r\n }\r\n \r\n this.updateAppAccess();\r\n \r\n return this.disableOtherPlacements;\r\n }\r\n\r\n /**O usuário logado não pode editar o campo perfil, Lotaçoes de origem e lotações\r\n * Se o usuário é administrador ou diferente ao usuário logado, é habilitado o campo perfil */\r\n canProfileEditField(): boolean {\r\n\r\n if(!this.model) return true;\r\n \r\n if(this.authorizationService.isAdmin()) return true;\r\n \r\n if(this.loggedUser.id === this.model.id) \r\n return false;\r\n else\r\n return true;\r\n }\r\n\r\n onHistoricalTrackingClick() {\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingUser: this.model});\r\n }\r\n\r\n getAllowedProfiles() {\r\n // Só administrador pode criar administrador \r\n if (this.authorizationService.isAdmin()) {\r\n return this.entityCacheService.getAllProfiles();\r\n }\r\n\r\n if(this.model?.id && !this.canEdit()) { // o usuário existe e a tela está readonly\r\n return this.entityCacheService.getAllProfiles()\r\n }\r\n\r\n let profiles = this.entityCacheService.getProfiles();\r\n const permissionOptions = this.authorizationService.getUserPermissionOptions(Permission.CREATE_EDIT_USER);\r\n \r\n if (permissionOptions && permissionOptions.option == PermisionRuleOption.SOME_PROFILE) {\r\n profiles = profiles.filter(profile => permissionOptions.fields.includes(profile.id));\r\n } \r\n \r\n return profiles;\r\n \r\n }\r\n\r\n private subscribeToProfileReload() {\r\n this.reloadProfilesSubscription = this.entityCacheService.onProfilesReload().subscribe(() => {\r\n // Os perfis foram recarregados\r\n this.updateAppAccess();\r\n });\r\n }\r\n \r\n onOriginPlacementChanged(event){\r\n const newOriginPlacement = this.view['originPlacement']\r\n if(!newOriginPlacement)\r\n return; \r\n\r\n if(this.view['placements']?.length > 0){ // edição de usuário com placements\r\n const found = this.view['placements'].find(placement => placement.id === newOriginPlacement.id);\r\n if(!found){\r\n this.view['placements'].push(newOriginPlacement);\r\n }\r\n }else{ // usuário novo\r\n this.view['placements'] = [newOriginPlacement];\r\n this.listPlacements.toggleSelection(newOriginPlacement);\r\n }\r\n this.listPlacements.onClosedEvent(event);\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n {{modelName + (isCreating()? ': [NOVO]':'')}}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
Identificação
\r\n \r\n
\r\n
\r\n\r\n \r\n Nome\r\n \r\n Campo Obrigatório\r\n \r\n\r\n \r\n E-mail\r\n \r\n Formato de e-mail inválido\r\n Campo Obrigatório\r\n \r\n\r\n \r\n CPF\r\n \r\n Entre apenas com números, ponto e hífen\r\n \r\n\r\n \r\n Celular\r\n \r\n Entre apenas com números, espaço ou hífen\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
Perfil de Acesso
\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n \r\n \r\n
\r\n \r\n Acesso ao App\r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n {{isProfessionalProfile() ? 'Login App': 'Chave Petrobras'}}\r\n \r\n Campo Obrigatório\r\n \r\n \r\n \r\n \r\n {{hide ? 'visibility_off' : 'visibility'}}\r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n Equipe\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n","import { Component, OnInit, Inject, OnDestroy } from '@angular/core';\r\nimport { FormService } from 'src/app/service/model/form.service';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { FormFilterModel } from './form.filter.model';\r\nimport { SORT_NAME_ASC } from 'src/app/common/constants';\r\nimport { FormModel } from 'src/app/model/form.model';\r\nimport { LoadingListService } from 'src/app/service/loading/loading-list.service';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { first } from 'rxjs/operators';\r\n\r\n\r\n@Component({\r\n selector: 'app-form-filter-dialog',\r\n templateUrl: './form-filter-dialog.component.html',\r\n styleUrls: ['./form-filter-dialog.component.scss']\r\n})\r\nexport class FormFilterDialogComponent implements OnInit, OnDestroy {\r\n\r\n loadingListService = new LoadingListService();\r\n\r\n constructor( private formService: FormService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n protected logger: NGXLogger,\r\n public dialogRef: MatDialogRef,\r\n public filterModel: FormFilterModel,\r\n @Inject(MAT_DIALOG_DATA) public inMemoryFilterModel: FormFilterModel) {\r\n }\r\n\r\n ngOnInit() {\r\n this.loadFormOptionsData();\r\n \r\n this.filterModel = new FormFilterModel();\r\n this.updateFilterModel(this.inMemoryFilterModel, this.filterModel);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.loadingListService.destroy();\r\n }\r\n\r\n onFilter(){\r\n this.updateFilterModel(this.filterModel, this.inMemoryFilterModel);\r\n\r\n this.loadingListService.loadingOn();\r\n this.formService.loadFilteredListFromRestApi(null, null, SORT_NAME_ASC, this.inMemoryFilterModel).pipe(first()).subscribe( (forms : FormModel[]) => {\r\n this.dialogRef.close(forms);\r\n },\r\n error => this.logger.error(error),\r\n () => {\r\n this.loadingListService.loadingOff();\r\n });\r\n }\r\n\r\n clearFilter(){\r\n this.filterModel.name = undefined;\r\n this.filterModel.placement = undefined;\r\n this.filterModel.inspectionType = undefined;\r\n }\r\n\r\n private loadFormOptionsData() {\r\n const metadatas: string[] = [\r\n \"InspectionType\"];\r\n\r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n\r\n getShowSpinner() {\r\n return this.loadingListService.getShowSpinner();\r\n }\r\n\r\n /**\r\n * Atualiza o filtro em memória\r\n */\r\n updateFilterModel(sourceFilter: FormFilterModel, targetFilter: FormFilterModel){\r\n for(const key in sourceFilter){\r\n targetFilter[key] = sourceFilter[key];\r\n }\r\n }\r\n}\r\n","
\r\n Filtrar Formulários\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n Nome\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n \r\n Lotação\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n\r\n \r\n \r\n \r\n\r\n","import {LocationModel} from './location.model';\r\nimport { InspectionStatusType, PointType } from './enums.enum';\r\nimport { InspectionFormModel } from './inspection.form.model';\r\n\r\nexport class InspectionModel {\r\n identifier: string; // Id gerado manualmente quando a operação é salva (criada ou atualizada)\r\n status: string;\r\n timestamp: number;\r\n name: string; // The full name of inspection point, i.e. band name, km, meters (e.g. FAIXA ORBEL KM 004+950).\r\n location: LocationModel; // The point for the inspection\r\n activities: Array; // The activities of the Inspection\r\n type: string; // CRITICAL_POINT ou BASE (é o que identifica uma base)\r\n\r\n inspectionPointId: string; // Preenchido se o ponto foi importado do cadastro de pontos (InspectionPointModel.identifier)\r\n inspectionPointNoAccess: boolean;\r\n\r\n band: string;\r\n km: string;\r\n city: string;\r\n state: string;\r\n \r\n number: string; // Só é usado na web, para salvar o número do ponto sem acesso\r\n\r\n inspectionForms: InspectionFormModel[]; // lista de formulários publicados, inicia vazia\r\n\r\n id_layer: number; // temporary id layer use only with markers and in the web\r\n\r\n constructor(){\r\n this.location = new LocationModel();\r\n this.status = InspectionStatusType.NOT_STARTED;\r\n this.type = PointType.CRITICAL_POINT;\r\n this.inspectionPointNoAccess = false;\r\n }\r\n}\r\n","/* tslint:disable:import-spacing */\r\nimport { Component, OnDestroy, ChangeDetectorRef, Inject, OnInit, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {NGXLogger} from 'ngx-logger';\r\nimport {FilterPipe} from 'ngx-filter-pipe';\r\nimport {PatrolModel} from '../../../model/patrol.model';\r\nimport {PatrolService} from '../../../service/model/patrol.service';\r\nimport {environment} from '../../../../environments/environment';\r\nimport {OperationStatus, OperationType, Permission, UserType} from 'src/app/model/enums.enum';\r\nimport * as moment from 'moment';\r\nimport {RouteGeographicalService} from '../../../service/model/route-geographical-service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { PointService } from 'src/app/service/model/point.service';\r\nimport { OperationEditComponent } from '../../operation-edit.component';\r\nimport { PatrolRepetitionEditDialogComponent } from '../patrol-repetition-edit-dialog/patrol-repetition-edit-dialog.component';\r\nimport { first } from 'rxjs/operators';\r\nimport { PatrolRepetitionModel } from 'src/app/model/patrol.repetition.model';\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\nimport { SAVE_DATA_PREFIX, LatLongPattern, LatLongMask } from '../../../common/constants';\r\nimport { EntityModel } from '../../../model/entity.model';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { saveAs } from 'file-saver/dist/FileSaver';\r\nimport { ResultOccurrenceDescription } from '../../../model/enums.enum';\r\nimport FieldUtils from '../../../service/util/field-utils';\r\nimport { ResultsModel } from '../../../model/results.model';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\n\r\n@ProfileClassToConsole()\r\n@Component({\r\n selector: 'app-patrol-edit',\r\n templateUrl: './patrol-edit.component.html',\r\n styleUrls: [ '../../../app.component.scss', './patrol-edit.component.scss'],\r\n})\r\nexport class PatrolEditComponent extends OperationEditComponent implements OnInit, OnDestroy {\r\n\r\n referencePatrolId;\r\n savePredictedOption;\r\n\r\n resultOccurrenceDescription = ResultOccurrenceDescription;\r\n latLongMask = LatLongMask;\r\n latLongPattern = LatLongPattern;\r\n\r\n disabledPlannerField : boolean = true;\r\n\r\n isHiddenButtonCreateEditPatrol: boolean;\r\n isHiddenButtonDeletePatrol: boolean;\r\n isHiddenButtonEditForUser: boolean;\r\n \r\n constructor(logger: NGXLogger,\r\n public patrolService: PatrolService,\r\n public entityCacheService: EntityCacheService,\r\n public singleDataCacheService:SingleDataCacheService,\r\n protected filter: FilterPipe,\r\n protected routeGeographicalObjectService: RouteGeographicalService,\r\n dialog: MatDialog,\r\n protected changeDetector: ChangeDetectorRef,\r\n toastr: ToastrService,\r\n protected storageService: StorageService,\r\n authorizationService: AuthorizationService,\r\n protected pointService: PointService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, OperationType.PATROL, patrolService, dialog,\r\n environment.PATROL_MODEL_LABEL, environment.PATROL_TITLE_LABEL, storageService,\r\n 'patrols-edit', environment.PATROL_GROUP_LABEL, entityCacheService,\r\n routeGeographicalObjectService, changeDetector,\r\n toastr, authorizationService, pointService, goldenLayout, container);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.logger.debug('PatrolEditComponent.ngOnInit()');\r\n\r\n this.disabledPlannerField = !this.entityCacheService.isAdminProfile(this.loggedUser.profileId);\r\n }\r\n\r\n createData(options?) {\r\n this.logger.debug('PatrolEditComponent.createData()');\r\n\r\n this.model = new PatrolModel();\r\n this.view = {};\r\n\r\n this.createOperationData();\r\n\r\n let startDate = moment();\r\n this.view['startDate'] = startDate.format('DD/MM/yyyy');\r\n this.view['startTime'] = startDate.format('HH:mm');\r\n\r\n this.glUpdateTabTitle(this.modelName + ': [NOVA]');\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n const startDate = (new Date()).getTime();\r\n this.model['startDate'] = startDate;\r\n this.model['dateSendedSituationFound'] = null;\r\n this.model['result'] = null;\r\n }\r\n\r\n mapViewToModel() {\r\n super.mapViewToModel();\r\n\r\n this.logger.debug('PatrolEditComponent.mapViewToModel()');\r\n\r\n const startDate = DateUtils.stringDateTimeToTimestamp(this.view['startDate'], this.view['startTime'], true);\r\n this.model['startDate'] = startDate;\r\n\r\n if (this.view['dateSituationFound']) { \r\n const createdDate = DateUtils.stringDateToTimestamp(this.view['dateSituationFound']);\r\n this.model['dateSituationFound'] = createdDate;\r\n }\r\n\r\n if (this.view['dateSendedSituationFound']) { \r\n const createdDate = DateUtils.stringDateToTimestamp(this.view['dateSendedSituationFound']);\r\n this.model['dateSendedSituationFound'] = createdDate;\r\n }\r\n }\r\n\r\n initializeFields(){\r\n this.view['result'] = new ResultsModel();\r\n let date = moment();\r\n this.view['startDate'] = date.format('DD/MM/yyyy');\r\n super.initializeFields();\r\n }\r\n\r\n mapModelToView(){\r\n this.logger.debug('PatrolEditComponent.mapModelToView()');\r\n\r\n super.mapModelToView();\r\n\r\n let startDate = moment(this.model['startDate']);\r\n this.view['startDate'] = startDate.format('DD/MM/yyyy');\r\n this.view['startTime'] = startDate.format('HH:mm');\r\n\r\n if (!this.model['result']) {\r\n this.view['result'] = new ResultsModel();\r\n } \r\n if (this.model['dateSituationFound']) {\r\n let createdMoment = moment(this.model['dateSituationFound']);\r\n this.view['dateSituationFound'] = createdMoment.format('DD/MM/yyyy HH:mm');\r\n }\r\n if (this.model['dateSendedSituationFound']) {\r\n let createdMoment = moment(this.model['dateSendedSituationFound']);\r\n this.view['dateSendedSituationFound'] = createdMoment.format('DD/MM/yyyy HH:mm');\r\n }\r\n\r\n }\r\n\r\n isRequiredFieldFilled(): boolean {\r\n if (!this.view['author'] || // planejador\r\n !this.view['name'] ||\r\n !this.view['startDate'] ||\r\n !this.view['startTime'] ||\r\n !this.view['placement'] ||\r\n !this.view['company'] ||\r\n !this.view['serviceType'] ||\r\n !this.view['patrolTeam'] || !this.view['patrolTeam'].name ||\r\n !(DateUtils.stringDateTimeToTimestamp(this.view['startDate'], this.view['startTime'], true)) ||\r\n !this.hasNonBasePoint() ||\r\n !this.isInspectionsFilled()) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['author']) names.push('Planejador');\r\n if (!this.view['name']) names.push('Nome da Ronda');\r\n if (!this.view['startDate']) names.push('Data');\r\n if (!this.view['startTime']) names.push('Hora');\r\n if (!this.view['placement']) names.push('Lotação');\r\n if (!this.view['company']) names.push('Empresa');\r\n if (!this.view['serviceType']) names.push('Tipo de Serviço');\r\n if (!this.view['patrolTeam'] || !this.view['patrolTeam'].name) names.push('Equipe');\r\n if (!this.hasNonBasePoint()) names.push('1 ponto que não seja base');\r\n if (!this.isInspectionsFilled()) names.push('Pontos sem Faixa ou KM');\r\n return names;\r\n }\r\n\r\n afterLoadData(options){\r\n this.model['type'] = OperationType.PATROL;\r\n this.updateAttachmentData(); // carrega os arquivos anexo do patrol\r\n\r\n if(options?.predicted){\r\n this.referencePatrolId = options.referencePatrolId;\r\n this.clearCopyData();\r\n this.model['startDate'] = options.startDate;\r\n this.model['identifier'] = \"[PREVISTA]\";\r\n }\r\n }\r\n\r\n savePredictedPatrol() {\r\n const dialogRef = this.dialog.open(PatrolRepetitionEditDialogComponent, {\r\n panelClass: 'sipd-modal',\r\n data: true\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe( (result) => {\r\n if(result == false || result == undefined) {\r\n return;\r\n }\r\n\r\n this.savePredictedOption = result; // Nesse caso, precisamos usar esse valor depois que a ronda foi salva\r\n\r\n this.isSaving = true;\r\n this.backupModel = this.copyModel(this.model);\r\n this.mapViewToModel();\r\n\r\n this.saveCreatedModel();\r\n });\r\n }\r\n\r\n saveReferencePatrol(saveClickEvent) {\r\n const dialogRef = this.dialog.open(PatrolRepetitionEditDialogComponent, {\r\n panelClass: 'sipd-modal',\r\n data: false\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe( (result) => {\r\n if(result == false || result == undefined) {\r\n return;\r\n }\r\n\r\n if(result === 'justThisPatrol'){\r\n // Remove a ronda antiga, a repetição ainda tem acesso a ela\r\n this.patrolService.delete(this.model).pipe(first()).subscribe(() => {});\r\n let deletedPatrol = this.copyModel(this.model);\r\n setTimeout(() => {\r\n this.glEmitEvent(SAVE_DATA_PREFIX + \"patrols-edit\", {entity: deletedPatrol}); // Isso fará com que a lista seja recarregada\r\n }, 2500);\r\n\r\n // Salva uma cópia com as modificações, e sem ser uma ronda de referência\r\n this.id = null;\r\n this.view['id'] = null;\r\n this.view['identifier'] = null;\r\n this.view['patrolRepetitionId'] = null;\r\n super.onSaveClick(saveClickEvent);\r\n }\r\n else if(result === 'fromThisPatrol'){\r\n super.onSaveClick(saveClickEvent);\r\n }\r\n });\r\n }\r\n\r\n replaceRunTimeData(data){\r\n // Substitui mudanças dinamicas, que independem da edição do usuário\r\n this.replaceModelViewData(data, 'patrolRepetitionId');\r\n this.replaceModelViewDateData(data, 'dateSituationFound');\r\n this.replaceModelViewDateData(data, 'dateSendedSituationFound');\r\n\r\n super.replaceRunTimeData(data);\r\n }\r\n\r\n onSaveClick(saveClickEvent) {\r\n this.logger.debug('PatrolEditComponent.onSaveClick()');\r\n\r\n // Necessary to avoid the form to be submitted before attaching the KML files\r\n saveClickEvent?.preventDefault();\r\n\r\n if(this.referencePatrolId){\r\n this.savePredictedPatrol();\r\n return;\r\n }\r\n\r\n let patrol: PatrolModel = this.model as PatrolModel;\r\n if(patrol.patrolRepetitionId){\r\n this.saveReferencePatrol(saveClickEvent);\r\n return;\r\n }\r\n\r\n super.onSaveClick(saveClickEvent);\r\n }\r\n\r\n onExportClick() {\r\n this.loadingListService.loadingOn();\r\n this.patrolService.exportPatrol(this.model as PatrolModel).pipe(first()).subscribe(response => {\r\n this.loadingListService.loadingOff();\r\n\r\n let filename = `${(this.model as PatrolModel).identifier}.zip`;\r\n filename = filename.replace(/[\\x00-\\x1f?<>:\"/\\\\*|]/g, '_');\r\n saveAs(response, filename);\r\n },\r\n error =>{\r\n this.loadingListService.loadingOff();\r\n this.logger.error(error);\r\n });\r\n }\r\n\r\n isPredicted(entity: EntityModel){\r\n let operation: OperationModel = entity as OperationModel;\r\n if(operation?.identifier?.endsWith('PREVISTA')) {\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n hasArchivalRequirements(patrol: PatrolModel){\r\n if (this.isPredicted(patrol)) {\r\n return false;\r\n }\r\n\r\n if(patrol.status != OperationStatus.FINISHED){ // Verifica se o status é Concluído\r\n return false;\r\n }\r\n\r\n if(this.authorizationService.isControl()){ // Se for perfil ANALYSIS_CCPD, verifica se as rondas foram criados por ele\r\n if(!patrol.author || patrol.author.id !== this.loggedUser.id.toString()){\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // Chamada depois que a ronda foi criada\r\n operationCreated(entity){\r\n // Aqui process apenas as rondas previstas que são editadas e salvas\r\n if(!this.referencePatrolId){\r\n return;\r\n }\r\n\r\n this.patrolService.getPatrolRepetitionByReferencePatrolId(this.referencePatrolId).pipe(first()).subscribe((result:PatrolRepetitionModel) => {\r\n this.logger.debug(\"** Sucesso: Obter regra de repetição da ronda \");\r\n\r\n if(this.savePredictedOption === 'justThisPatrol'){\r\n this.editJustThisPatrol(result);\r\n }\r\n else if(this.savePredictedOption === 'fromThisPatrol'){\r\n this.editFromThisPatrol(result, entity);\r\n }\r\n this.savePredictedOption = null;\r\n\r\n },err => {\r\n this.toastr.error(\"Falha ao buscar regra de repetição para a ronda \", \"Erro\");\r\n this.logger.error(JSON.stringify(err));\r\n });\r\n }\r\n\r\n editJustThisPatrol(patrolRepetition:PatrolRepetitionModel){\r\n // Apenas exclui a ronda prevista da repetição, pois ela já foi criada\r\n let excludedDate: number = DateUtils.getStartOfDayUTC(this.model['startDate']);\r\n if(patrolRepetition.excludedRepetitions == null) patrolRepetition.excludedRepetitions = [];\r\n patrolRepetition.excludedRepetitions.push(excludedDate.toString());\r\n\r\n this.patrolService.updatePatrolRepetition(patrolRepetition).pipe(first()).subscribe((result:PatrolRepetitionModel) => {\r\n this.logger.debug(\"** Sucesso patrolRepetition ID = \" + patrolRepetition.id + \" StartDate = \" + moment(patrolRepetition.startDate).format('DD/MM/YYYY HH:mm'));\r\n this.toastr.success(\"Atualização de repetição de rondas realizada com sucesso\",\"Sucesso\");\r\n this.glEmitEvent(\"updatePatrolRepetitionList\", null);\r\n }\r\n ,err => {\r\n this.toastr.error(\"** Falha ao editar regra de repetição para a ronda \", \"Erro\");\r\n this.logger.error(JSON.stringify(err));\r\n });\r\n }\r\n\r\n editFromThisPatrol(oldPatrolRepetition:PatrolRepetitionModel, patrol: PatrolModel){\r\n // Usa a ronda criada como ronda de referência\r\n\r\n //copia da repetição original\r\n let newPatrolRepetition = this.copyModel(oldPatrolRepetition) as PatrolRepetitionModel;\r\n\r\n newPatrolRepetition.referencePatrolId = patrol.id;\r\n newPatrolRepetition.referencePatrolIdentifier = patrol.identifier;\r\n newPatrolRepetition.id = null;\r\n\r\n //set dataStart e hora da nova regra baseada na nova ronda de referência\r\n newPatrolRepetition.startDate = moment(patrol.startDate).startOf('day').valueOf(); // Horário local\r\n newPatrolRepetition.startTime = moment(patrol.startDate).format(\"HH:mm\");\r\n\r\n // Remove a ronda criada da repetição\r\n let excludedDate: number = DateUtils.getStartOfDayUTC(patrol.startDate);\r\n\r\n newPatrolRepetition.excludedRepetitions = [];\r\n newPatrolRepetition.excludedRepetitions.push(excludedDate.toString());\r\n\r\n for(const excluded of oldPatrolRepetition.excludedRepetitions) {\r\n if (moment(parseInt(excluded)).isAfter(excludedDate)) {\r\n newPatrolRepetition.excludedRepetitions.push(excluded);\r\n }\r\n }\r\n\r\n // Atualiza ronda antiga para terminar 1 dia antes da data da nova ronda\r\n let endDate = moment(patrol.startDate).add(-1,'days').startOf('day'); // Horário local\r\n\r\n // Se possui um número de repetição, esse número precisa ser atualizado\r\n if(newPatrolRepetition.afterNumberRepetitionsToFinish && newPatrolRepetition.eachPeriod){\r\n let oldStartDate = moment(oldPatrolRepetition.startDate).startOf('day'); // Horário local\r\n let unitPeriod = newPatrolRepetition.unitPeriodSelected as moment.unitOfTime.DurationConstructor;\r\n let eachQuantity = newPatrolRepetition.theEachQuantity;\r\n\r\n // Decrementa as repetições que já aconteceram\r\n while(endDate.isAfter(oldStartDate)){\r\n newPatrolRepetition.afterRepetitionQuantity -= 1;\r\n oldStartDate = oldStartDate.add(eachQuantity, unitPeriod);\r\n }\r\n }\r\n\r\n oldPatrolRepetition.endDate = endDate.valueOf();\r\n oldPatrolRepetition.finishDate = true;\r\n oldPatrolRepetition.neverFinish = false;\r\n oldPatrolRepetition.afterNumberRepetitionsToFinish = false;\r\n oldPatrolRepetition.afterRepetitionQuantity = 0;\r\n\r\n let updatePatrolRepetitionPromise = this.patrolService.updatePatrolRepetition(oldPatrolRepetition).toPromise();\r\n let createPatrolRepetitionPromise = this.patrolService.createPatrolRepetition(newPatrolRepetition).toPromise();\r\n\r\n Promise.all([updatePatrolRepetitionPromise, createPatrolRepetitionPromise])\r\n .then(()=>{\r\n this.logger.debug(\"** Sucesso oldPatrolRepetition ID = \" + oldPatrolRepetition.id + \" StartDate = \" + moment(oldPatrolRepetition.startDate).format('DD/MM/YYYY HH:mm'));\r\n this.logger.debug(\"** Sucesso newPatrolRepetition ID = \" + newPatrolRepetition.id + \" StartDate = \" + moment(newPatrolRepetition.startDate).format('DD/MM/YYYY HH:mm'));\r\n this.toastr.success(\"Atualização de repetição de rondas realizada com sucesso\",\"Sucesso\");\r\n this.glEmitEvent(\"updatePatrolRepetitionList\", null);\r\n },\r\n error => {\r\n this.toastr.error(\"Falha ao editar repetição\", \"Erro\");\r\n this.logger.error(JSON.stringify(error));\r\n });\r\n }\r\n\r\n canHasHistoricalTracking(){\r\n if(this.isPredicted(this.model)) {\r\n return false;\r\n }\r\n return super.canHasHistoricalTracking();\r\n }\r\n\r\n protected getRecord(id: string, extraParams?: Map, options?: any) {\r\n if(options?.predicted){\r\n return this.patrolService.getReferencePatrolById(id); // Se a Ronda editada for prevista a Ronda de Referência pode ter sido removida,\r\n // daí um end point específico para Rondas Previstas\r\n }\r\n else {\r\n return this.entityService.getRecord(id, this.getExtraParams());\r\n }\r\n }\r\n\r\n loadFormOptionsData() {\r\n super.loadFormOptionsData();\r\n\r\n this.logger.debug('PatrolEditComponent.loadFormOptionsData()');\r\n\r\n const metadatas: string[] = [\r\n \"InspectionType\",\r\n \"Band\",\r\n \"Duct\",\r\n \"PipeStretch\",\r\n \"Valve\"];\r\n\r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n\r\n onPasteLatLong(event: ClipboardEvent, name: string){\r\n let pastedValue = FieldUtils.pasteLatLong(event, this.view[name]);\r\n if (pastedValue != null) {\r\n this.view[name] = pastedValue;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n onPasteResultLatLong(event: ClipboardEvent, name: string){\r\n let pastedValue = FieldUtils.pasteLatLong(event, this.view['result'][name]);\r\n if (pastedValue != null) {\r\n this.view['result'][name] = pastedValue;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n isPatrolDeletionPermitted() {\r\n return this.authorizationService.isPatrolDeletionAllowed(this.model);\r\n }\r\n\r\n checkPermissions(){\r\n this.isHiddenButtonCreateEditPatrol = !this.authorizationService.userHasPermission(Permission.CREATE_EDIT_PATROL);\r\n this.isHiddenButtonDeletePatrol = !this.authorizationService.userHasPermission(Permission.DELETE_PATROL);\r\n this.isHiddenButtonEditForUser = !this.authorizationService.userHasPermission(Permission.CREATE_EDIT_PATROL);\r\n }\r\n}\r\n","
\r\n\r\n
\r\n {{modelName}}: {{view['identifier']}}\r\n
\r\n {{ getOperationStatus() }}\r\n (expirada)\r\n repeat\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n
\r\n \r\n\r\n \r\n\r\n
\r\n \r\n \r\n\r\n \r\n Nome da Ronda\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n Hora de Início\r\n \r\n query_builder\r\n Campo Obrigatório\r\n \r\n\r\n
\r\n Bloqueada\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n Profissional 1\r\n \r\n \r\n\r\n \r\n Profissional 2\r\n \r\n \r\n\r\n \r\n Profissional 3\r\n \r\n \r\n\r\n \r\n Turno\r\n \r\n \r\n\r\n \r\n Placa\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n Coordenador\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n Notas do planejador\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n KM\r\n \r\n Formato inválido para KM.\r\n \r\n\r\n \r\n \r\n KM (Lat, Long)\r\n \r\n Formato inválido para KM (Lat, Long).\r\n \r\n\r\n \r\n \r\n Início Trecho (KM)\r\n \r\n Formato inválido o Início do trecho (KM).\r\n \r\n\r\n \r\n \r\n Fim Trecho (KM)\r\n \r\n Formato inválido o Fim do trecho (KM).\r\n \r\n\r\n \r\n \r\n Início Trecho (Lat, Long)\r\n \r\n Formato inválido o Início do trecho (Lat, Long).\r\n \r\n\r\n \r\n \r\n Fim Trecho (Lat, Long)\r\n \r\n Formato inválido o Fim do trecho (Lat, Long).\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n Pontos\r\n
\r\n
\r\n Rota Automatizada\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Base \r\n \r\n \r\n Num.\r\n {{i + 1}} ID {{element?.inspectionPointId}} Faixa {{element?.band}} Lat, Long {{element?.location?.latitude + \", \" + element?.location?.longitude}} KM {{element?.km}} Cidade {{element?.city}} UF {{element?.state}} Atividades {{formatPointActivities(element?.activities)}} Status {{inspectionStatusTypeDescription[element?.status]}} Sem Acesso {{element?.inspectionPointNoAccess ? 'Sim': 'Não'}} Form. Preen. {{element?.inspectionForms && element?.inspectionForms.length > 0? 'Sim': 'Não'}}
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n KM Ocorrência\r\n \r\n Formato inválido para o KM da Ocorrência.\r\n \r\n \r\n \r\n Lat, Long Ocorrência\r\n \r\n Formato inválido para o Lat, Long da Ocorrência.\r\n \r\n\r\n \r\n \r\n Pontos Planejados\r\n \r\n \r\n\r\n \r\n \r\n Pontos Executados\r\n 0 ? finishedPoints : '0'\" placeholder=\"Pontos Executados\" matTooltip=\"{{ 'Quantidade de pontos que não tem acesso ou foram inspecionados (dentro da cerca eletrônica)' }}\" readonly>\r\n \r\n\r\n \r\n \r\n Diferença de Pontos\r\n \r\n \r\n\r\n \r\n \r\n Data/Hora Quadro Encontrado (Enviado) \r\n \r\n \r\n\r\n \r\n \r\n Data/Hora Quadro Encontrado (Recebido) \r\n \r\n \r\n\r\n
\r\n \r\n Quadro Encontrado\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n Pontos sem acesso\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
Num.\r\n {{element?.number}} Faixa {{element?.band}} KM {{element?.km}} Lat, Long {{element?.location?.latitude + \", \" + element?.location?.longitude}}
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","\r\nexport enum ArchivedType{\r\n ALL,\r\n ARCHIVED,\r\n NON_ARCHIVED\r\n}\r\n\r\nexport class FilterModel {\r\n archived: ArchivedType;\r\n current: boolean;\r\n startDate: number;\r\n endDate: number;\r\n status: string[];\r\n // Usado para o perfil nas listas \r\n placements: string[] = []; \r\n associatedEventId: string; // usado para filtro de eventos asociados\r\n\r\n // por enquanto são somente utilizados por eventos e verificações, ainda não usados para rondas\r\n analysts: string[];\r\n ducts: string[];\r\n valves: string[];\r\n\r\n constructor(){\r\n this.current = false;\r\n this.archived = ArchivedType.NON_ARCHIVED;\r\n }\r\n}\r\n","import { Component, OnInit, Inject, OnDestroy } from '@angular/core';\r\nimport { KeyValue } from '@angular/common';\r\nimport { CrudType, EvidenceRequirement, EvidenceRequirementDescription, QuestionType, NodeTypeDescription } from 'src/app/model/enums.enum';\r\nimport { QuestionModel } from 'src/app/model/question.model';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { FormService } from '../../../../service/model/form.service';\r\nimport { FormModel } from '../../../../model/form.model';\r\n\r\n/** Classe usada para comunicação com o diálogo de CRUD de perguntas */\r\nexport class QuestionCrudData{\r\n formModel : FormModel;\r\n quizNode: QuestionModel;\r\n crudType: CrudType;\r\n\r\n constructor( crudType: CrudType){ \r\n this.crudType = crudType; \r\n }\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'app-question-form',\r\n templateUrl: './question-form.component.html',\r\n styleUrls: ['./question-form.component.scss']\r\n})\r\nexport class QuestionFormComponent implements OnInit, OnDestroy {\r\n /** Colunas exibidas na tabela de referências */\r\n public displayedColumns: string[];\r\n\r\n /** Cópia do nó da árvore a ser editado ou inserido */\r\n public formQuizNode: QuestionModel;\r\n\r\n \r\n /** ENUM */\r\n public filteredNodeType: QuestionType[];\r\n public crudType = CrudType;\r\n public nodeType = QuestionType;\r\n public nodeTypeDescription = NodeTypeDescription;\r\n public evidenceRequirement = EvidenceRequirement;\r\n public evidenceRequirementDescription = EvidenceRequirementDescription;\r\n \r\n constructor(private dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: QuestionCrudData,\r\n private logger: NGXLogger,\r\n private formService: FormService) \r\n { }\r\n\r\n \r\n ngOnDestroy(): void {\r\n this.logger.info('**** QuestionFormComponent - ngOnDestroy()');\r\n \r\n } \r\n ngOnInit(): void {\r\n this.logger.info('**** QuestionFormComponent - ngOnInit()');\r\n\r\n this.displayedColumns = ['select', 'label', 'item'];\r\n this.filteredNodeType = [QuestionType.YESNO, QuestionType.TEXT, QuestionType.NUMBER, QuestionType.ACTIVEINACTIVE, QuestionType.VIOLATEDCOMPLETE]; \r\n\r\n this.initializeForm();\r\n }\r\n\r\n /** Inicializa o formQuizNode (model em edição/inserção) */\r\n private initializeForm(){\r\n if(this.data.crudType == CrudType.ADD){\r\n this.formQuizNode = this.formService.createQuizNode('', QuestionType.YESNO);\r\n }else{\r\n if(!this.formQuizNode) this.formQuizNode = new QuestionModel();\r\n this.formService.copyQuizNode(this.data.quizNode, this.formQuizNode);\r\n }\r\n }\r\n\r\n\r\n /** Método de inserção ou edição de perguntas */\r\n upsertQuestion(){\r\n this.logger.debug('**** upsertQuestion(): Inserindo/Alterando uma pergunta');\r\n\r\n if(this.data.crudType == CrudType.EDIT){\r\n this.formService.editQuestion(this.data.quizNode, this.formQuizNode, this.data.formModel);\r\n }else{\r\n this.formService.addQuestion(this.data.quizNode, this.formQuizNode, this.data.formModel);\r\n }\r\n this.dialogRef.close(true);\r\n }\r\n\r\n /** Indica se algum campo obrigatório não foi preenchido */\r\n isMissingMandatoryField(): boolean {\r\n return (!this.formQuizNode.label.trim());\r\n }\r\n\r\n // Preserve original property order\r\n public originalOrder = (a: KeyValue, b: KeyValue): number => {\r\n return 0;\r\n }\r\n}\r\n","
\r\n {{ data?.crudType == crudType.ADD ? 'Nova' : 'Editar' }} Pergunta\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n Pergunta\r\n \r\n Campo Obrigatório\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n Anexar mídia:\r\n \r\n \r\n {{ evidenceRequirementDescription[requirement.value] }}\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n\r\n","export class LocationModel {\r\n latitude: string;\r\n longitude: string;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { FilterModel } from \"../../../../general/filter-component/filter.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class PointFilterModel extends FilterModel{\r\n band: string;\r\n stretch: string;\r\n startKm: string;\r\n endKm: string;\r\n}\r\n","
\r\n\r\n
\r\n Verificação: {{view['identifier']}}\r\n
\r\n {{ getOperationStatus() }}\r\n (expirada)\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n Evento Associado\r\n \r\n \r\n \r\n \r\n Data de Solicitação \r\n \r\n \r\n \r\n \r\n Hora de Solicitação \r\n \r\n \r\n\r\n
\r\n \r\n Prioritária\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Profissional 1\r\n \r\n \r\n\r\n \r\n Profissional 2\r\n \r\n \r\n\r\n \r\n Profissional 3\r\n \r\n \r\n\r\n \r\n Turno\r\n \r\n \r\n\r\n \r\n Placa\r\n \r\n \r\n\r\n \r\n Coordenador\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n Detalhes para a Equipe\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n KM\r\n \r\n Formato inválido para KM.\r\n \r\n\r\n \r\n \r\n KM (Lat, Long)\r\n \r\n Formato inválido para KM (Lat, Long) .\r\n \r\n\r\n \r\n \r\n Início Trecho (KM)\r\n \r\n Formato inválido o Início do trecho (KM).\r\n \r\n\r\n \r\n \r\n Fim Trecho (KM)\r\n \r\n Formato inválido o Fim do trecho (KM).\r\n \r\n\r\n \r\n \r\n Início Trecho (Lat, Long)\r\n \r\n Formato inválido o Início do trecho (Lat, Long).\r\n \r\n\r\n \r\n \r\n Fim Trecho (Lat, Long)\r\n \r\n Formato inválido o Fim do trecho (Lat, Long).\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n Pontos\r\n
\r\n
\r\n Rota Automatizada\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n Base \r\n \r\n \r\n Num.\r\n {{i + 1}} ID {{element?.inspectionPointId}} Faixa {{element?.band}} Lat, Long {{element?.location?.latitude + \", \" + element?.location?.longitude}} KM {{element?.km}} Cidade {{element?.city}} UF {{element?.state}} Atividades {{formatPointActivities(element?.activities)}} Status {{inspectionStatusTypeDescription[element?.status]}} Sem Acesso {{element?.inspectionPointNoAccess ? 'Sim': 'Não'}} Form. Preen. {{element?.inspectionForms && element?.inspectionForms.length > 0? 'Sim': 'Não'}}
\r\n\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n Data/Hora (Criação)\r\n \r\n \r\n\r\n \r\n \r\n Data/Hora (Solicitação)\r\n \r\n \r\n\r\n \r\n \r\n Data/Hora Início do Percurso\r\n \r\n \r\n\r\n \r\n \r\n Data/Hora Início da Inspeção\r\n \r\n \r\n\r\n \r\n \r\n Data/Hora Fim da Inspeção\r\n \r\n \r\n\r\n \r\n \r\n Mídia\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n Pontos Planejados\r\n \r\n \r\n\r\n \r\n \r\n Pontos Executados\r\n 0 ? finishedPoints : '0'\" placeholder=\"Pontos Executados\" matTooltip=\"{{ 'Quantidade de pontos que não tem acesso ou foram inspecionados (dentro da cerca eletrônica)' }}\" readonly>\r\n \r\n \r\n \r\n \r\n Diferença de Pontos\r\n \r\n \r\n\r\n \r\n \r\n Pontos sem Acesso\r\n \r\n \r\n \r\n \r\n \r\n KM Planejado\r\n \r\n \r\n\r\n \r\n \r\n KM Executado\r\n \r\n \r\n\r\n \r\n \r\n Diferença de KM\r\n 0 ||view['kmPlanned']>0) ? view['kmPlanned']-view['kmExecuted']: 0) | number : '1.2-2'\" placeholder=\"Diferença de KM\" readonly>\r\n \r\n\r\n \r\n \r\n Data/Hora Fim da Verificação\r\n \r\n \r\n\r\n \r\n \r\n Data/Hora App (Recebida)\r\n \r\n \r\n\r\n \r\n \r\n Data/Hora Quadro Encontrado (Enviado) \r\n \r\n \r\n\r\n \r\n \r\n Data/Hora Quadro Encontrado (Recebido) \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n\r\n
\r\n \r\n Quadro Encontrado\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n Notas\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n Informe Gerencial\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n TACCPD\r\n \r\n \r\n\r\n \r\n \r\n TACS\r\n \r\n \r\n\r\n \r\n \r\n TAPD\r\n \r\n \r\n\r\n \r\n \r\n TTA\r\n \r\n \r\n\r\n \r\n \r\n TERF\r\n \r\n \r\n\r\n \r\n \r\n TVI\r\n \r\n \r\n\r\n \r\n \r\n TSI\r\n \r\n \r\n\r\n \r\n \r\n TRIVI\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n Pontos sem acesso\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Num.\r\n {{element?.number}} Faixa {{element?.band}} KM {{element?.km}} Lat, Long {{element?.location?.latitude + \", \" + element?.location?.longitude}}
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n Notas\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n Informe Gerencial\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import { Inject, OnInit, OnDestroy } from '@angular/core';\r\nimport { Component } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { OperationType, OperationStatus, VerificationBandReleaseDescription, Permission, UserType, ServiceTypeDescription } from 'src/app/model/enums.enum';\r\nimport { VerificationModel } from 'src/app/model/verification.model';\r\nimport { RouteGeographicalService } from 'src/app/service/model/route-geographical-service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { SAVE_DATA_PREFIX, MOUSE_ENTER_TIME, EvaluationValues } from 'src/app/common/constants';\r\nimport { ConfirmationDialogComponent } from '../../../general/confirmation-dialog/confirmation-dialog.component';\r\nimport { saveAs } from 'file-saver/dist/FileSaver';\r\n\r\nimport * as moment from 'moment';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ChangeDetectorRef } from '@angular/core';\r\nimport { VerificationService } from '../../../service/model/verification.service';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { OperationEditComponent } from '../../operation-edit.component';\r\nimport { PointService } from '../../../service/model/point.service';\r\nimport { LatLongMask, LatLongPattern } from '../../../common/constants';\r\nimport FieldUtils from 'src/app/service/util/field-utils';\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\nimport { MarkersService } from '../../../service/model/markers.service';\r\nimport { MarkerModel } from '../../../model/marker.model';\r\nimport { MarkerType, SourceType, EventSituationDescription } from '../../../model/enums.enum';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { first, map } from 'rxjs/operators';\r\nimport { ChannelService } from '../../../service/model/channel.service';\r\nimport { ChannelModel } from '../../../model/channel.model';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { EventService } from '../../../service/model/event.service';\r\nimport { EventFilterModel } from '../../event/event-filter/event.filter.model';\r\nimport { EventModel } from '../../../model/event.model';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { ArchivedType } from 'src/app/general/filter-component/filter.model';\r\n\r\n@ProfileClassToConsole()\r\n@Component({\r\n selector: 'app-verification-edit',\r\n templateUrl: './verification-edit.component.html',\r\n styleUrls: ['../../../app.component.scss', './verification-edit.component.scss']\r\n})\r\nexport class VerificationEditComponent extends OperationEditComponent implements OnInit, OnDestroy {\r\n\r\n private CANAL168 = 0\r\n private CNCL = 2\r\n private MANAGEMENT_REPORT = 3\r\n private OTHER = 4\r\n \r\n // usado para apresentar as datas enquanto não foram calculadas\r\n standadFormatTime:string = \"00:00:00\"\r\n\r\n verificationBandReleaseDescription = VerificationBandReleaseDescription;\r\n evaluationValues = EvaluationValues;\r\n\r\n latLongPattern = LatLongPattern;\r\n latLongMask = LatLongMask;\r\n\r\n timeOutCanSend;\r\n \r\n isHiddenButtonCreateEditVerification : boolean;\r\n isHiddenButtonDeleteVerification : boolean;\r\n isHiddenButtonEditForUser : boolean;\r\n isHiddenInformeGerencial: boolean;\r\n\r\n verificationEvent: EventModel;\r\n\r\n originalPatrolTeamId: string; // para detectar mudanças na equipe\r\n\r\n constructor(logger: NGXLogger,\r\n public entityCacheService: EntityCacheService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n protected eventService: EventService,\r\n protected verificationService: VerificationService,\r\n protected routeGeographicalObjectService: RouteGeographicalService,\r\n protected dialog: MatDialog,\r\n protected storageService: StorageService,\r\n private markerService: MarkersService,\r\n private channelService: ChannelService,\r\n toastr: ToastrService,\r\n protected changeDetector: ChangeDetectorRef,\r\n authorizationService: AuthorizationService,\r\n protected pointService: PointService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, OperationType.EVENT_VERIFICATION, verificationService, dialog,\r\n environment.VERIFICATION_MODEL_LABEL, environment.VERIFICATION_TITLE_LABEL, storageService,\r\n 'verifications-edit', environment.VERIFICATION_GROUP_LABEL, entityCacheService, \r\n routeGeographicalObjectService, changeDetector,\r\n toastr, authorizationService, pointService, goldenLayout, container);\r\n }\r\n\r\n ngOnInit(){\r\n super.ngOnInit();\r\n this.logger.debug('VerificationEditComponent.ngOnInit()');\r\n console.log(\"David, o this.loggedUserProfile é\", this.loggedUserProfile)\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this.logger.debug('VerificationEditComponent.ngOnDestroy()');\r\n }\r\n\r\n afterLoadData(options){\r\n this.model['type'] = OperationType.EVENT_VERIFICATION;\r\n this.originalPatrolTeamId = this.model['patrolTeam']? this.model['patrolTeam'].id: null;\r\n this.updateAttachmentData(); // carrega os arquivos anexo da operação\r\n }\r\n\r\n loadFormOptionsData() {\r\n super.loadFormOptionsData();\r\n\r\n this.logger.debug('EventEditComponent.loadFormOptionsData()');\r\n\r\n const metadatas: string[] = [\r\n \"Valve\",\r\n \"Evaluation\",\r\n \"Band\",\r\n \"Duct\",\r\n \"PipeStretch\"\r\n ];\r\n \r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n\r\n createData(options?) {\r\n this.logger.debug('VerificationEditComponent.createData()');\r\n\r\n this.model = new VerificationModel();\r\n this.view = {};\r\n\r\n if (options && options.event) {\r\n this.model['eventId'] = this.view['eventId'] = options.event.identifier;\r\n this.model['band'] = this.view['band'] = options.event?.band != null ? options.event.band : null;\r\n this.model['stretch'] = this.view['stretch'] = options.event?.stretch != null ? options.event.stretch : null;\r\n this.model['duct'] = this.view['duct'] = options.event?.duct != null ? options.event.duct : null;\r\n this.model['valve'] = this.view['valve'] = options.event?.valve != null ? options.event.valve : null;\r\n this.model['km'] = this.view['km'] = options.event?.targetPointKM != null ? options.event.targetPointKM : null;\r\n this.model['latLong'] = this.view['latLong'] = options.event?.targetPointLatLong != null ? options.event.targetPointLatLong : null;\r\n this.model['stretchStartKM'] = this.view['stretchStartKM'] = options.event?.stretchStartKM != null ? options.event.stretchStartKM : null;\r\n this.model['stretchEndKM'] = this.view['stretchEndKM'] = options.event?.stretchEndKM != null ? options.event.stretchEndKM : null;\r\n this.model['stretchStartLatLong'] = this.view['stretchStartLatLong'] = options.event?.stretchStartLatLong != null ? options.event.stretchStartLatLong : null;\r\n this.model['stretchEndLatLong'] = this.view['stretchEndLatLong'] = options.event?.stretchEndLatLong != null ? options.event.stretchEndLatLong : null;\r\n\r\n }\r\n\r\n this.createOperationData();\r\n\r\n /** Tem que ir após createOperationData */\r\n if (options && options.patrolTeam) { // options é usado ao criar a verificação a partir de uma equipe no mapa\r\n this.model['patrolTeam'] = this.view['patrolTeam'] = options.patrolTeam;\r\n this.model['company'] = this.view['company'] = options.patrolTeam.company;\r\n this.model['placement'] = this.view['placement'] = options.patrolTeam.company?.placement;\r\n this.model['serviceType'] = this.view['serviceType'] = options.patrolTeam.serviceType;\r\n }\r\n\r\n this.glUpdateTabTitle(this.modelName + ': [NOVA]');\r\n }\r\n\r\n mapViewToModel() {\r\n super.mapViewToModel();\r\n\r\n this.logger.debug('VerificationEditComponent.mapViewToModel()');\r\n\r\n if (this.view['sentDate']) {\r\n // Mesmo sendo read-only precisa desafazer a conversão feita em mapModelToView\r\n const sentDate = DateUtils.stringDateToTimestamp(this.view['sentDate']);\r\n this.model['sentDate'] = sentDate;\r\n }\r\n\r\n if (this.view['createdAt']) { \r\n const createdDate = DateUtils.stringDateToTimestamp(this.view['createdAt']);\r\n this.model['createdAt'] = createdDate;\r\n }\r\n \r\n if (this.view['startDateMovement']) { \r\n const createdDate = DateUtils.stringDateToTimestamp(this.view['startDateMovement']);\r\n this.model['startDateMovement'] = createdDate;\r\n }\r\n \r\n if (this.view['startDateInspection']) { \r\n const createdDate = DateUtils.stringDateToTimestamp(this.view['startDateInspection']);\r\n this.model['startDateInspection'] = createdDate;\r\n }\r\n \r\n if (this.view['endDateInspection']) { \r\n const createdDate = DateUtils.stringDateToTimestamp(this.view['endDateInspection']);\r\n this.model['endDateInspection'] = createdDate;\r\n }\r\n\r\n if (this.view['dateSendEndVerification']) { \r\n const createdDate = DateUtils.stringDateToTimestamp(this.view['dateSendEndVerification']);\r\n this.model['dateSendEndVerification'] = createdDate;\r\n }\r\n\r\n if (this.view['receivedDateApp']) { \r\n const createdDate = DateUtils.stringDateToTimestamp(this.view['receivedDateApp']);\r\n this.model['receivedDateApp'] = createdDate;\r\n }\r\n\r\n if (this.view['dateSituationFound']) { \r\n const createdDate = DateUtils.stringDateToTimestamp(this.view['dateSituationFound']);\r\n this.model['dateSituationFound'] = createdDate;\r\n }\r\n\r\n if (this.view['dateSendedSituationFound']) { \r\n const createdDate = DateUtils.stringDateToTimestamp(this.view['dateSendedSituationFound']);\r\n this.model['dateSendedSituationFound'] = createdDate;\r\n }\r\n\r\n }\r\n\r\n mapModelToView() {\r\n super.mapModelToView();\r\n\r\n this.logger.debug('VerificationEditComponent.mapModelToView()');\r\n\r\n if (this.model['sentDate']) {\r\n let sentMoment = moment(this.model['sentDate']);\r\n this.view['sentDate'] = sentMoment.format('DD/MM/yyyy HH:mm');\r\n \r\n this.view['sentDateDay'] = moment(this.model['sentDate']).format('DD/MM/yyyy');\r\n this.view['sentDateHour'] = moment(this.model['sentDate']).format(\"HH:mm\");\r\n }\r\n\r\n if (this.model['createdAt']) {\r\n let createdMoment = moment(this.model['createdAt']);\r\n this.view['createdAt'] = createdMoment.format('DD/MM/yyyy HH:mm');\r\n }\r\n\r\n if (this.model['startDateMovement']) {\r\n let createdMoment = moment(this.model['startDateMovement']);\r\n this.view['startDateMovement'] = createdMoment.format('DD/MM/yyyy HH:mm');\r\n }\r\n\r\n if (this.model['startDateInspection']) {\r\n let createdMoment = moment(this.model['startDateInspection']);\r\n this.view['startDateInspection'] = createdMoment.format('DD/MM/yyyy HH:mm');\r\n }\r\n\r\n if (this.model['endDateInspection']) {\r\n let createdMoment = moment(this.model['endDateInspection']);\r\n this.view['endDateInspection'] = createdMoment.format('DD/MM/yyyy HH:mm');\r\n }\r\n\r\n if (this.model['dateSendEndVerification']) {\r\n let createdMoment = moment(this.model['dateSendEndVerification']);\r\n this.view['dateSendEndVerification'] = createdMoment.format('DD/MM/yyyy HH:mm');\r\n }\r\n\r\n if (this.model['receivedDateApp']) {\r\n let createdMoment = moment(this.model['receivedDateApp']);\r\n this.view['receivedDateApp'] = createdMoment.format('DD/MM/yyyy HH:mm');\r\n }\r\n \r\n //taccpd \r\n if(this.model['eventCreatedAt'] && this.model['sentDate']) {\r\n let sendDateMoment = moment(this.model['sentDate']);\r\n let eventMoment = moment(this.model['eventCreatedAt']);\r\n const duration = moment.duration(sendDateMoment.diff(eventMoment)); \r\n this.view['taccpd'] = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n //tacs \r\n if(this.model['createdAt'] && this.model['sentDate']) {\r\n let createdAtMoment = moment(this.model['createdAt']);\r\n let sendDateMoment = moment(this.model['sentDate']);\r\n const duration = moment.duration(sendDateMoment.diff(createdAtMoment)); \r\n this.view['tacs'] = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n // tapd\r\n if(this.model['sentDate'] && this.model['dateSendEndVerification']) {\r\n let endMoment = moment(this.model['dateSendEndVerification']);\r\n let sendDateMoment = moment(this.model['sentDate']);\r\n const duration = moment.duration(endMoment.diff(sendDateMoment)); \r\n this.view['tapd'] = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n //tta\r\n if(this.model['dateSendEndVerification'] && this.model['eventCreatedAt']) {\r\n let endMoment = moment(this.model['dateSendEndVerification']);\r\n let eventMoment = moment(this.model['eventCreatedAt']);\r\n const duration = moment.duration(endMoment.diff(eventMoment));\r\n this.view['tta'] = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n //terf\r\n if(this.model['dateSendEndVerification'] && this.model['dateSituationFound']) {\r\n let situationFoundMoment = moment(this.model['dateSituationFound']);\r\n let dateSentEndVerification = moment(this.model['dateSendEndVerification']);\r\n const duration = moment.duration(situationFoundMoment.diff(dateSentEndVerification));\r\n this.view['terf'] = this.secondsToHms( Math.abs(duration.asSeconds()));\r\n }\r\n\r\n\r\n if (this.model['dateSituationFound']) {\r\n let createdMoment = moment(this.model['dateSituationFound']);\r\n this.view['dateSituationFound'] = createdMoment.format('DD/MM/yyyy HH:mm');\r\n }\r\n\r\n if (this.model['dateSendedSituationFound']) {\r\n let createdMoment = moment(this.model['dateSendedSituationFound']);\r\n this.view['dateSendedSituationFound'] = createdMoment.format('DD/MM/yyyy HH:mm');\r\n }\r\n\r\n //tvi\r\n if(this.model['startDateInspection'] && this.model['endDateInspection']) {\r\n let startInspMoment = moment(this.model['startDateInspection']);\r\n let endInspMoment = moment(this.model['endDateInspection']);\r\n const duration = moment.duration(endInspMoment.diff(startInspMoment)); \r\n this.view['tvi'] = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n //tsi\r\n if(this.model['startDateInspection'] && this.model['sentDate']) {\r\n let startInspMoment = moment(this.model['startDateInspection']);\r\n let sendMoment = moment(this.model['sentDate']);\r\n const duration = moment.duration(startInspMoment.diff(sendMoment)); \r\n this.view['tsi'] = this.secondsToHms(duration.asSeconds());\r\n }\r\n\r\n //trivi\r\n if(this.model['startDateMovement'] && this.model['sentDate']) {\r\n let startMovementMoment = moment(this.model['startDateMovement']);\r\n let sendMoment = moment(this.model['sentDate']);\r\n const duration = moment.duration(startMovementMoment.diff(sendMoment)); \r\n this.view['trivi'] = this.secondsToHms(duration.asSeconds());\r\n }\r\n }\r\n\r\n replaceRunTimeData(data){\r\n // Substitui mudanças dinamicas, que independem da edição do usuário\r\n this.replaceModelViewData(data, 'endDateVerification'); // Não converter como data\r\n this.replaceModelViewData(data, 'eventCreatedAt'); // Não converter como data\r\n this.replaceModelViewDateData(data, 'createdAt');\r\n this.replaceModelViewDateData(data, 'sentDate');\r\n this.replaceModelViewDateData(data, 'startDateMovement');\r\n this.replaceModelViewDateData(data, 'startDateInspection');\r\n this.replaceModelViewDateData(data, 'endDateInspection');\r\n this.replaceModelViewData(data, 'midia');\r\n this.replaceModelViewData(data, 'kmPlanned');\r\n this.replaceModelViewData(data, 'kmExecuted');\r\n this.replaceModelViewDateData(data, 'dateSendEndVerification');\r\n this.replaceModelViewDateData(data, 'dateSituationFound');\r\n this.replaceModelViewDateData(data, 'dateSendedSituationFound');\r\n this.replaceModelViewData(data, 'dateManagementReport'); // Não converter como data\r\n this.replaceModelViewDateData(data, 'receivedDateApp');\r\n \r\n super.replaceRunTimeData(data);\r\n }\r\n\r\n enterCanSend() {\r\n this.timeOutCanSend = setTimeout(() => {\r\n if (!this.canSend()) {\r\n if (!this.model || !this.model.id) {\r\n this.toastr.info('Verificação ainda não foi criada. Salve antes de Solicitar.');\r\n return;\r\n }\r\n\r\n let requiredFields = '';\r\n\r\n if (!this.view['analyst']) {\r\n requiredFields = requiredFields + '
  • Analista CCPD
  • ';\r\n }\r\n\r\n if (!this.view['placement']) {\r\n requiredFields = requiredFields + '
  • Lotação
  • ';\r\n }\r\n\r\n if (!this.view['company']) {\r\n requiredFields = requiredFields + '
  • Empresa
  • ';\r\n }\r\n\r\n if (!this.view['serviceType']) {\r\n requiredFields = requiredFields + '
  • Tipo de Serviço
  • ';\r\n }\r\n\r\n if (!this.view['patrolTeam'] || !this.view['patrolTeam'].name) {\r\n requiredFields = requiredFields + '
  • Equipe
  • ';\r\n }\r\n\r\n if (!this.hasNonBasePoint()) {\r\n requiredFields = requiredFields + '
  • 1 ponto que não seja base
  • ';\r\n }\r\n\r\n if (!this.isInspectionsFilled()) {\r\n requiredFields = requiredFields + '
  • Pontos sem Faixa ou KM
  • ';\r\n }\r\n\r\n if (requiredFields != '') {\r\n this.toastr.info('Campo(s) obrigatório(s) para Solicitar não preenchido(s):
    ' + requiredFields);\r\n return;\r\n }\r\n\r\n if (this.viewIsChanged()) {\r\n this.toastr.info('Verificação modificada. Salve antes de Solicitar.');\r\n return;\r\n }\r\n\r\n this.timeOutCanSend = setTimeout(() => {\r\n this.toastr.info('Verificação já foi solicitada.');\r\n this.timeOutCanSend = null;\r\n }, 2 * MOUSE_ENTER_TIME);\r\n return;\r\n }\r\n this.timeOutCanSend = null;\r\n }, MOUSE_ENTER_TIME);\r\n }\r\n\r\n leaveCanSend() {\r\n if (this.timeOutCanSend) {\r\n clearTimeout(this.timeOutCanSend);\r\n this.timeOutCanSend = null;\r\n }\r\n }\r\n\r\n canSend(): boolean {\r\n return !!this.model && !!this.model.id && // Só pode solicitar se estiver criada\r\n (this.view['patrolTeam'] && this.view['patrolTeam'].name) && // Só pode solicitar se possuir os seguintes campos\r\n this.view['analyst'] &&\r\n this.view['placement'] &&\r\n this.view['company'] &&\r\n this.view['serviceType'] &&\r\n this.hasNonBasePoint() && // Tem que ter ao meno 1 ponto\r\n this.isInspectionsFilled() && // Os pontos precisam ter Faixa e KM\r\n !this.isSent() && // Só pode solicitar 1 vez\r\n !this.viewIsChanged(); // Só pode solicitar se estiver Salvo\r\n }\r\n\r\n isSent(): boolean {\r\n return this.view['status'] != OperationStatus.PLANNED;\r\n }\r\n\r\n hasArchivalRequirements(model: VerificationModel){\r\n if(model.status != OperationStatus.FINISHED){ // Verifica se o status é Concluído\r\n return false;\r\n }\r\n\r\n if(this.authorizationService.isControl()){ // Se for perfil ANALYSIS_CCPD, verifica se os eventos foram criados por ele\r\n if(!model.analyst || model.analyst.id !== this.loggedUser.id.toString()){\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n onExportClick() {\r\n this.loadingListService.loadingOn();\r\n (this.entityService).exportVerification(this.model as VerificationModel).pipe(first()).subscribe(response => {\r\n this.loadingListService.loadingOff();\r\n\r\n let filename = `${(this.model as VerificationModel).identifier}.zip`;\r\n filename = filename.replace(/[\\x00-\\x1f?<>:\"/\\\\*|]/g, '_');\r\n saveAs(response, filename);\r\n },\r\n error =>{\r\n this.loadingListService.loadingOff();\r\n this.logger.error(error);\r\n });\r\n }\r\n\r\n operationEdited(operation: OperationModel){\r\n const viewPatrolTeamId = this.view['patrolTeam']? this.view['patrolTeam'].id: null;\r\n if (operation.status != OperationStatus.PLANNED && this.originalPatrolTeamId != viewPatrolTeamId) {\r\n this.originalPatrolTeamId = viewPatrolTeamId;\r\n this.sendSentNotification(true);\r\n }\r\n }\r\n\r\n sendSentNotification(patrolTeamChanged: boolean) {\r\n const formElements = new Map();\r\n\r\n const marker = this.createTeamSentMarker();\r\n if (patrolTeamChanged) marker.message += \" (Troca de Equipe)\";\r\n this.logger.info('VerificationEditComponent.sendSentNotification - Mensagem de Verificação enviada: ', marker);\r\n\r\n this.markerService.create(marker, formElements).pipe(first()).subscribe((marker: MarkerModel) => {\r\n this.logger.info('VerificationEditComponent.sendSentNotification - envio OK');\r\n }, error => this.logger.error(error));\r\n \r\n this.loadVerificationEvent().then( () => {\r\n const newManagerialMarker = this.createManagerialSentMarker();\r\n if (patrolTeamChanged) newManagerialMarker.message += \" (Troca de Equipe)\";\r\n this.logger.info('VerificationEditComponent.sendSentNotification - Mensagem de Verificação enviada para canal gerencial: ', newManagerialMarker);\r\n this.markerService.create(newManagerialMarker, formElements).pipe(first()).subscribe((marker: MarkerModel) => {\r\n this.logger.info('VerificationEditComponent.sendSentNotification - envio gerencial OK');\r\n }, error => this.logger.error(error));\r\n });\r\n }\r\n\r\n /**\r\n * Altera o status da verificação para PLANNED para que ela seja visivel no mobile app.\r\n */\r\n onSendClick(){\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n data: {\r\n msg: \"ATENÇÃO: após solicitada, a verificação ficará disponível para os profissionais e esta operação não poderá ser desfeita. Confirma a solicitação?\",\r\n title: \"Solicitar Verificação\",\r\n okLabel: \"Confirmar\",\r\n },\r\n panelClass: 'sipd-modal'\r\n }).afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.verificationService.updateStatus(this.model, OperationStatus.SENT).pipe(first()).subscribe( (updatedVerification : VerificationModel) => {\r\n if(updatedVerification){\r\n this.model = updatedVerification;\r\n this.mapModelToView();\r\n this.backupInitialView();\r\n this.toastr.info('Verificação solicitada com sucesso!');\r\n this.glEmitEvent(SAVE_DATA_PREFIX + 'verifications-edit', {entity: this.model});\r\n\r\n this.sendSentNotification(false);\r\n }\r\n }, error => {\r\n this.logger.error(error);\r\n this.toastr.error('Não foi possível solicitar a verificação.');\r\n });\r\n }\r\n });\r\n }\r\n\r\n private loadVerificationEvent(){\r\n const filterModel = new EventFilterModel();\r\n filterModel.identifier = this.view['eventId'];\r\n filterModel.archived = ArchivedType.ALL;\r\n return this.eventService.loadFilteredListFromRestApi(null, null, null, filterModel).pipe(first(), map((events: EventModel[]) =>{\r\n if(!events || events.length === 0) \r\n {\r\n this.toastr.error(\"Evento da Verificação não encontrado!\");\r\n return;\r\n }\r\n this.verificationEvent = events[0];\r\n })).toPromise();\r\n }\r\n\r\n private createTeamSentMarker(): MarkerModel{\r\n let markerMessage: MarkerModel = new MarkerModel();\r\n\r\n const priorityName = this.model['priority']? 'PRIORITÁRIA ': '';\r\n let channel = this.getTeamChannel(this.view['patrolTeam'].id);\r\n\r\n markerMessage.message = 'Verificação '+ priorityName+ this.view['identifier'] + ' enviada. Verifique a lista de operações.';\r\n markerMessage.patrolTeamId = this.view['patrolTeam'].id;\r\n markerMessage.operationId = this.view['id'];\r\n markerMessage.operationType = this.operationType;\r\n markerMessage.operationIdentifier = this.view['identifier'];\r\n markerMessage.markerType = MarkerType.VERIFICATION_SENT_MESSAGE;\r\n markerMessage.sourceType = SourceType.WEB_APP;\r\n markerMessage.priority = this.model['priority']? true: false;\r\n markerMessage.location = {lat: 0, lng: 0};\r\n markerMessage.timestamp = moment().valueOf();\r\n markerMessage.serverTimestamp = null; // Não temos essa estimativa na Web\r\n markerMessage.userId = this.loggedUser.id.toString();\r\n markerMessage.userName = this.loggedUser.login; // Esconde o nome de quem não é profissional em canais de equipe\r\n markerMessage.channelId = channel.id;\r\n markerMessage.channelName = channel.name;\r\n markerMessage.uuid = uuidv4();\r\n\r\n return markerMessage;\r\n }\r\n\r\n private buildManagerialMessage(channel: ChannelModel, communicationChannel: number): MarkerModel {\r\n let markerMessage: MarkerModel = new MarkerModel();\r\n\r\n const priorityName = this.model['priority']? 'PRIORITÁRIA ': '';\r\n let notes = communicationChannel == this.CANAL168 && this.verificationEvent.result.notes != null ? this.verificationEvent.result.notes : '';\r\n let band = this.view['band'] ? this.view['band'] : \"\";\r\n let duct = this.view['duct'] ? this.view['duct'] : \"\";\r\n let source = this.verificationEvent.source ? this.verificationEvent.source : '';\r\n let category = [this.verificationEvent.category168 ? this.verificationEvent.category168 : null, \r\n this.verificationEvent.subcategory168 ? this.verificationEvent.subcategory168 : null];\r\n category = category.filter(ele => ele!=null && ele!='');\r\n let type = communicationChannel == this.CANAL168 ? category.join(' - ') : source;\r\n let startKm = this.view['stretchStartKM'] ? this.view['stretchStartKM'] : null;\r\n let endKm = this.view['stretchEndKM'] ? this.view['stretchEndKM'] : null;\r\n let km = (startKm && endKm) ? \"Início: \" + startKm + \" | Fim: \" + endKm : this.view['km'] ? this.view['km'] : \"\";\r\n let startLatlong = this.view['stretchStartLatLong'] ? this.view['stretchStartLatLong'] : null;\r\n let endLatlong = this.view['stretchEndLatLong'] ? this.view['stretchEndLatLong'] : null;\r\n let latlong = (startLatlong && endLatlong) ? \"Início: \" + startLatlong + \" | \" + \"Fim: \" + endLatlong : this.view['latLong'] ? this.view['latLong'] : '';\r\n let address = [this.verificationEvent.street, this.verificationEvent.city, this.verificationEvent.state];\r\n address = address.filter(ele => ele!=null && ele!='');\r\n let local = [latlong, address.join(' - ')];\r\n local = local.filter(ele => ele!=null && ele!='');\r\n let product = this.verificationEvent.product ? this.verificationEvent.product : '';\r\n let situation = this.verificationEvent.situation ? EventSituationDescription[this.verificationEvent.situation] : '';\r\n let sentDate = (this.view['sentDate']) ? this.view['sentDate'] : '';\r\n let suspiciousDate = this.verificationEvent.suspiciousDate ? DateUtils.timestampToStringInMinutes(this.verificationEvent.suspiciousDate) : '';\r\n let company = [this.view['company'] ? this.view['company']['name'] : null, this.view['placement'] ? this.view['placement']['regional'] : null];\r\n company = company.filter(ele => ele!=null && ele!='');\r\n let patrolTeam = [this.view['patrolTeam']['serviceType'] ? ServiceTypeDescription[this.view['patrolTeam']['serviceType']] : null, \r\n this.view['patrolTeam'] ? this.view['patrolTeam']['name'] : null];\r\n patrolTeam = patrolTeam.filter(ele => ele!=null && ele!='');\r\n let flow = this.verificationEvent.flow ? this.verificationEvent.flow : '';\r\n let stolenVolume = this.verificationEvent.stolenVolume ? this.verificationEvent.stolenVolume : '';\r\n let startDate = this.verificationEvent.date ? DateUtils.timestampToStringInMinutes(this.verificationEvent.date) : \"\";\r\n let endDate = this.verificationEvent.endDate ? DateUtils.timestampToStringInMinutes(this.verificationEvent.endDate) : \"\";\r\n let report = this.view['managementReport'] ? this.view['managementReport'] : '';\r\n\r\n markerMessage.message = 'Verificação '+ priorityName + this.view['identifier'] + (communicationChannel == this.MANAGEMENT_REPORT ? '': ' Enviada')+'\\n' +\r\n this.verificationEvent.communicationChannel + '\\n' +\r\n 'Tipo: ' + type + '\\n' +\r\n (communicationChannel == this.CANAL168 ?\r\n 'Descrição: ' + notes + '\\n' : '') +\r\n 'Data/Horário da Solicitação: ' + sentDate + '\\n' +\r\n 'Faixa: ' + band + '\\n' +\r\n 'Duto: ' + duct + '\\n' +\r\n 'KM: ' + km + '\\n' +\r\n 'Localização: ' + local.join(' | ' ) + '\\n' +\r\n (communicationChannel == this.CNCL ?\r\n 'Produto: ' + product + \"\\n\" +\r\n 'Situação: ' + situation + \"\\n\" +\r\n 'Data/Horário da Suspeita: ' + suspiciousDate + '\\n' +\r\n 'Data/Horário Início da Despressurização: ' + startDate + '\\n' +\r\n 'Data/Horário Fim da Despressurização: ' + endDate + '\\n' +\r\n 'Vazão: ' + flow + ' m³/h\\n' +\r\n 'Volume: ' + stolenVolume + ' m³\\n' : '') +\r\n 'Empresa: ' + company.join(' - ') + \"\\n\" +\r\n 'Equipe Acionada: ' + patrolTeam.join(' - ') + '\\n' +\r\n (communicationChannel == this.MANAGEMENT_REPORT ? 'Informe Gerencial: ' + report : '');\r\n \r\n markerMessage.patrolTeamId = this.view['patrolTeam'].id;\r\n markerMessage.markerType = MarkerType.MANAGERIAL_MESSAGE;\r\n markerMessage.sourceType = SourceType.WEB_APP;\r\n markerMessage.priority = false; // Não é de atenção, mesmo sendo prioritária\r\n markerMessage.location = {lat: 0, lng: 0};\r\n markerMessage.timestamp = moment().valueOf();\r\n markerMessage.serverTimestamp = null; // Não temos essa estimativa na Web\r\n markerMessage.userId = this.loggedUser.id.toString();\r\n markerMessage.userName = this.loggedUser.name;\r\n markerMessage.channelId = channel.id;\r\n markerMessage.channelName = channel.name;\r\n markerMessage.uuid = uuidv4();\r\n\r\n return markerMessage;\r\n }\r\n\r\n private createManagerialSentMarker(): MarkerModel{\r\n if (!this.verificationEvent){\r\n this.toastr.error(\"Evento da Verificação não encontrado! Não é possível enviar a mensagem.\");\r\n return;\r\n }\r\n\r\n const foundChannel = this.channelService.inMemoryChannelList.find((channel: ChannelModel) => channel.type === \"MANAGERIAL\");\r\n\r\n if (this.verificationEvent.communicationChannel === \"Canal 168\") {\r\n return this.buildManagerialMessage(foundChannel, this.CANAL168); \r\n }\r\n else if (this.verificationEvent.communicationChannel.startsWith(\"CNCL\")) {\r\n return this.buildManagerialMessage(foundChannel, this.CNCL); \r\n }\r\n else {\r\n return this.buildManagerialMessage(foundChannel, this.OTHER); \r\n }\r\n }\r\n\r\n private createManagementReportMarker(): MarkerModel{\r\n if (!this.verificationEvent){\r\n this.toastr.error(\"Evento da Verificação não encontrado! Não é possível enviar a mensagem.\");\r\n return;\r\n }\r\n \r\n const foundChannel = this.channelService.inMemoryChannelList.find((channel: ChannelModel) => channel.type === \"MANAGERIAL\");\r\n return this.buildManagerialMessage(foundChannel, this.MANAGEMENT_REPORT); \r\n }\r\n\r\n getTeamChannel(patrolTeamId: string): ChannelModel {\r\n let channel: ChannelModel = this.channelService.getChannelIdByReferenceId(patrolTeamId);\r\n if (!channel) {\r\n this.logger.error(\"Canal não encontrado para Equipe de id \" + patrolTeamId);\r\n }\r\n return channel;\r\n }\r\n\r\n onPasteLatLong(event: ClipboardEvent, name: string){\r\n let pastedValue = FieldUtils.pasteLatLong(event, this.view[name]);\r\n if (pastedValue != null) {\r\n this.view[name] = pastedValue;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Método que converte segundos para formato de dias, horas , minutos e segundos */\r\n secondsToHms(seconds) {\r\n seconds = Number(seconds);\r\n //var d = Math.floor(seconds / (3600*24));\r\n var h = Math.floor(seconds / 3600);\r\n var m = Math.floor(seconds % 3600 / 60);\r\n var s = Math.floor(seconds % 60 % 60);\r\n\r\n var hDisplay = \"00\";\r\n var mDisplay = \"00\"\r\n var sDisplay = \"00\"\r\n hDisplay = h > 0 && h < 10 ? \"0\"+ h : (h <= 0 ? \"00\" : h+\"\") ;\r\n mDisplay = m > 0 && m < 10 ? \"0\" + m : (m <= 0 ? \"00\" : m+\"\") ;\r\n sDisplay = s > 0 && s < 10 ? \"0\" + s : (s <= 0 ? \"00\" : s+\"\");\r\n return hDisplay+ \":\" + mDisplay +\":\"+ sDisplay;\r\n }\r\n\r\n clearCopyData(): void {\r\n super.clearCopyData();\r\n // Deleta os dados dos resultados ( se houver )\r\n this.model['startDateMovement'] = null;\r\n this.model['startDateInspection'] = null;\r\n this.model['endDateInspection'] = null;\r\n this.model['midia'] = null;\r\n this.model['evaluation'] = null;\r\n this.model['kmPlanned'] = null;\r\n this.model['kmExecuted'] = null;\r\n this.model['dateSendEndVerification'] = null;\r\n this.model['receivedDateApp'] = null;\r\n this.model['dateSituationFound'] = null;\r\n this.model['dateSendedSituationFound'] = null;\r\n this.model['eventCreatedAt'] = null;\r\n this.model['resultObservations'] = null;\r\n this.model['managementReport'] = null;\r\n this.model['sentDate'] = null;\r\n this.model['createdAt'] = null;\r\n }\r\n \r\n isRequiredFieldFilled(): boolean {\r\n return true; // Para verificações não tem obrigatórios para salvar, apenas para solicitar\r\n }\r\n\r\n isVerificationDeletionPermitted() {\r\n return this.authorizationService.isVerificationDeletionAllowed(this.model);\r\n }\r\n\r\n checkPermissions(){\r\n this.isHiddenButtonCreateEditVerification = !this.authorizationService.userHasPermission(Permission.CREATE_EDIT_VERIFICATIONS);\r\n this.isHiddenButtonDeleteVerification = !this.authorizationService.userHasPermission(Permission.DELETE_VERIFICATIONS);\r\n this.isHiddenButtonEditForUser = !this.authorizationService.userHasPermission(Permission.CREATE_EDIT_VERIFICATIONS);\r\n this.isHiddenInformeGerencial = this.authorizationService.userHasPermission(Permission.VIEW_INFORME_GERENCIAL_VERIFICATIONS);\r\n console.log('Carregou as permissões')\r\n } \r\n\r\n sendManagementReport() {\r\n this.openConfirmSaveOpAndSendReportDialog().then(result =>{\r\n let resp = result.toString();\r\n if(resp == 'true'){\r\n this.view['dateManagementReport'] = moment().valueOf();\r\n this.backupModel = this.copyModel(this.model);\r\n this.mapViewToModel();\r\n this.saveEditedModel(); // só verificações salvas podem enviar reporte gerencial\r\n\r\n const formElements = new Map();\r\n this.loadVerificationEvent().then( ()=>{\r\n const newManagerialMessage = this.createManagementReportMarker();\r\n this.logger.info('VerificationEditComponent.sendManagementReport - Mensagem de Verificação enviada para canal gerencial: ', newManagerialMessage);\r\n this.markerService.create(newManagerialMessage, formElements).pipe(first()).subscribe((marker: MarkerModel) => {\r\n this.logger.info('VerificationEditComponent.sendManagementReport - envio OK');\r\n this.toastr.info('Informe Gerencial enviado com sucesso');\r\n }, error => {\r\n this.logger.error(error);\r\n this.toastr.error('Informe Gerencial falhou no envio');\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n openConfirmSaveOpAndSendReportDialog(): Promise {\r\n return this.dialog.open(ConfirmationDialogComponent, {\r\n width: 'auto',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: 'ATENÇÃO: Ao enviar o informe gerencial, será salva a Verificação, confirma?',\r\n title: 'Salvar Verificação e enviar Informe Gerencial',\r\n cancelLabel: 'Cancelar',\r\n okLabel: 'Confirmar' \r\n }\r\n }).afterClosed().toPromise().then( result => {\r\n return Promise.resolve(result);\r\n });\r\n }\r\n\r\n onHistoricalTrackingClick(){\r\n if(this.model['sendDate'] != null && this.model['startDate'] == null)\r\n this.model['startDate'] = this.model['sentDate'];\r\n \r\n super.onHistoricalTrackingClick();\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport FieldUtils from '../../service/util/field-utils';\r\n\r\n@Pipe({name: 'PointLocationToString'})\r\nexport class PointLocationPipe implements PipeTransform {\r\n transform(location: GeoJSON.Point): String {\r\n if (!location) {\r\n return '';\r\n }\r\n\r\n // inicialização do GeoPoint para alertas está errada, está sendo feito (x=latitude e y=longitude)\r\n let response = '';\r\n if (location.coordinates[0]) {\r\n response += FieldUtils.coordToString(location.coordinates[0]);\r\n }\r\n\r\n if (location.coordinates[1]) {\r\n response += ', ' + FieldUtils.coordToString(location.coordinates[1]);\r\n }\r\n\r\n return response;\r\n }\r\n}\r\n\r\n@Pipe({name: 'LocationToString'})\r\nexport class LocationPipe implements PipeTransform {\r\n transform(location: {lat: number, lng: number}): String {\r\n if (!location || location.lat == 0 || location.lng == 0) {\r\n return '';\r\n }\r\n\r\n return FieldUtils.coordToString(location.lat) + ',' + FieldUtils.coordToString(location.lng);\r\n }\r\n}\r\n","// ANTIGO: No momento não usamos dessa forma\r\n// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\n// ATUAL: No momento definimos variáveis no deploy (Ver pasta src\\assets\\environments\\)\r\n// O Dockerfile roda um shell script (ccpd-env.sh) que copia o environment.json.in para environment.json usando as váriaveis do deploy para preencher valores\r\n// Como isso não acontece no localhost, o environment.json serve como valor default para ambiente local\r\n\r\n\r\nexport const environment = {\r\n // Essas configurações são substituídas pelo \"environment.json.in\" (obrigatórias)\r\n production: true, // controla o production mode do angular (Local=false Servidor=true)\r\n development: false, // Indica se estamos em ambiente de desenvolvimento (Tecgraf) ou (Transpetro) - controla o acesso ao OpenId\r\n hmg: false, // Indica se estamos em ambiente de homologação\r\n\r\n // No momento não estão definidas no \"environment.json.in\", são opcionais.\r\n // Algumas definimos no environment.json default para uso local\r\n allUsersCanUseApp: false,\r\n showPopupLayerTables: false, // Mostra somente se rondando o Web local\r\n useServerPagination: false,\r\n defaultPageSize: 50,\r\n profileThresHold: 10, // allow filtering log to only those that took more than the threshold (in ms) on ProfileClassToConsole Decorator\r\n profileClassToConsoleEnabled: false, // enables ProfileClassToConsole Decorator\r\n\r\n // Essas configurações são substituídas pelo \"environment.json\" (obrigatória)\r\n settings: {\r\n authority_address : '',\r\n alerts_address : '',\r\n auth_address : '',\r\n event_verifications_address : '',\r\n events_address : '',\r\n markers_address : '',\r\n patrols_address : '',\r\n registrations_address : '',\r\n route_deviation_address : '',\r\n signals_address : '',\r\n simf_address : '',\r\n tracking_address : '',\r\n web_address : '',\r\n websocket_address : '',\r\n websocket_http_address : ''\r\n },\r\n\r\n // TODO lbarros estas não são variáveis de ambiente e sim internacionalização - ver https://angular.io/guide/i18n\r\n // *_MODEL_LABEL são usando em títulos de diálogos de confirmação\r\n // *_TITLE_LABEL são usados em títulos de páginas\r\n // *_GROUP_LABEL são usados em títulos de acesso\r\n LANDING_PAGE : 'central',\r\n\r\n CENTRAL_TITLE_LABEL : 'Central de Alertas',\r\n CENTRAL_GROUP_LABEL : 'Alertas',\r\n\r\n TRACKING_MODEL_LABEL : 'Rastreamento',\r\n TRACKING_TITLE_LABEL : 'Rastreamento de Equipes e Veículos',\r\n TRACKING_GROUP_LABEL : 'Rastreamento',\r\n\r\n EVENT_MODEL_LABEL : 'Evento',\r\n EVENT_TITLE_LABEL : 'Registro de Eventos e Ocorrências',\r\n EVENT_GROUP_LABEL : 'Eventos',\r\n\r\n VERIFICATION_MODEL_LABEL : 'Verificação',\r\n VERIFICATION_TITLE_LABEL : 'Verificações de Eventos',\r\n VERIFICATION_GROUP_LABEL : 'Verificações',\r\n\r\n PATROL_MODEL_LABEL : 'Ronda',\r\n PATROL_TITLE_LABEL : 'Planejamento de Rondas',\r\n PATROL_GROUP_LABEL : 'Rondas',\r\n\r\n CHANNEL_TITLE_LABEL : 'Canais de Mensagens',\r\n CHANNEL_GROUP_LABEL : 'Mensagens',\r\n\r\n ADMINISTRATION_GROUP_LABEL : 'Administração',\r\n\r\n COMPANY_MODEL_LABEL : 'Empresa',\r\n COMPANY_TITLE_LABEL : 'Administração de Empresas',\r\n COMPANY_GROUP_LABEL : 'Empresas',\r\n\r\n PATROL_TEAM_MODEL_LABEL : 'Equipe',\r\n PATROL_TEAM_TITLE_LABEL : 'Administração de Equipes',\r\n PATROL_TEAM_GROUP_LABEL : 'Equipes',\r\n\r\n PLACEMENT_MODEL_LABEL : 'Lotação',\r\n PLACEMENT_TITLE_LABEL : 'Administração de Lotações',\r\n PLACEMENT_GROUP_LABEL : 'Lotações',\r\n\r\n USERS_MODEL_LABEL : 'Usuário',\r\n USERS_TITLE_LABEL : 'Administração de Usuários',\r\n USERS_GROUP_LABEL : 'Usuários',\r\n\r\n PROFILES_MODEL_LABEL : 'Perfil',\r\n PROFILES_TITLE_LABEL : 'Administração de Perfis',\r\n PROFILES_GROUP_LABEL : 'Perfis',\r\n\r\n VEHICLES_MODEL_LABEL : 'Veículo',\r\n VEHICLES_TITLE_LABEL : 'Administração de Veículos',\r\n VEHICLES_GROUP_LABEL : 'Veículos',\r\n\r\n EVENT_MAIN_ACTIONS_MODEL_LABEL: 'Ação Principal',\r\n EVENT_MAIN_ACTIONS_TITLE_LABEL: 'Administração de Ações Principais',\r\n EVENT_MAIN_ACTIONS_GROUP_LABEL: 'Ações Principais',\r\n\r\n POINT_MODEL_LABEL : 'Ponto',\r\n POINT_TITLE_LABEL : 'Administração de Pontos',\r\n POINT_GROUP_LABEL : 'Pontos',\r\n\r\n FORM_MODEL_LABEL : 'Formulário',\r\n FORM_TITLE_LABEL : 'Administração de Formulários',\r\n FORM_GROUP_LABEL : 'Formulários',\r\n\r\n OBSERVED_AREA_MODEL_LABEL : 'Área Observada',\r\n OBSERVED_AREA_TITLE_LABEL : 'Administração de Áreas Observadas',\r\n OBSERVED_AREA_GROUP_LABEL : 'Áreas Observadas',\r\n\r\n REGISTRATION_GROUP_LABEL : 'Cadastros',\r\n\r\n BANDS_GROUP_LABEL : 'Faixas',\r\n GASDUCT_GROUP_LABEL : 'Gasodutos',\r\n DC_GROUP_LABEL : 'Histórico de DCs',\r\n KILOMETERMARK_GROUP_LABEL : 'Marcos Quilométricos',\r\n DELIVERYPOINT_GROUP_LABEL : 'Pontos de Entrega e Estações',\r\n REFINARY_GROUP_LABEL : 'Refinarias',\r\n TERMINAL_GROUP_LABEL : 'Terminais',\r\n STRETCH_GROUP_LABEL : 'Trechos',\r\n OILDUCT_GROUP_LABEL : 'Oleodutos',\r\n VALVE_GROUP_LABEL : 'Válvulas',\r\n SIMF_GROUP_LABEL : 'SIMFs',\r\n OPS_GROUP_LABEL : 'OPS',\r\n\r\n COMMUNICATION_CHANNEL_GROUP_LABEL : 'Canais de Comunicação',\r\n REPORT_SOURCE_GROUP_LABEL : 'Origens',\r\n CATEGORY_168_GROUP_LABEL : 'Categorias 168',\r\n SUBCATEGORY_168_GROUP_LABEL : 'Subcategorias 168',\r\n CITY_GROUP_LABEL : 'Cidades',\r\n PRODUCT_GROUP_LABEL : 'Produtos',\r\n STATE_GROUP_LABEL : 'Estados',\r\n INSPECTION_TYPE_GROUP_LABEL : 'Tipos de Inspeção',\r\n\r\n HISTORIC_TITLE_LABEL : 'Rastro Histórico',\r\n\r\n MAP_TITLE_LABEL : 'Mapa',\r\n\r\n APP_TITLE : 'SIPD',\r\n APP_VERSION : '2.22.6',\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MessagePageComponent } from './message-page.component';\r\nimport { GeneralModule } from 'src/app/general/general.module';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n MessagePageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n GeneralModule\r\n ]\r\n})\r\nexport class MessagePageModule { }\r\n","import { Component, Inject, OnInit, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ESP, SORT_NAME_ASC } from 'src/app/common/constants';\r\nimport { ObservedAreaStatus, ObservedAreaStatusDescription, ObservedAreaTypeDescription, RegistrationType } from 'src/app/model/enums.enum';\r\nimport { ObservedAreaModel } from 'src/app/model/observed.area.model';\r\nimport { FilteredListComponent } from 'src/app/pages/filtered-list-component';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { ObservedAreaService } from 'src/app/service/model/observed.area.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { RegistrationListComponent } from '../../registration-list-component';\r\nimport { ObservedAreaFilterModel } from '../observed-area-filter/observed-area.filter.model';\r\n\r\n@Component({\r\n selector: 'app-observed-area-list',\r\n templateUrl: './observed-area-list.component.html',\r\n styleUrls: ['../../../../app.component.scss', './observed-area-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ObservedAreaListComponent extends RegistrationListComponent implements OnInit {\r\n\r\n statusDescription = ObservedAreaStatusDescription;\r\n typesDescription = ObservedAreaTypeDescription;\r\n\r\n constructor(logger: NGXLogger,\r\n dialog: MatDialog,\r\n protected toastr: ToastrService,\r\n public authorizationService: AuthorizationService,\r\n protected storageService: StorageService,\r\n protected observedAreaService: ObservedAreaService,\r\n protected changeDetector: ChangeDetectorRef,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, observedAreaService, dialog, 'observed-areas', environment.OBSERVED_AREA_GROUP_LABEL, environment.OBSERVED_AREA_TITLE_LABEL,\r\n environment.OBSERVED_AREA_MODEL_LABEL, storageService, changeDetector, toastr, goldenLayout, container);\r\n logger.debug('ObservedAreaListComponent.constructor()');\r\n this.registrationType = RegistrationType.OBSERVED_AREA;\r\n this.sortOptions = SORT_NAME_ASC;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.logger.debug('ObservedAreaListComponent.ngOnInit()');\r\n\r\n this.displayedColumns = ['select', 'identifier', 'status', 'name', 'areaType', 'createdAt',\r\n 'responsible.name', 'band', 'duct', 'km', 'startDate', 'endDate', 'updatedAt'];\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n protected newFilterModel() {\r\n return new ObservedAreaFilterModel();\r\n }\r\n\r\n postLoadProcess() {\r\n this.model.forEach((element: ObservedAreaModel) => {\r\n element.type = 'ObservedArea';\r\n });\r\n }\r\n\r\n hasLocation(observedAreaModel: ObservedAreaModel): boolean {\r\n return observedAreaModel &&\r\n (!!observedAreaModel.latLong ||\r\n (!!observedAreaModel.stretchStartLatLong && !!observedAreaModel.stretchEndLatLong));\r\n }\r\n\r\n /**\r\n * Retorna a entidade em formato string, contendo só os campos visualizados na interface, para Buscar.\r\n */\r\n protected getStringEntityForFilter(area: ObservedAreaModel): string {\r\n const identifier = (area.identifier) ? super.lowerAndTrimText(area.identifier) : '';\r\n const status = super.lowerAndTrimText(ObservedAreaStatusDescription[area.status]);\r\n const name = super.lowerAndTrimText(area.name);\r\n const areaType = super.lowerAndTrimText(ObservedAreaTypeDescription[area.areaType]);\r\n const createdAt = (area.createdAt) ? this.formatDate(area.createdAt) : '';\r\n const responsible = (area.responsible) ? super.lowerAndTrimText(this.getUserNameLoginTitle(area.responsible)) : '';\r\n const duct = super.lowerAndTrimText(area.duct);\r\n const band = super.lowerAndTrimText(area.band);\r\n const km = area.stretchStartKM && area.stretchEndKM ? area.stretchStartKM + ' - ' + area.stretchEndKM : (area.km ? area.km : '');\r\n const startedDate = (area.startDate) ? this.formatDate(area.startDate) : '';\r\n const endDate = (area.endDate) ? this.formatDate(area.endDate) : '';\r\n\r\n return identifier + ESP + status + ESP + name + ESP + areaType + ESP + createdAt + ESP + responsible + ESP + duct + ESP + band + ESP + km + ESP + startedDate + ESP + endDate;\r\n }\r\n \r\n getPropertyByPath(item: Object, property: string){\r\n switch (property) {\r\n case 'areaType':\r\n {\r\n const val = this.typesDescription[item['areaType']];\r\n return val ? val : '';\r\n }\r\n case 'km':\r\n {\r\n const val = item['stretchStartKM'] && item['stretchEndKM'] ? item['stretchStartKM'] + ' - ' +\r\n item['stretchEndKM'] : item['km'] ;\r\n return val ? val : '';\r\n }\r\n default: return super.getPropertyByPath(item, property);\r\n }\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n \r\n
    {{title}}
    [ {{getListCount()}} ]\r\n
    \r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n Filtro\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n ID \r\n {{element?.identifier}}\r\n Status \r\n \r\n \r\n {{ statusDescription[element?.status] }}\r\n \r\n \r\n Nome da Área {{ element?.name }} Tipo {{ typesDescription[element?.areaType] }} Data/Hora (Criação) {{element?.createdAt | date:'dd/MM/yyyy HH:mm'}} Responsável {{ element?.responsible | toView }} Faixa {{element?.band}} Duto {{element?.duct}} KM {{element?.stretchStartKM && element?.stretchEndKM ?\r\n element?.stretchStartKM + \" - \" + element?.stretchEndKM : element?.km}} Data de Início {{element?.startDate | date:'dd/MM/yyyy HH:mm'}} Data de Fim {{element?.endDate | date:'dd/MM/yyyy HH:mm'}} Atualizado {{element?.updatedAt | date:'dd/MM/yyyy HH:mm'}}
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { EventModel } from '../../../model/event.model';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { EventService } from '../../../service/model/event.service';\r\nimport { ResultOccurrenceDescription } from '../../../model/enums.enum';\r\nimport * as moment from 'moment';\r\nimport { UserModel } from '../../../model/user.model';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { EventFilterModel } from 'src/app/pages/event/event-filter/event.filter.model';\r\nimport { first } from 'rxjs/operators';\r\nimport { ESP } from 'src/app/common/constants';\r\n\r\n@Component({\r\n selector: 'app-event-list-dialog',\r\n templateUrl: './event-list-dialog.component.html',\r\n styleUrls: ['./event-list-dialog.component.scss']\r\n})\r\nexport class EventListDialogComponent implements OnInit {\r\n /* Lista de eventos */\r\n displayedColumns: string[];\r\n eventsModel: EventModel[] = [];\r\n dataSource: MatTableDataSource;\r\n selection = new SelectionModel(true, []);\r\n resultOccurrenceDescription = ResultOccurrenceDescription;\r\n\r\n @ViewChild(MatInput, { static: true }) searchInput: MatInput;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n constructor(public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public events : EventModel[],\r\n protected dialog: MatDialog,\r\n private logger: NGXLogger,\r\n private eventService: EventService,\r\n private toastr: ToastrService,\r\n @Inject(MAT_DIALOG_DATA) public inMemoryFilterModel: EventFilterModel) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.logger.debug('EventListDialogComponent.ngOnInit()');\r\n this.displayedColumns = ['select', 'validation','identifier', 'result.occurrence', 'date', 'analyst.name',\r\n 'communicationChannel', 'source', 'duct', 'valve', 'targetPointKM'];\r\n\r\n\r\n this.loadRecordsFromServer();\r\n this.sort.sort({id: \"identifier\", start: 'asc', disableClear: false});\r\n }\r\n\r\n loadRecordsFromServer(){\r\n this.logger.debug('EventListDialogComponent.loadRecordsFromServer()');\r\n\r\n let eventFilterModel = new EventFilterModel();\r\n this.updateFilterModel(this.inMemoryFilterModel, eventFilterModel);\r\n \r\n this.dataSource = new MatTableDataSource(this.eventsModel);\r\n this.eventService.loadFilteredListFromRestApi(null, null, null, eventFilterModel ).pipe(first()).subscribe((result : EventModel[] ) => {\r\n this.eventsModel = result ;\r\n this.buildDataSource();\r\n },\r\n error => {\r\n this.toastr.error(\"Erro ao buscar os eventos\",\"Erro\");\r\n this.logger.error(\"Erro ao buscar os eventos \" + JSON.stringify(error));\r\n });\r\n }\r\n\r\n buildDataSource(){\r\n this.logger.debug('EventListDialogComponent.buildDataSource()');\r\n this.dataSource = new MatTableDataSource(this.eventsModel);\r\n\r\n this.dataSource.filterPredicate = (entity: EventModel, filter: string): boolean => {\r\n return this.getStringEntityForFilter(entity).indexOf(filter) != -1;\r\n };\r\n\r\n this.dataSource.sortingDataAccessor = (data, sortHeaderId: string) => {\r\n return this.getPropertyByPath(data, sortHeaderId);\r\n };\r\n\r\n this.dataSource.sort = this.sort;\r\n\r\n this.selection.clear();\r\n }\r\n\r\n getPropertyByPath(item: Object, property: string){\r\n switch (property) {\r\n case 'targetPointKM':\r\n {\r\n const val = item['stretchStartKM'] && item['stretchEndKM'] ? item['stretchStartKM'] + ' - ' +\r\n item['stretchEndKM'] : item['targetPointKM'];\r\n return val ? val : '';\r\n }\r\n default:\r\n {\r\n let value = property.split('.').reduce(this.getProperty, item);\r\n if (typeof value === 'string'){\r\n value = this.lowerAndTrimText(value);\r\n }\r\n return value ? value : '';\r\n };\r\n }\r\n }\r\n\r\n /* reducer method */\r\n getProperty (o, i) {\r\n if ( !o ) { return ''; }\r\n return o[i];\r\n }\r\n\r\n applySearch(filterValue: string) {\r\n this.dataSource.filter = filterValue.trim().toLowerCase();\r\n this.selection.clear();\r\n }\r\n\r\n onRemoveSearch(){\r\n this.searchInput.value = '';\r\n this.dataSource.filter = '';\r\n this.selection.clear();\r\n }\r\n\r\n protected getStringEntityForFilter(event: EventModel): string {\r\n const identifier = (event.identifier) ? this.lowerAndTrimText(event.identifier) : '';\r\n const occurrence = event.result && event.result.occurrence ?\r\n this.lowerAndTrimText(this.resultOccurrenceDescription[event.result.occurrence]) : '';\r\n const date = (event.date) ? this.formatDate(event.date) : '';\r\n const analyst = (event.analyst) ? this.lowerAndTrimText(this.getUserNameLoginTitle(event.analyst)) : '';\r\n const communicationChannel = this.lowerAndTrimText(event.communicationChannel);\r\n const source = this.lowerAndTrimText(event.source);\r\n const duct = this.lowerAndTrimText(event.duct);\r\n const km = event.stretchStartKM && event.stretchEndKM ? event.stretchStartKM + ' - ' +\r\n event.stretchEndKM : (event.targetPointKM ? event.targetPointKM : '');\r\n const valve = this.lowerAndTrimText(event.valve);\r\n return identifier + ESP + status + ESP + occurrence + ESP + date + ESP + analyst + ESP + communicationChannel + ESP + source + ESP + duct + ESP + km + ESP + valve;\r\n }\r\n\r\n protected lowerAndTrimText(text: string) {\r\n return (text) ? text.trim().toLowerCase() : '';\r\n }\r\n\r\n formatDate(date: number){\r\n if (!date || date == 0)\r\n return \"\";\r\n const startMoment = moment(date);\r\n return startMoment.format('DD/MM/YYYY HH:mm');\r\n }\r\n\r\n getUserNameLoginTitle(user) {\r\n return UserModel.getUserTitle(user);\r\n }\r\n\r\n onSelectClick() {\r\n this.dialogRef.close(this.selection.selected);\r\n }\r\n\r\n masterToggle(){\r\n if(this.isAllSelected()) {\r\n this.selection.clear();\r\n }\r\n else {\r\n this.dataSource.filteredData.forEach(row => this.selection.select(row));\r\n }\r\n }\r\n\r\n isAllSelected(){\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.dataSource.filteredData.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n checkboxTip(row?: EventModel): string {\r\n if (!row) {\r\n return `${this.isAllSelected() ? 'Desmarcar' : 'Selecionar'} Todos`;\r\n }\r\n return `${this.selection.isSelected(row) ? 'Desmarcar' : 'Selecionar'} Evento`;\r\n }\r\n\r\n onCheckboxClick(alert: EventModel){\r\n this.selection.toggle(alert);\r\n }\r\n\r\n /**\r\n * Atualiza o filtro em memória\r\n */\r\n updateFilterModel(sourceFilter: EventFilterModel, targetFilter: EventFilterModel){\r\n for(const key in sourceFilter){\r\n targetFilter[key] = sourceFilter[key];\r\n }\r\n }\r\n\r\n /*** Valida se pode ser selecionado mais de um evento em caso seja chamado da janela para associar eventos */\r\n canSelectManyEvents(){\r\n if(this.inMemoryFilterModel.associatedEventId && this.selection?.selected.length > 0)\r\n return true; \r\n else if (this.selection?.selected.length == 1) \r\n return true; \r\n return false; \r\n }\r\n\r\n}\r\n","
    \r\n Selecione um Evento\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n Eventos\r\n \r\n search\r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n Validação\r\n \r\n \r\n check_circle_outline\r\n ID \r\n {{element?.identifier}}\r\n Ocorrência {{\r\n resultOccurrenceDescription[element?.result?.occurrence] }} Data/Hora {{element?.date | date:'dd/MM/yyyy HH:mm'}} Analista {{ element?.analyst | toView }} Canal de Comunicação {{ element?.communicationChannel }} Origem {{ element?.source }} Duto {{element?.duct}} Válvula {{element?.valve}} KM {{element?.stretchStartKM && element?.stretchEndKM ?\r\n element?.stretchStartKM + \" - \" + element?.stretchEndKM : element?.targetPointKM}}
    \r\n \r\n
    \r\n\r\n\r\n\r\n \r\n \r\n\r\n ","import { SafeUrl } from '@angular/platform-browser';\r\nimport { EntityModel } from './entity.model';\r\nimport DateUtils from '../service/util/date-utils';\r\nimport FieldUtils from '../service/util/field-utils';\r\nimport { OperationTypeDescription } from './enums.enum';\r\n\r\nexport class MarkerModel extends EntityModel {\r\n markerType: string;\r\n sourceType: string;\r\n patrolTeamId: string;\r\n operationId: string;\r\n operationType: string;\r\n operationIdentifier: string;\r\n inspectionId: string;\r\n inspectionName: string;\r\n message: string;\r\n location: {lat: number, lng: number}; // LocationModel no Marker\r\n appointedLocation: {lat: number, lng: number}; // LocationModel no Marker\r\n timestamp: number; // Date no Marker\r\n locationTimestamp: number; \r\n serverTimestamp: number;\r\n receivedServerTimestamp: number;\r\n priority: boolean;\r\n userId: string;\r\n userName: string; // É preenchido com o login quando não é profissional em canais de equipe\r\n uuid: string; // Identificador gerado para possibilitar a identificação, mesmo antes de ser salvo no banco\r\n channelId: string;\r\n channelName: string;\r\n\r\n fileId: string;\r\n fileUrl: string | ArrayBuffer | SafeUrl; // Preenchido apenas aqui no Web\r\n\r\n constructor(){\r\n super();\r\n }\r\n\r\n public static getPopupContent(marker: MarkerModel, patrolTeamName){\r\n return `
    Marcador de Estado
    \r\n
    ${ marker.message }
    \r\n
    Usuário: ${ marker.userName }
    \r\n
    Equipe: ${ patrolTeamName }
    \r\n
    Operação: ${ OperationTypeDescription[marker.operationType] }
    \r\n
    ID: ${ marker.operationIdentifier }
    \r\n ${ marker.inspectionName? '
    Ponto: ' + marker.inspectionName + '
    ': '' }\r\n
    Lat, Long: ${FieldUtils.coordToString(marker.location.lat)},${FieldUtils.coordToString(marker.location.lng)}
    \r\n
    Data/Hora da Localização: ${ marker?.locationTimestamp ? DateUtils.timestampToStringInMinutes(marker.locationTimestamp) : \"Não\"}
    \r\n
    Data/Hora: ${DateUtils.timestampToStringInMinutes(marker.timestamp)}
    \r\n `;\r\n }\r\n\r\n public static getTooltipContent(marker: MarkerModel){\r\n return `
    ${ marker.message }
    \r\n
    ${ marker.userName }         ${DateUtils.timestampToStringInMinutes(marker.timestamp)}
    \r\n
    ${ OperationTypeDescription[marker.operationType] + ' ' + marker.operationIdentifier}
    \r\n
    ${FieldUtils.coordToString(marker.location.lat)},${FieldUtils.coordToString(marker.location.lng)}
    \r\n `;\r\n }\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { OperationStatusDescription } from 'src/app/model/enums.enum';\r\nimport { UserService } from 'src/app/service/model/user.service';\r\nimport { VerificationService } from 'src/app/service/model/verification.service';\r\nimport { VerificationFilterModel } from './verification.filter.model';\r\nimport { LayerService } from 'src/app/service/model/layer.service';\r\nimport { PatrolTeamService } from 'src/app/service/model/patrol.team.service';\r\nimport { VerificationModel } from 'src/app/model/verification.model';\r\nimport { StorageService } from '../../../service/storage-service';\r\nimport { OperationFilterComponent } from 'src/app/general/filter-component/operation-filter-component';\r\nimport { SingleDataCacheService } from '../../../service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { first } from 'rxjs/operators';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-verification-filter-dialog',\r\n templateUrl: './verification-filter-dialog.component.html',\r\n styleUrls: ['./verification-filter-dialog.component.scss']\r\n})\r\nexport class VerificationFilterDialogComponent extends OperationFilterComponent {\r\n\r\n /** ENUMS */\r\n operationStatusDescription = OperationStatusDescription;\r\n \r\n constructor(patrolTeamService: PatrolTeamService,\r\n logger: NGXLogger,\r\n userService: UserService,\r\n layerService: LayerService,\r\n verificationService: VerificationService,\r\n singleDataCacheService: SingleDataCacheService,\r\n entityCacheService: EntityCacheService,\r\n protected storageService: StorageService,\r\n protected toastr: ToastrService,\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public dialogFilterModel: VerificationFilterModel,\r\n public filterModel: VerificationFilterModel) {\r\n super(logger, userService, layerService, patrolTeamService, singleDataCacheService, entityCacheService, verificationService, filterModel, storageService);\r\n }\r\n\r\n ngOnInit(): void{\r\n this.loggedUser = this.storageService.getLocalUser();\r\n this.loggedUserProfile = this.storageService.getLocalProfile();\r\n\r\n this.filterModel = new VerificationFilterModel();\r\n this.inMemoryFilterModel = this.dialogFilterModel;\r\n\r\n super.ngOnInit(); // A cópia do filtro será feita aqui\r\n }\r\n\r\n loadFormOptionsData() {\r\n this.loadAnalysts();\r\n this.loadPatrolTeams();\r\n this.loadPlacements();\r\n }\r\n\r\n loadPlacements(){\r\n this.entityCacheService.loadPlacements(this.loadingListService);\r\n }\r\n\r\n onFilter(){\r\n // Aqui é o único lugar que as lotações podem ser manipuladas na interface do filtro\r\n // Então se nenhuma lotação for selecionada precisamos voltar para o default\r\n if (this.filterModel.placements.length == 0) {\r\n this.filterModel.placements = this.storageService.getSpecificPlacementIds();\r\n }\r\n\r\n this.loadingListService.loadingOn();\r\n this.loadFilteredDataModel().pipe(first()).subscribe( (verifications : VerificationModel[]) => {\r\n this.dialogRef.close(verifications);\r\n }, error => {\r\n if(error.status == 413){\r\n this.toastr.warning(\"Sua consulta retornou mais de 2000 registros, por favor refina sua busca.\");\r\n this.dialogRef.close([]);\r\n }else{\r\n this.logger.error(error);\r\n }\r\n },\r\n () => {\r\n this.loadingListService.loadingOff();\r\n });\r\n }\r\n\r\n /**\r\n * Limpa todos os campos do filtro\r\n */\r\n clearFilter(){\r\n super.clearFilter();\r\n\r\n this.filterModel.placements = this.storageService.getSpecificPlacementIds();\r\n this.filterModel.patrolTeams = [];\r\n this.filterModel.eventIds = [];\r\n }\r\n}\r\n","
    \r\n Filtrar Verificações\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n Todos\r\n Arquivados\r\n Não Arquivados\r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n Hoje\r\n Especificado\r\n \r\n
    \r\n
    \r\n \r\n\r\n \r\n Hora Inicial\r\n \r\n query_builder\r\n \r\n\r\n \r\n\r\n \r\n Hora Final\r\n \r\n query_builder\r\n \r\n
    \r\n\r\n
    \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n\r\n \r\n \r\n \r\n\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { Component, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport * as moment from 'moment';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { PointFilterDialogComponent } from 'src/app/pages/registrations/point/point-filter-dialog/point-filter-dialog.component';\r\nimport { PointFilterModel } from 'src/app/pages/registrations/point/point-filter-dialog/point.filter.model';\r\nimport { InspectionBooleanDescription, PointStatus, PointStatusDescription } from 'src/app/model/enums.enum';\r\nimport { InspectionModel } from 'src/app/model/inspection.model';\r\nimport { InspectionPointModel } from 'src/app/model/inspection.point.model';\r\nimport { PointService } from 'src/app/service/model/point.service';\r\nimport FieldUtils from 'src/app/service/util/field-utils';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { ESP, LARGE_PAGE_SIZE } from '../../../common/constants';\r\nimport { environment } from 'src/environments/environment';\r\nimport { first } from 'rxjs/operators';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\n\r\n@Component({\r\n selector: 'app-import-points-dialog',\r\n templateUrl: './import-points-dialog.component.html',\r\n styleUrls: ['./import-points-dialog.component.scss']\r\n})\r\nexport class ImportPointsDialogComponent implements OnInit {\r\n\r\n displayedColumns: string[];\r\n\r\n inspectionPoints: InspectionPointModel[];\r\n\r\n dataSource: MatTableDataSource= new MatTableDataSource();\r\n\r\n selection = new SelectionModel(true, []);\r\n\r\n pointStatusDescription = PointStatusDescription;\r\n inspectionBooleanDescription = InspectionBooleanDescription;\r\n kmIntToString = FieldUtils.kmIntToString;\r\n\r\n filterModel: PointFilterModel;\r\n\r\n @ViewChild(MatInput, { static: true }) searchInput: MatInput;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n /** The MatPaginator bound to the grid to show data */\r\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\r\n\r\n // pagination\r\n initialPageSize = environment.useServerPagination? environment.defaultPageSize: LARGE_PAGE_SIZE;\r\n pageSize = environment.defaultPageSize;\r\n pageLength = undefined;\r\n sortOptions = 'identifier,ASC';\r\n\r\n constructor(public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public inspections: InspectionModel[],\r\n protected dialog: MatDialog,\r\n private logger: NGXLogger,\r\n private pointService: PointService,\r\n private toastr: ToastrService) {\r\n this.filterModel = new PointFilterModel();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.displayedColumns = ['select',\r\n 'identifier',\r\n 'status',\r\n 'source',\r\n 'creationDate',\r\n 'band',\r\n 'stretch',\r\n 'km',\r\n 'dc',\r\n 'accessType',\r\n 'category',\r\n 'vulnerabilityView',\r\n 'city',\r\n 'uf',\r\n 'reference'];\r\n\r\n this.filterModel.status = [PointStatus.APPROVED]; // Só os pontos aprovados podem ser importados para a operação\r\n this.sort.sort({id: \"identifier\", start: 'asc', disableClear: false});\r\n\r\n this.loadRecordsFromServer(0);\r\n }\r\n\r\n loadRecordsFromServer(pageIndex: number){\r\n this.pointService.loadFilteredRawListFromRestApi(this.paginator? pageIndex: null, this.paginator? (pageIndex==0? this.initialPageSize: this.pageSize): null, this.sortOptions, this.filterModel).pipe(first()).subscribe((result) => {\r\n this.inspectionPoints = this.handleRestApiResult(result);\r\n this.checkImportedByOperation();\r\n this.buildDataSource();\r\n },\r\n error => {\r\n this.toastr.error(\"Erro ao carregar pontos\",\"Erro\");\r\n this.logger.error(\"Erro ao carregar pontos \", error);\r\n });\r\n }\r\n\r\n buildDataSource(){\r\n this.dataSource.data = this.inspectionPoints;\r\n\r\n this.dataSource.filterPredicate = (entity: InspectionPointModel, filter: string): boolean => {\r\n return this.getStringEntityForFilter(entity).indexOf(filter) != -1;\r\n };\r\n\r\n this.dataSource.sort = this.sort;\r\n\r\n if (!environment.useServerPagination){\r\n this.dataSource.paginator = this.paginator;\r\n }\r\n \r\n this.selection.clear();\r\n }\r\n\r\n handleRestApiResult(result): InspectionPointModel[]{\r\n // checa se retorno eh um objeto pair\r\n if (result) {\r\n if ( result['first'] || result['second'] ){\r\n this.pageLength = result['first'];\r\n return result['second'];\r\n } else {\r\n return result;\r\n }\r\n }\r\n }\r\n\r\n protected lowerAndTrimText(text: string) {\r\n return (text) ? text.trim().toLowerCase() : '';\r\n }\r\n\r\n formatDate(date: number){\r\n if (!date || date == 0)\r\n return \"\";\r\n const startMoment = moment(date);\r\n return startMoment.format('DD/MM/YYYY HH:mm');\r\n }\r\n\r\n protected getStringEntityForFilter(point: InspectionPointModel): string {\r\n const identifier = this.lowerAndTrimText(point.identifier);\r\n const status = point.status ? this.lowerAndTrimText(this.pointStatusDescription[point.status]) : '';\r\n const source = this.lowerAndTrimText(point.source);\r\n const creationDate = this.formatDate(point.creationDate);\r\n const band = this.lowerAndTrimText(point.band);\r\n const stretch = this.lowerAndTrimText(point.stretch);\r\n const km = FieldUtils.kmIntToString(point.km);\r\n const dc = point.dc ? this.lowerAndTrimText(this.inspectionBooleanDescription[point.dc]): '';\r\n const accessType = this.lowerAndTrimText(point.accessType);\r\n const category = this.lowerAndTrimText(point.category);\r\n const vulnerabilityView = this.lowerAndTrimText(point.vulnerabilityView);\r\n const city = this.lowerAndTrimText(point.city);\r\n const uf = this.lowerAndTrimText(point.uf);\r\n const reference = this.lowerAndTrimText(point.reference);\r\n\r\n return identifier + ESP + status + ESP + source + ESP + creationDate + ESP + band + ESP + stretch + ESP + km + ESP + dc + ESP + accessType + ESP + category + ESP + vulnerabilityView + ESP + city + ESP + uf + ESP + reference;\r\n }\r\n\r\n sortSelectedPoints() {\r\n this.selection.selected.sort((a, b) => {\r\n let s1, s2: string;\r\n switch (this.dataSource.sort.active) {\r\n case 'km': {\r\n s1 = this.kmIntToString(a[this.dataSource.sort.active]);\r\n s2 = this.kmIntToString(b[this.dataSource.sort.active]);\r\n break;\r\n }\r\n case 'creationDate': {\r\n s1 = this.formatDate(a[this.dataSource.sort.active]);\r\n s2 = this.formatDate(b[this.dataSource.sort.active]);\r\n break;\r\n }\r\n default: {\r\n s1 = a[this.dataSource.sort.active];\r\n s2 = b[this.dataSource.sort.active];\r\n }\r\n }\r\n s1 = s1.toLowerCase();\r\n s2 = s2.toLowerCase();\r\n return this.dataSource.sort.direction === 'asc' ? s1.localeCompare(s2) : s2.localeCompare(s1);\r\n });\r\n }\r\n\r\n onImportClick(){\r\n if (this.dataSource.sort.direction != '') {\r\n this.sortSelectedPoints();\r\n }\r\n this.dialogRef.close(this.selection.selected);\r\n }\r\n\r\n masterToggle(){\r\n if(this.isAllSelected())\r\n this.selection.deselect(...this.getPageData());\r\n else\r\n this.selection.select(...this.getPageData());\r\n }\r\n\r\n isAllSelected() {\r\n //Chamada diretamente no html, datasource pode não estar inicializado ainda.\r\n if(!this.dataSource) return false; \r\n \r\n return this.getPageData().every((row) => this.selection.isSelected(row));\r\n }\r\n\r\n getPageData() {\r\n return this.dataSource._pageData(this.dataSource._orderData(this.dataSource.filteredData));\r\n }\r\n\r\n checkboxTip(row?: InspectionPointModel): string {\r\n if (!row) {\r\n return `${this.isAllSelected() ? 'Desmarcar' : 'Selecionar'} Todos`;\r\n }\r\n return `${this.selection.isSelected(row) ? 'Desmarcar' : 'Selecionar'} Ponto`;\r\n }\r\n\r\n onCheckboxClick(row) {\r\n this.selection.toggle(row);\r\n }\r\n\r\n applySearch(filterValue: string) {\r\n this.dataSource.filter = filterValue.trim().toLowerCase();\r\n this.selection.clear();\r\n }\r\n\r\n onRemoveSearch(){\r\n this.searchInput.value = '';\r\n this.dataSource.filter = '';\r\n this.selection.clear();\r\n }\r\n\r\n onPageChanged(event){\r\n if (environment.useServerPagination) {\r\n const pageIndex = event.pageIndex;\r\n this.loadRecordsFromServer(pageIndex.toString());\r\n }\r\n }\r\n\r\n openFilterDialog(){\r\n const dialogRef = this.dialog.open(PointFilterDialogComponent, {\r\n width: '800px',\r\n data: this.filterModel,\r\n panelClass: 'sipd-modal'\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.loadRecordsFromServer(0);\r\n this.selection.clear();\r\n }\r\n });\r\n }\r\n\r\n protected checkImportedByOperation() {\r\n this.inspections.forEach((inspection: InspectionModel) => {\r\n let ip: any = this.inspectionPoints.find(inspectionPoint => (inspection.inspectionPointId === inspectionPoint.identifier));\r\n if (ip) {\r\n ip.importedByOperation = true;\r\n }\r\n });\r\n }\r\n}\r\n","\r\n
    \r\n Importar do Cadastro\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n Pontos\r\n \r\n search\r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n ID {{element?.identifier}} Status {{pointStatusDescription[element?.status] || \"Sem status\"}} Origem {{element?.source}} Data/Hora da criação {{element?.creationDate | date:'dd/MM/yyyy HH:mm'}} Faixa {{element?.band}} Trecho {{element?.stretch}} KM {{kmIntToString(element?.km)}} DC {{inspectionBooleanDescription[element?.dc] || \" \"}} Tipo de Acesso {{element?.accessType}} Categoria {{element?.category}} Vulnerabilidade {{element?.vulnerabilityView}} Cidade {{element?.city}} UF {{element?.uf}} Referência {{element?.reference}}
    \r\n
    \r\n\r\n\r\n\r\n \r\n \r\n\r\n","import { Component, Inject, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { first } from 'rxjs/operators';\r\nimport { FILL_DATA_PREFIX, MESSAGE_PAGE, PAGE_READY_PREFIX } from 'src/app/common/constants';\r\nimport { MarkerFilterModel } from 'src/app/general/message/marker.filter.model';\r\nimport { MessageComponent, MessageComponentData, MessageComponentType } from 'src/app/general/message/message.component';\r\nimport { OperationType } from 'src/app/model/enums.enum';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { PatrolTeamModel } from 'src/app/model/patrolteam.model';\r\nimport { OperationService } from 'src/app/service/model/operation.service';\r\nimport { PatrolService } from 'src/app/service/model/patrol.service';\r\nimport { VerificationService } from 'src/app/service/model/verification.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { BaseGoldenPanel } from '../base-golden-panel/base-golden-panel';\r\nimport { UserModel } from '../../model/user.model';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\n\r\n@ProfileClassToConsole()\r\n@Component({\r\n selector: 'app-message-page',\r\n templateUrl: './message-page.component.html',\r\n styleUrls: ['./message-page.component.scss']\r\n})\r\nexport class MessagePageComponent extends BaseGoldenPanel implements OnInit, OnDestroy {\r\n\r\n loggedUser: UserModel;\r\n\r\n markerFilterModel: MarkerFilterModel;\r\n\r\n selectedComponentType: MessageComponentType;\r\n\r\n currentTeam: PatrolTeamModel;\r\n currentOperation: OperationModel;\r\n\r\n /** Componentes de mensagem */\r\n @ViewChild('messageComponent', {static: true}) messageComponent: MessageComponent;\r\n\r\n constructor(protected logger: NGXLogger,\r\n private storageService: StorageService,\r\n private patrolService: PatrolService,\r\n private verificationService: VerificationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, goldenLayout, container);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.glUpdateTabTitle('Mensagens: Carregando...');\r\n\r\n this.loggedUser = this.storageService.getLocalUser();\r\n\r\n this.subscribeFillDataEvent();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.glUnSubscribeEvent(FILL_DATA_PREFIX + MESSAGE_PAGE);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.glEmitEvent(PAGE_READY_PREFIX + MESSAGE_PAGE, null);\r\n }\r\n\r\n private subscribeFillDataEvent(){\r\n this.glSubscribeEvent(FILL_DATA_PREFIX + MESSAGE_PAGE, (data: MessageComponentData) => {\r\n this.initializeComponent(data);\r\n });\r\n }\r\n\r\n private initializeComponent(data: MessageComponentData){\r\n\r\n if(!data) return;\r\n\r\n this.selectedComponentType = data.componentType;\r\n\r\n this.markerFilterModel = new MarkerFilterModel();\r\n this.markerFilterModel.patrolTeamId = data.patrolTeamId;\r\n this.markerFilterModel.operationId = data.operationId;\r\n this.markerFilterModel.operationType = data.operationType;\r\n\r\n if(data.operationType === OperationType.PATROL){\r\n this.loadOperation(this.patrolService, data.operationType);\r\n }else{\r\n this.loadOperation(this.verificationService, data.operationType);\r\n }\r\n }\r\n\r\n private loadOperation(operationService: OperationService, operationType: string){\r\n operationService.loadById(this.markerFilterModel.operationId).pipe(first()).subscribe((operation: OperationModel) => {\r\n if(!operation) {\r\n return;\r\n }\r\n\r\n operation.type = operationType;\r\n this.currentOperation = operation;\r\n this.currentTeam = this.currentOperation.patrolTeam;\r\n let tabTitle = 'Mensagens: ' + this.currentOperation.identifier;\r\n\r\n this.glUpdateTabTitle(tabTitle);\r\n this.messageComponent.clearData();\r\n this.messageComponent.updateTitle(operation.identifier);\r\n this.messageComponent.loadMarkers(true); // true: indica que deve ser carregado todos os marcadores da operação \r\n }, error => this.logger.error(error));\r\n }\r\n}\r\n","\r\n","import { Directive, Inject, NgZone, OnDestroy, OnInit, ChangeDetectorRef } from '@angular/core';\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport * as GoldenLayout from \"golden-layout\";\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from \"ngx-golden-layout\";\r\nimport { NGXLogger } from \"ngx-logger\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { EntityModel } from '../../model/entity.model';\r\nimport { AuthorizationService } from \"../../service/authorization/authorization.service\";\r\nimport { StorageService } from \"../../service/storage-service\";\r\nimport { HttpError, REGISTRATION_UPDATE_EVENT } from '../../common/constants';\r\nimport { FilteredListComponent } from './../filtered-list-component';\r\nimport { EntityService } from 'src/app/service/model/entity.service';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { first } from 'rxjs/operators';\r\n\r\n\r\n/**\r\n * Componente para ouvir mensagens de atualizações envolvendo cadastros e atualizar a lista correspondente.\r\n * TODO lbarros esta classe tem muito código em comum com a {OperationListComponent}. Deve ser promovido o reuso.\r\n */\r\n@Directive()\r\nexport class RegistrationListComponent extends FilteredListComponent implements OnInit, OnDestroy {\r\n\r\n protected registrationType;\r\n\r\n constructor(public logger: NGXLogger,\r\n public authorizationService: AuthorizationService,\r\n protected entityService: EntityService,\r\n protected dialog: MatDialog,\r\n public componentName: string,\r\n public tabTitle: string,\r\n public title: string,\r\n public modelName: string, // Usado em diálogos de confirmação\r\n protected storageService: StorageService,\r\n protected changeDetector: ChangeDetectorRef,\r\n protected toastr: ToastrService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, entityService, dialog, componentName, tabTitle, title, modelName, storageService, changeDetector,toastr, goldenLayout, container);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.logger.debug('RegistrationListComponent.ngOnInit()');\r\n this.subscribeToRegistrationUpdateEvent();\r\n }\r\n\r\n ngOnDestroy(){\r\n super.ngOnDestroy();\r\n this.glUnSubscribeEvent(REGISTRATION_UPDATE_EVENT);\r\n }\r\n\r\n // Chamada quando algum item da lista foi atualizado pelo backend\r\n updateModelItem(id: string){\r\n const extraParams = new Map();\r\n extraParams.set('id', id);\r\n extraParams.set('metadata', this.registrationType);\r\n\r\n this.entityService.getRecord(id, extraParams).pipe(first()).subscribe((entity: EntityModel) => {\r\n if(!entity) {\r\n return;\r\n };\r\n\r\n this.findAndUpdateModel(entity);\r\n }, (error: HttpErrorResponse) => {\r\n if (error.status === HttpError.NOT_FOUND) { // objeto removido\r\n this.model = this.model.filter( model => model.id != id);\r\n this.buildDataSource();\r\n return;\r\n }\r\n this.logger.error(error);\r\n });\r\n }\r\n\r\n /** Se inscreve para o ouvir o websocket de mudanças nos registros */\r\n private subscribeToRegistrationUpdateEvent() {\r\n this.glSubscribeEvent(REGISTRATION_UPDATE_EVENT, (data) => {\r\n if (data.registrationType != this.registrationType) {\r\n return;\r\n }\r\n \r\n this.updateModelItem(data.id);\r\n \r\n });\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ProfileModel } from 'src/app/model/profile.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EntityService } from './entity.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProfileService extends EntityService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.registrations_address}/profiles`);\r\n }\r\n\r\n public getProfileById (id: string): Observable {\r\n return this.http.get(this.apiUrl + '/' + id);\r\n }\r\n}\r\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { first } from 'rxjs/operators';\r\nimport { SingleDataService } from 'src/app/service/model/single.data.service';\r\n\r\nimport { SingleDataModel } from '../../model/singleData.model';\r\nimport { LoadingListService } from '../../service/loading/loading-list.service';\r\nimport { StorageService } from '../../service/storage-service';\r\n\r\n@Component({\r\n selector: 'app-import-geo-kml-dialog',\r\n templateUrl: './import-geo-kml-dialog.component.html',\r\n styleUrls: ['./import-geo-kml-dialog.component.scss']\r\n})\r\nexport class ImportGeoKmlDialogComponent implements OnInit, OnDestroy {\r\n\r\n filename: string;\r\n kmlFile: File;\r\n\r\n uploadReplaceMode: boolean;\r\n validFilename: boolean;\r\n observations: string;\r\n\r\n loadingListService: LoadingListService = new LoadingListService();\r\n\r\n constructor(private logger: NGXLogger,\r\n public dialogRef: MatDialogRef,\r\n public toastr: ToastrService,\r\n private singleDataService: SingleDataService,\r\n private storageService: StorageService,\r\n @Inject(MAT_DIALOG_DATA) public dataType: string){}\r\n\r\n ngOnInit() {\r\n this.logger.debug(this.dataType);\r\n this.uploadReplaceMode = false;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.loadingListService.destroy();\r\n }\r\n\r\n selectFile(file: File) {\r\n let fileSize = undefined;\r\n if (file) { // Usuário selecionou um arquivo\r\n this.kmlFile = file;\r\n this.filename = file.name;\r\n fileSize = this.kmlFile.size/(1024*1024);\r\n } \r\n else { // Usuário pressionou Remover\r\n this.kmlFile = undefined;\r\n this.filename = undefined;\r\n }\r\n var fileExt = this.filename.split('.').pop();\r\n this.validFilename = (fileExt === \"kml\") ? true : false;\r\n if (this.validFilename) {\r\n this.observations = \"\";\r\n this.validFilename = fileSize <= 20;\r\n if (!this.validFilename) {\r\n this.observations = \"O Arquivo deve ter no máximo 20 MB\";\r\n }\r\n }\r\n else {\r\n this.observations = 'O arquivo selecionado dever ter extensão \"KML\"';\r\n }\r\n}\r\n\r\n getShowSpinner() {\r\n return this.loadingListService.getShowSpinner();\r\n }\r\n\r\n loadingOn() { \r\n this.loadingListService.loadingOn();\r\n }\r\n\r\n loadingOff() { \r\n this.loadingListService.loadingOff();\r\n }\r\n \r\n select() {\r\n this.logger.debug('ImportGeoKmlDialogComponent.select()');\r\n this.loadingOn();\r\n\r\n this.singleDataService.importKml(this.dataType, this.uploadReplaceMode, this.kmlFile).pipe(first()).subscribe( errors => {\r\n let jsonData = JSON.stringify(errors);\r\n const obj = JSON.parse(jsonData);\r\n if (obj) {\r\n var first: boolean = true;\r\n for(var id in obj) {\r\n if (first) {\r\n this.observations += \"Alguns elementos não puderam ser importados. Elementos com problema:\\n\";\r\n first = false;\r\n }\r\n if (id == \"---\") {\r\n this.observations += \"Avisos:\\n\"; \r\n for(var i=0; i {\r\n this.toastr.info(\"Dados restaurados com sucesso\");\r\n this.dialogRef.close(entity);\r\n });\r\n };\r\n}\r\n","
    \r\n Importar KML\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n Acrescentar Novos\r\n
    \r\n
    \r\n Substituir Todos\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n\r\n\r\n \r\n \r\n\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { Subscription } from 'rxjs';\r\nimport { FILTER_OPTION_ALL } from 'src/app/common/constants';\r\nimport { FilterComponent } from 'src/app/general/filter-component/filter-component';\r\nimport { ObservedAreaStatus, ObservedAreaStatusDescription, ObservedAreaTypeDescription, UserType } from 'src/app/model/enums.enum';\r\nimport { UserModel } from 'src/app/model/user.model';\r\nimport { LayerService } from 'src/app/service/model/layer.service';\r\nimport { ObservedAreaService } from 'src/app/service/model/observed.area.service';\r\nimport { UserService } from 'src/app/service/model/user.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { ObservedAreaFilterModel } from './observed-area.filter.model';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\n\r\n@Component({\r\n selector: 'app-observed-area-filter',\r\n templateUrl: './observed-area-filter.component.html',\r\n styleUrls: ['./observed-area-filter.component.scss', '../../../filter.component.scss']\r\n})\r\nexport class ObservedAreaFilterComponent extends FilterComponent implements OnInit, OnDestroy {\r\n\r\n @Input() inputFilterModel: ObservedAreaFilterModel;\r\n\r\n /** ENUMS */\r\n status = ObservedAreaStatus;\r\n statusDescription = ObservedAreaStatusDescription;\r\n typesDescription = ObservedAreaTypeDescription;\r\n\r\n responsibles: UserModel[];\r\n\r\n private reloadUsersSubscription: Subscription;\r\n \r\n constructor(protected logger: NGXLogger,\r\n protected userService: UserService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n protected layerService: LayerService,\r\n protected observedAreaService: ObservedAreaService,\r\n public entityCacheService: EntityCacheService,\r\n public filterModel: ObservedAreaFilterModel,\r\n protected storageService: StorageService) {\r\n super(logger, userService, layerService, singleDataCacheService, entityCacheService, observedAreaService, filterModel, storageService);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.filterModel = new ObservedAreaFilterModel();\r\n this.inMemoryFilterModel = this.inputFilterModel;\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this.reloadUsersSubscription?.unsubscribe();\r\n }\r\n\r\n loadFormOptionsData() {\r\n let _this = this; // Necessário por causa do contexto das callacks\r\n const onUsersLoad = function() {\r\n const responsibleUserTypes = [UserType.ANALYSIS_CCPD, UserType.COORDINATOR_CCPD, UserType.COORDINATOR_OPPD, UserType.PLANNER];\r\n _this.responsibles = _this.entityCacheService.getFilteredUsers(responsibleUserTypes);\r\n };\r\n this.entityCacheService.loadUsers(this.loadingListService, onUsersLoad);\r\n this.reloadUsersSubscription = this.entityCacheService.onUsersReload().subscribe(onUsersLoad);\r\n\r\n const metadatas: string[] = [\r\n \"Band\",\r\n \"City\"];\r\n \r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n\r\n /**\r\n * Limpa todos os campos do filtro\r\n */\r\n clearFilter(){\r\n super.clearFilter();\r\n\r\n this.filterModel.areaStatus = FILTER_OPTION_ALL;\r\n this.filterModel.responsibles = [];\r\n this.filterModel.types = [];\r\n this.filterModel.cities = [];\r\n this.filterModel.bands = [];\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n \r\n \r\n Todos\r\n \r\n {{ statusDescription[status.ACTIVE] }}\r\n \r\n {{ statusDescription[status.INACTIVE] }}\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n Hoje\r\n Especificado\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n\r\n \r\n Hora Inicial\r\n \r\n query_builder\r\n \r\n\r\n \r\n\r\n \r\n Hora Final\r\n \r\n query_builder\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n","import { UserType, OperationStatusDescription, OperationStatus, InspectionStatusTypeDescription, InspectionStatusType } from './../model/enums.enum';\r\nimport { FileKmlModel } from 'src/app/model/filekml.model';\r\n/* tslint:disable:import-spacing */\r\nimport { OnDestroy, ChangeDetectorRef, Inject, OnInit, Directive, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {NGXLogger} from 'ngx-logger';\r\nimport { Subscription } from 'rxjs';\r\nimport ObjectID from 'bson-objectid';\r\nimport {UserModel} from '../model/user.model';\r\nimport { OperationModel } from '../model/operation.model';\r\nimport {VehicleModel} from '../model/vehicle.model';\r\nimport {PatrolTeamModel} from '../model/patrolteam.model';\r\nimport {RouteModel} from '../model/route.model';\r\nimport {OperationService} from '../service/model/operation.service';\r\nimport { OperationType, PointStatus, ShiftDescription, ServiceTypeDescription } from 'src/app/model/enums.enum';\r\nimport * as moment from 'moment';\r\nimport {RouteGeographicalService} from '../service/model/route-geographical-service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { LOCATION_UPDATE_PREFIX, MAX_FILE_SIZE, MESSAGE_PAGE, MapInfo, SAVE_DATA_PREFIX } from 'src/app/common/constants';\r\nimport { FILL_DATA_PREFIX, MAP_PAGE } from 'src/app/common/constants';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { ConfirmationDialogComponent } from '../general/confirmation-dialog/confirmation-dialog.component';\r\nimport { InspectionModel } from '../model/inspection.model';\r\nimport { InspectionPointModel } from 'src/app/model/inspection.point.model';\r\nimport { PointType, AttachmentNumber } from '../model/enums.enum';\r\nimport { PointService } from 'src/app/service/model/point.service';\r\nimport FieldUtils from '../service/util/field-utils';\r\nimport ListUtils from 'src/app/service/util/list-utils';\r\nimport { ImportPointsDialogComponent } from '../general/operation/import-points-dialog/import-points-dialog.component';\r\nimport { InsertPointDialogComponent } from '../general/operation/insert-point-dialog/insert-point-dialog.component';\r\nimport { ImportPointsKmlDialogComponent } from '../general/operation/import-points-kml-dialog/import-points-kml-dialog.component';\r\nimport { first } from 'rxjs/operators';\r\nimport { CompanyModel } from '../model/company.model';\r\nimport { EntityModel } from '../model/entity.model';\r\nimport { CommonModel } from '../model/common.model';\r\nimport { MessageComponentData, MessageComponentType } from '../general/message/message.component';\r\nimport { CentralFilterModel } from './central/central-filter-dialog/central-filter.model';\r\nimport { EntityCacheService } from '../service/model/entity.cache.service';\r\nimport { EditComponent } from './edit-component';\r\nimport { AttachmentModel } from '../model/attachment.model';\r\nimport { AnswerListComponent } from '../general/answer-list/answer-list.component';\r\nimport * as esri_routing from \"@esri/arcgis-rest-routing\";\r\nimport * as esri_auth from '@esri/arcgis-rest-auth';\r\nimport tokml from '../general/tokml';\r\n\r\nconst authentication = new esri_auth.UserSession({\r\n token: MapInfo.ARCGIS_TOKEN\r\n})\r\n\r\n@Directive()\r\nexport abstract class OperationEditComponent extends EditComponent implements OnInit, OnDestroy {\r\n\r\n filteredTeams: PatrolTeamModel[]=[]; \r\n filteredCompanies: CompanyModel[]=[];\r\n\r\n shiftDescription = ShiftDescription;\r\n serviceTypeDescription = ServiceTypeDescription;\r\n inspectionStatusTypeDescription = InspectionStatusTypeDescription;\r\n\r\n /** The list of columns to display on the points grid */\r\n pointDisplayedColumns: string[];\r\n\r\n /** The data source for points table */\r\n pointsDataSource: MatTableDataSource;\r\n\r\n /** The structure to control points grid selection */\r\n pointSelection = new SelectionModel(true, []);\r\n\r\n // Usados somente quando os kmls são modificados pela interface\r\n fileKmlRoute: File;\r\n removedKmlRoute: boolean; \r\n\r\n tempId: string;\r\n\r\n private reloadCompaniesSubscription: Subscription;\r\n private reloadPatrolTeamsSubscription: Subscription;\r\n\r\n denySavePointsToRegistration:boolean = true;\r\n\r\n // Edição dos pontos no mapa\r\n editOnMap: boolean = false;\r\n\r\n noAccessPointsDataSource: MatTableDataSource;\r\n /** The list of columns to display on the not access points grid */\r\n noAccessPointDisplayedColumns: string[];\r\n\r\n // Pontos de inspeção que foram reportados como fora da cerca eletrónica\r\n electronicFencePoints: InspectionModel[] = [] ;\r\n \r\n finishedPoints = 0; // quantidade de pontos marcados como concluídos e que não foram reportados nas alertas por cerca eletrônica \r\n\r\n alertFilterModel: CentralFilterModel;\r\n\r\n isHiddenButtonArchiveForUser : boolean;\r\n\r\n // arquivos axexo\r\n attachmentFile1 : File;\r\n attachmentFile2 : File;\r\n attachmentFile3 : File;\r\n attachmentFile4 : File;\r\n attachmentFile5 : File;\r\n\r\n //arquivos backup, em caso de eliminar um ou mais arquivo e desfazer as modificações\r\n back_attachmentFile1 : File;\r\n back_attachmentFile2 : File;\r\n back_attachmentFile3 : File;\r\n back_attachmentFile4 : File;\r\n back_attachmentFile5 : File;\r\n\r\n seeFile : boolean = true;\r\n attachmentNumber = AttachmentNumber\r\n \r\n /* Lista de respostas do formulário */\r\n @ViewChild('listAnswerOperation', { static: true }) listAnswerComponent: AnswerListComponent;\r\n \r\n constructor(logger: NGXLogger,\r\n public operationType: OperationType,\r\n public operationService: OperationService,\r\n dialog: MatDialog,\r\n\r\n public modelName: string,\r\n public title: string,\r\n protected storageService: StorageService,\r\n\r\n public componentName: string,\r\n public tabTitle: string,\r\n public entityCacheService: EntityCacheService,\r\n\r\n protected routeGeographicalObjectService: RouteGeographicalService,\r\n protected changeDetector: ChangeDetectorRef,\r\n toastr: ToastrService,\r\n authorizationService: AuthorizationService,\r\n protected pointService: PointService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, operationService, dialog, modelName, title, storageService,\r\n componentName, tabTitle, toastr, authorizationService, goldenLayout, container);\r\n }\r\n\r\n ngOnInit() {\r\n this.logger.debug('OperationEditComponent.ngOnInit()');\r\n\r\n this.subscribeOnLocationUpdate();\r\n\r\n this.initializeFields(); // Precisa vir antes da super.ngOnInit\r\n super.ngOnInit();\r\n this.view['forms'] = [];\r\n\r\n this.pointDisplayedColumns = ['select',\r\n 'base',\r\n 'number',\r\n 'id',\r\n 'band',\r\n 'km',\r\n 'latlong',\r\n 'city',\r\n 'state',\r\n 'activities',\r\n 'status',\r\n 'access',\r\n 'form-fill'\r\n ];\r\n\r\n this.noAccessPointDisplayedColumns = ['number', \r\n 'band',\r\n 'km',\r\n 'latlong' \r\n ];\r\n \r\n if(!this.alertFilterModel){\r\n this.alertFilterModel = new CentralFilterModel(); \r\n }\r\n \r\n this.isOperationArchiveButtonHiddenForUser();\r\n\r\n this.glOnResize();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.logger.debug('OperationEditComponent.ngOnDestroy()');\r\n\r\n this.removeFromMap(true);\r\n\r\n this.reloadCompaniesSubscription?.unsubscribe();\r\n this.reloadPatrolTeamsSubscription?.unsubscribe();\r\n\r\n this.glUnSubscribeEvent(LOCATION_UPDATE_PREFIX + 'operation-edit');\r\n\r\n super.ngOnDestroy();\r\n }\r\n\r\n getOperationId(): string {\r\n if (this.model.id)\r\n return this.model.id;\r\n else {\r\n if (!this.tempId)\r\n this.tempId = ObjectID.generate(); // id temporário para mostrar operação no mapa\r\n return this.tempId;\r\n }\r\n }\r\n\r\n private removeFromMap(removeEdition: boolean) {\r\n if (!this.model)\r\n return;\r\n\r\n if (removeEdition) {\r\n if (this.editOnMap) {\r\n // Remove a edição mas deixa a operação lá do jeito que estiver\r\n this.editOnMap = false;\r\n this.glEmitEvent(FILL_DATA_PREFIX + MAP_PAGE, {operationId: this.getOperationId(), operationType: this.operationType,\r\n removeEditionMode: true});\r\n }\r\n }\r\n else {\r\n // Remove somente o temporário, mas mantém a operação se ela possuir informação de localização,\r\n // mantém inclusive o modo de edição no mapa se estiver ativo\r\n if (this.fileKmlRoute || this.removedKmlRoute)\r\n this.glEmitEvent(FILL_DATA_PREFIX + MAP_PAGE, {operationId: this.getOperationId(), operationType: this.operationType,\r\n removedKmlRoute: true});\r\n }\r\n }\r\n\r\n getEmptyPatrolTeam(): PatrolTeamModel {\r\n let patrolTeam: PatrolTeamModel = new PatrolTeamModel();\r\n patrolTeam.users = [new UserModel(), new UserModel()];\r\n patrolTeam.vehicle = new VehicleModel();\r\n patrolTeam.company = new CompanyModel();\r\n patrolTeam.patrolCoordinator = new UserModel();\r\n patrolTeam.shift = '';\r\n return patrolTeam;\r\n }\r\n\r\n initializeFields(){\r\n this.clearKmlRoute();\r\n\r\n // Inicializando campos para evitar erros no HTML\r\n this.view['startTime'] = \"\";\r\n\r\n this.view['patrolTeam'] = this.getEmptyPatrolTeam();\r\n\r\n this.view['inspections'] = [];\r\n\r\n this.buildPointsDataSource(0);\r\n }\r\n\r\n createOperationData() {\r\n this.logger.debug('OperationEditComponent.createOperationData()');\r\n\r\n this.initializeFields();\r\n\r\n this.initializeAnalystOrAuthor();\r\n\r\n this.view['status'] = OperationStatus.PLANNED;\r\n this.view['type'] = this.operationType;\r\n this.view['identifier'] = \"[NOVA]\";\r\n this.view['inspections'] = [];\r\n this.view['autoRoute'] = true;\r\n }\r\n\r\n clearCopyData(){\r\n this.copyKmlFiles();\r\n\r\n super.clearCopyData();\r\n\r\n this.model['identifier'] = null;\r\n this.model['status'] = OperationStatus.PLANNED;\r\n this.model['archived'] = false;\r\n this.model['executedPoints'] = null;\r\n this.model['situationFound'] = null;\r\n this.model['dateSituationFound'] = null;\r\n this.model['expired'] = null;\r\n this.model['expiredDate'] = null;\r\n this.model['updatedAt'] = null;\r\n this.model['lastSync'] = null;\r\n\r\n this.model['attachmentOpFile1'] = null;\r\n this.model['attachmentOpFile2'] = null;\r\n this.model['attachmentOpFile3'] = null;\r\n this.model['attachmentOpFile4'] = null;\r\n this.model['attachmentOpFile5'] = null;\r\n\r\n if (this.model['inspections']) {\r\n let inspections: InspectionModel [] = this.model['inspections'];\r\n if (inspections.length > 0) {\r\n inspections.forEach( (inspection: InspectionModel) => {\r\n inspection.identifier = null;\r\n inspection.status = 'NOT_STARTED';\r\n inspection.inspectionPointNoAccess = false;\r\n inspection.inspectionForms = null;\r\n });\r\n }\r\n }\r\n }\r\n\r\n mapViewToModel() {\r\n if (this.isSaving && this.isCreating())\r\n this.view['identifier'] = null;\r\n\r\n super.mapViewToModel();\r\n\r\n this.logger.debug('OperationEditComponent.mapViewToModel()');\r\n\r\n this.extractKmlNameAndBuildRouteObject();\r\n this.extractAttachmentFileName();\r\n }\r\n\r\n updateOperationFromPatrolTeam(operation: OperationModel) {\r\n // Melhoria para abrir operações antigas de antes da mudanças de placement e company (mas a equipe precisa estar atualizada)\r\n if (!operation.patrolTeam) return;\r\n\r\n if (!operation.company && operation.patrolTeam.company) {\r\n operation.company = operation.patrolTeam.company;\r\n }\r\n\r\n if (!operation.placement && operation.company) {\r\n operation.placement = operation.company.placement;\r\n }\r\n\r\n if (!operation.serviceType && operation.patrolTeam.serviceType) {\r\n operation.serviceType = operation.patrolTeam.serviceType;\r\n }\r\n }\r\n\r\n mapModelToView() {\r\n if (!this.model['type']) {\r\n this.model['type'] = this.operationType;\r\n }\r\n\r\n this.updateOperationFromPatrolTeam(this.model);\r\n\r\n super.mapModelToView();\r\n\r\n this.logger.debug('OperationEditComponent.mapModelToView()');\r\n\r\n const operation: OperationModel = this.model;\r\n if (operation.route) {\r\n if (operation.route.fileRouteKml) {\r\n this.view['filenameKmlRoute'] = operation.route.fileRouteKml.name.charAt(0) == '['? operation.route.fileRouteKml.name: \"[Rota Importada] \" + operation.route.fileRouteKml.name;\r\n }\r\n }\r\n\r\n if (!this.model['inspections'])\r\n this.view['inspections'] = [];\r\n\r\n if (!this.model['identifier']){\r\n this.view['identifier'] = \"[NOVA]\";\r\n }\r\n\r\n this.buildPointsDataSource(1);\r\n\r\n if(!this.model['executedPoints'])\r\n this.finishedPoints = 0;\r\n else\r\n this.finishedPoints = parseInt(this.model['executedPoints']); \r\n\r\n if (this.copy){\r\n this.view['analyst'] = null;\r\n this.view['author'] = null;\r\n this.initializeAnalystOrAuthor();\r\n }\r\n \r\n this.glUpdateTabTitle(this.modelName + ': ' + this.view['identifier']);\r\n\r\n if (this.model['attachmentOpFile1']) {\r\n this.view['attachmentFile1'] = this.model['attachmentOpFile1'].name + \".\" + this.model['attachmentOpFile1'].extension;\r\n }\r\n\r\n if (this.model['attachmentOpFile2']) {\r\n this.view['attachmentFile2'] = this.model['attachmentOpFile2'].name + \".\" + this.model['attachmentOpFile2'].extension;\r\n }\r\n\r\n if (this.model['attachmentOpFile3']) {\r\n this.view['attachmentFile3'] = this.model['attachmentOpFile3'].name + \".\" + this.model['attachmentOpFile3'].extension;\r\n }\r\n\r\n if (this.model['attachmentOpFile4']) {\r\n this.view['attachmentFile4'] = this.model['attachmentOpFile4'].name + \".\" + this.model['attachmentOpFile4'].extension;\r\n }\r\n\r\n if (this.model['attachmentOpFile5']) {\r\n this.view['attachmentFile5'] = this.model['attachmentOpFile5'].name + \".\" + this.model['attachmentOpFile5'].extension;\r\n }\r\n }\r\n\r\n onEnableEditClick() {\r\n if (this.canEdit()) {\r\n this.readOnly = false;\r\n\r\n this.initializeAnalystOrAuthor();\r\n }\r\n }\r\n\r\n clearPreviousData() {\r\n this.removeFromMap(true);\r\n this.clearKmlRoute();\r\n }\r\n\r\n initializeAnalystOrAuthor(){\r\n if (this.operationType == OperationType.EVENT_VERIFICATION) {\r\n if (!this.view['analyst']) {\r\n this.currentUserAsField('analyst');\r\n }\r\n }\r\n\r\n if (this.operationType == OperationType.PATROL) {\r\n if (!this.view['author']) {\r\n this.currentUserAsField('author');\r\n }\r\n }\r\n }\r\n\r\n loadFormOptionsData() {\r\n this.entityCacheService.loadUsers(this.loadingListService);\r\n\r\n this.entityCacheService.loadPlacements(this.loadingListService);\r\n //this.checkObjectInOptionData('placement', this.placements); // TODO scuri Não podemos mudar esse array\r\n\r\n let _this = this; // Necessário por causa do contexto das callacks\r\n\r\n const onCompaniesLoad = function() {\r\n _this.updateFilteredCompanies();\r\n _this.updateCompanyForCopy();\r\n };\r\n this.entityCacheService.loadCompanies(this.loadingListService, onCompaniesLoad);\r\n this.reloadCompaniesSubscription = this.entityCacheService.onCompaniesReload().subscribe(onCompaniesLoad);\r\n\r\n this.entityCacheService.loadPublishedForms(this.loadingListService);\r\n\r\n const onPatrolTeamsLoad = function() {\r\n _this.updateFilteredTeams();\r\n _this.updatePatrolTeamForCopy();\r\n };\r\n this.entityCacheService.loadPatrolTeams(this.loadingListService, onPatrolTeamsLoad);\r\n this.reloadPatrolTeamsSubscription = this.entityCacheService.onPatrolTeamsReload().subscribe(onPatrolTeamsLoad);\r\n }\r\n\r\n clearKmlRoute(removed?) {\r\n this.fileKmlRoute = undefined;\r\n this.view['filenameKmlRoute'] = undefined;\r\n this.view['KmlRouteId'] = undefined;\r\n this.view['route'] = undefined;\r\n this.removedKmlRoute = removed? true: undefined;\r\n this.view['autoRoute'] = false;\r\n }\r\n\r\n setKmlRouteFile(file: File): void {\r\n this.logger.debug('OperationEditComponent.setKmlRouteFile()');\r\n\r\n if (file) { // Usuário selecionou um arquivo\r\n // A Rota é importada aqui apenas para validação\r\n this.routeGeographicalObjectService.importKmlRoute(file, this.model).then( (geoRoute) => {\r\n geoRoute.on('ready', () => {\r\n if (this.routeGeographicalObjectService.validateRouteGeometry(geoRoute)) {\r\n this.fileKmlRoute = file;\r\n this.view['autoRoute'] = false;\r\n\r\n this.view['filenameKmlRoute'] = \"[Rota Importada] \" + file.name;\r\n this.view['KmlRouteId'] = ObjectID.generate(); // Para que a mudança possa ser detectada mesmo que o nome do arquivo seja identico ao anterior\r\n this.removedKmlRoute = false;\r\n\r\n if (this.editOnMap) this.sendEditionModeToMap();\r\n }\r\n else {\r\n this.clearKmlRoute();\r\n\r\n const title = 'KML Inválido!';\r\n const message = 'A Rota deve ser formada por ao menos uma linha.';\r\n this.toastr.error(message, title);\r\n }\r\n });\r\n geoRoute.on('error', () => {\r\n this.clearKmlRoute();\r\n\r\n const title = 'KML Inválido!';\r\n const message = 'Erro no arquivo KML de Rota';\r\n this.toastr.error(message, title);\r\n });\r\n });\r\n }\r\n else { // Usuário pressionou Remover\r\n this.clearKmlRoute(true);\r\n\r\n if (this.editOnMap) this.sendEditionModeToMap();\r\n }\r\n }\r\n\r\n copyKmlFiles(){\r\n const operation: OperationModel = this.model;\r\n if (operation.route && operation.route.fileRouteKml) {\r\n this.routeGeographicalObjectService.loadKMLFile(this.model.id, this.operationType, operation.route.fileRouteKml.name).pipe(first()).subscribe( (file) => {\r\n this.fileKmlRoute = file;\r\n\r\n if (operation.route && operation.route.fileRouteKml) {\r\n operation.route.fileRouteKml.id = undefined;\r\n }\r\n }, (error: any) => this.logger.error(error));\r\n }\r\n }\r\n\r\n private extractKmlNameAndBuildRouteObject() {\r\n if (this.fileKmlRoute) {\r\n let operation: OperationModel = this.model;\r\n if (!operation.route) {\r\n operation.route = new RouteModel();\r\n }\r\n\r\n operation.route.fileRouteKml = new FileKmlModel();\r\n operation.route.fileRouteKml.name = this.fileKmlRoute.name;\r\n operation.route.fileRouteKml.id = undefined;\r\n }\r\n }\r\n\r\n /**\r\n * @description Called when the user clicks the Save button. It saves the Operation.\r\n * @param saveClickEvent The buttonClick event of the Save button\r\n */\r\n onSaveClick(saveClickEvent) {\r\n this.logger.debug('OperationEditComponent.onSaveClick()');\r\n\r\n // Necessary to avoid the form to be submitted before attaching the KML files\r\n saveClickEvent?.preventDefault();\r\n\r\n this.isSaving = true;\r\n this.backupModel = this.copyModel(this.model);\r\n this.mapViewToModel();\r\n\r\n if (this.isCreating()) {\r\n this.saveCreatedModel();\r\n }\r\n else {\r\n this.saveEditedModel();\r\n }\r\n }\r\n\r\n saveEditedModel(){\r\n this.logger.debug('OperationEditComponent.saveEditedModel');\r\n\r\n const formElements = this.getFormElements();\r\n\r\n this.operationService.edit(this.model, formElements).pipe(first()).subscribe( entity => {\r\n (entity as OperationModel).type = this.operationType;\r\n\r\n this.entitySaved(entity);\r\n\r\n this.operationEdited(entity);\r\n },\r\n error => this.entitySaveError(error));\r\n }\r\n\r\n operationEdited(entity){}\r\n\r\n saveCreatedModel(){\r\n this.logger.debug('OperationEditComponent.saveCreatedModel');\r\n\r\n const formElements = this.getFormElements();\r\n\r\n this.operationService.create(this.model, formElements).pipe(first()).subscribe( entity => {\r\n (entity as OperationModel).type = this.operationType;\r\n \r\n // Quando salva uma operação nova, tem que remover o temporário do mapa\r\n this.removeFromMap(false);\r\n\r\n // Atualizando o ID dos componentes criados.\r\n // Com isso a próxima ação de salvar será reconhecida como uma edição\r\n this.id = entity.id;\r\n this.glUpdateCreateId(this.id);\r\n\r\n this.entitySaved(entity);\r\n\r\n this.operationCreated(entity);\r\n },\r\n error => this.entitySaveError(error));\r\n }\r\n\r\n operationCreated(entity){}\r\n\r\n /**\r\n * Mapeia elementos que serão inseridos nas chamadas de criação/edição de verificações, por exemplo arquivo KML de rota\r\n * e arquivo KML de pontos.\r\n */\r\n getFormElements() {\r\n const formElements = new Map();\r\n\r\n // If there's a new defined Route KML file, set it to the formElements to be sent on the request\r\n if (this.fileKmlRoute){\r\n formElements.set( 'fileKmlRoute', this.fileKmlRoute );\r\n }\r\n // Attachment File\r\n\r\n if(this.attachmentFile1){\r\n formElements.set('attachmentOpFile1', this.attachmentFile1);\r\n }\r\n\r\n if(this.attachmentFile2){\r\n formElements.set('attachmentOpFile2', this.attachmentFile2);\r\n }\r\n\r\n if(this.attachmentFile3){\r\n formElements.set('attachmentOpFile3', this.attachmentFile3);\r\n }\r\n\r\n if(this.attachmentFile4){\r\n formElements.set('attachmentOpFile4', this.attachmentFile4);\r\n }\r\n\r\n if(this.attachmentFile5){\r\n formElements.set('attachmentOpFile5', this.attachmentFile5);\r\n }\r\n\r\n return formElements;\r\n }\r\n\r\n private isInspectionFilled(elem: InspectionModel) {\r\n if ((elem.type != PointType.BASE) && (!elem.band ||\r\n (elem.inspectionPointId && !elem.km) || // Só testa Km nesse caso, para quem veio do cadastro\r\n !elem.location.latitude ||\r\n !elem.location.longitude))\r\n return false;\r\n return true;\r\n }\r\n\r\n hasNonBasePoint() {\r\n if (!this.view['inspections'] || (<[]>this.view['inspections']).length == 0)\r\n return false;\r\n\r\n return (<[]>this.view['inspections']).some( (elem: InspectionModel) => {\r\n if (elem.type != PointType.BASE) return true;\r\n else return false;\r\n })\r\n }\r\n\r\n isInspectionsFilled(): boolean {\r\n if (!this.view['inspections'] || (<[]>this.view['inspections']).length == 0)\r\n return true; // Não verifica o preenchimento se a lista está vazia\r\n\r\n return this.view['inspections'].every(this.isInspectionFilled);\r\n }\r\n\r\n getUpdatedOperation() {\r\n let copiedModel = this.copyModel(this.model);\r\n this.mapViewToModel();\r\n let updatedModel = this.model;\r\n this.model = copiedModel;\r\n return updatedModel;\r\n }\r\n\r\n onLocationClick() {\r\n // Envia os dados temporários modificados durante a edição\r\n this.glOpenContainer(MAP_PAGE, {operationId: this.getOperationId(), operationType: this.operationType, operation: this.getUpdatedOperation(), // Envia a operação atualizada\r\n fileKmlRoute: this.fileKmlRoute, removedKmlRoute: this.removedKmlRoute});\r\n }\r\n\r\n hasLocation(): boolean {\r\n return !!this.view['filenameKmlRoute'] || !!this.fileKmlRoute || this.removedKmlRoute ||\r\n (this.view['inspections'] && (<[]>this.view['inspections']).length > 0);\r\n }\r\n\r\n // ########################################################\r\n // GRID METHODS POINTS\r\n // #######################################################\r\n\r\n /**\r\n * Atualiza o datasource das TableDataSource do cliente. A tabela de verificações\r\n */\r\n buildPointsDataSource(update = 2){\r\n this.pointsDataSource = new MatTableDataSource(this.view['inspections']);\r\n this.pointSelection.clear();\r\n this.updateSavePointsToRegistration();\r\n this.updateNoAccessInspection();\r\n\r\n if (update == 1){\r\n if (this.editOnMap) this.sendEditionModeToMap();\r\n }\r\n\r\n if (update == 2) {\r\n if (this.view['autoRoute']) this.buildAutoRoute(); // Já chama a sendEditionModeToMap\r\n else if (this.editOnMap) this.sendEditionModeToMap();\r\n }\r\n }\r\n\r\n openConfirmDuplicatedPointDialog(info: string): Promise {\r\n return this.dialog.open(ConfirmationDialogComponent, {\r\n width: 'auto',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: 'Já existe um ponto com exatamente as mesmas coordenadas geográficas.',\r\n linesMsg: 'Deseja substituir os dados do ponto existente na base com os novos dados ou manter os dados existentes?\\nDados:\\n' + info,\r\n title: 'Ponto Duplicado',\r\n discardLabel: 'Manter',\r\n cancelLabel: 'Cancelar',\r\n okLabel: 'Substituir',\r\n showDiscardButton: true\r\n }\r\n }).afterClosed().toPromise().then( result => {\r\n return Promise.resolve(result);\r\n });\r\n }\r\n\r\n async saveDuplicatedPoints(duplicatedList: {wasCanceled: boolean, hasSaved: boolean, points: Array<{inspection:InspectionModel, inspectionPoint:InspectionPointModel}>}) {\r\n let p = duplicatedList.points.pop(); // remove ponto da lista\r\n if (!p || duplicatedList.wasCanceled) {\r\n // último ponto duplicado foi processado\r\n // Se algum deles foi salvo, então mostra lista de pontos e notifica edição de ponto se estiver aberta\r\n if (duplicatedList.hasSaved) {\r\n this.glOpenContainer('points', null); // TODO selecionar os pontos modificados/acrescentados\r\n this.glEmitEvent(SAVE_DATA_PREFIX + \"points-edit\", null);\r\n }\r\n return;\r\n }\r\n\r\n let inspection:InspectionModel = p.inspection;\r\n let inspectionPoint:InspectionPointModel = p.inspectionPoint;\r\n\r\n let info = '';\r\n\r\n if(inspectionPoint.band != inspection.band) {\r\n let infoBand_OLD = 'Faixa existente: ' + inspectionPoint.band;\r\n let infoBand_NEW = 'Nova Faixa: ' + inspection.band;\r\n info += infoBand_NEW + ' | ' + infoBand_OLD + '\\n';\r\n }\r\n\r\n if(FieldUtils.kmIntToString(inspectionPoint.km) != inspection.km) {\r\n let infoKM_OLD = 'KM existente: ' + FieldUtils.kmIntToString(inspectionPoint.km);\r\n let infoKM_NEW = 'Novo KM: ' + inspection.km;\r\n info += infoKM_NEW + ' | ' + infoKM_OLD + '\\n';\r\n }\r\n\r\n if(inspectionPoint.city != inspection.city) {\r\n let infoCity_OLD = 'Cidade existente: ' + (inspectionPoint.city ? inspectionPoint.city : '');\r\n let infoCity_NEW = 'Nova cidade: ' + (inspection.city ? inspection.city : '');\r\n info += infoCity_NEW + ' | ' + infoCity_OLD + '\\n';\r\n }\r\n\r\n if(inspectionPoint.uf != inspection.state) {\r\n let infoUF_OLD = 'UF existente: ' + (inspectionPoint.uf ? inspectionPoint.uf : '');\r\n let infoUF_NEW = 'Nova UF: ' + (inspection.state ? inspection.state : '');\r\n info += infoUF_NEW + ' | ' + infoUF_OLD + '\\n';\r\n }\r\n\r\n if (info == '') {\r\n // se todos os dados forem iguais, apenas adicionar o Id para registrar que ele já está no cadastro\r\n inspection.inspectionPointId = inspectionPoint.identifier;\r\n return;\r\n }\r\n\r\n let result = await this.openConfirmDuplicatedPointDialog(info); // Aqui a execução dessa função é interrompida (mas da função onSavePointsToRegistrationClick não)\r\n\r\n let resp = result.toString();\r\n if(resp == 'true') { // Substituir\r\n duplicatedList.hasSaved = true;\r\n inspectionPoint.band = inspection.band;\r\n inspectionPoint.km = FieldUtils.kmStringToInt(inspection.km);\r\n inspectionPoint.city = inspection.city;\r\n inspectionPoint.uf = inspection.state;\r\n this.pointService.editRecord(inspectionPoint).pipe(first()).subscribe((savedInspectionPoint: InspectionPointModel) => {\r\n inspection.inspectionPointId = savedInspectionPoint.identifier;\r\n },\r\n err => {\r\n this.toastr.error(\"Falha ao atualizar ponto \"+inspectionPoint?.identifier);\r\n this.logger.error(JSON.stringify(err));\r\n });\r\n }\r\n else if(resp == 'false') { // Cancelar\r\n duplicatedList.wasCanceled = true;\r\n }\r\n else { // Manter\r\n }\r\n\r\n this.saveDuplicatedPoints(duplicatedList); // Segue recursivamente para o próximo ponto e retorna para onSavePointsToRegistrationClick\r\n }\r\n\r\n saveNewPoint(inspection:InspectionModel){\r\n let inspectionPoint = new InspectionPointModel();\r\n inspectionPoint.latLong = inspection.location.latitude + ',' + inspection.location.longitude;\r\n inspectionPoint.band = inspection.band;\r\n inspectionPoint.km = FieldUtils.kmStringToInt(inspection.km);\r\n inspectionPoint.city = inspection.city;\r\n inspectionPoint.uf = inspection.state;\r\n\r\n inspectionPoint.creationDate = moment().valueOf();\r\n inspectionPoint.source = 'Web';\r\n if (this.authorizationService.getLoggedUserType() === UserType.COORDINATOR_CCPD || this.authorizationService.getLoggedUserType() === UserType.COORDINATOR_OPPD ){\r\n inspectionPoint.status = PointStatus.APPROVED;\r\n }\r\n else {\r\n inspectionPoint.status = PointStatus.IN_ANALYSIS;\r\n }\r\n\r\n this.pointService.createRecord(inspectionPoint).pipe(first()).subscribe((savedInspectionPoint: InspectionPointModel) => {\r\n // Mostra lista de pontos, se já está aberta apenas atualiza\r\n this.glOpenContainer('points', null); // TODO selecionar os pontos modificados/acrescentados\r\n\r\n // Atualiza esta lista\r\n inspection.inspectionPointId = savedInspectionPoint.identifier;\r\n },\r\n err => {\r\n this.toastr.error(\"Falha ao atualizar ponto \"+inspectionPoint?.identifier);\r\n this.logger.error(JSON.stringify(err));\r\n });\r\n }\r\n\r\n /** Abre o container de salvar no cadastro de pontos, passando o identificador da operação */\r\n /** Ao ser clicado, o sistema irá verificar se os novos pontos são ou não duplicatas de pontos existentes no cadastro */\r\n onSavePointsToRegistrationClick(){\r\n this.pointService.loadListFromRestApi().pipe(first()).subscribe((inspectionPoints:InspectionPointModel[]) =>{\r\n let duplicatedList = {wasCanceled: false, hasSaved: false, points: []};\r\n\r\n this.pointSelection.selected?.forEach((inspection:InspectionModel) => {\r\n let latLong = inspection.location.latitude + ',' + inspection.location.longitude;\r\n let inspectionPoint:InspectionPointModel = inspectionPoints.find( (inspectionPoint:InspectionPointModel) => inspectionPoint.latLong == latLong);\r\n if(inspectionPoint) {\r\n duplicatedList.points.push({inspection: inspection, inspectionPoint: inspectionPoint});\r\n }\r\n else {\r\n this.saveNewPoint(inspection); // TODO salvar todos os pontos em um único endpoint\r\n }\r\n });\r\n\r\n if (duplicatedList.points.length > 0) {\r\n this.saveDuplicatedPoints(duplicatedList);\r\n }\r\n });\r\n }\r\n\r\n onSaveToRegistrationClick(inspection: InspectionModel){\r\n this.pointService.loadListFromRestApi().pipe(first()).subscribe((inspectionPoints:InspectionPointModel[]) =>{\r\n let duplicatedList = {wasCanceled: false, hasSaved: false, points: []};\r\n\r\n let latLong = inspection.location.latitude + ',' + inspection.location.longitude;\r\n let inspectionPoint:InspectionPointModel = inspectionPoints.find( (inspectionPoint:InspectionPointModel) => inspectionPoint.latLong == latLong);\r\n if(inspectionPoint) {\r\n duplicatedList.points.push({inspection: inspection, inspectionPoint: inspectionPoint});\r\n }\r\n else {\r\n this.saveNewPoint(inspection); // TODO salvar todos os pontos em um único endpoint\r\n }\r\n\r\n if (duplicatedList.points.length > 0) {\r\n this.saveDuplicatedPoints(duplicatedList);\r\n }\r\n });\r\n }\r\n\r\n canSaveToRegistration(inspection: InspectionModel){\r\n if (!inspection || inspection.inspectionPointId || !inspection.km) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n /** Abre o diálogo de confirmação para remoção de pontos */\r\n onDeletePointsClick(){\r\n if (this.pointSelection.isEmpty()){\r\n this.toastr.warning('Selecione um ponto para excluir');\r\n return;\r\n }\r\n\r\n const openConfirmationSubscription = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: 'Confirma a remoção dos pontos selecionados?',\r\n title: 'Remover Pontos',\r\n okLabel: 'Remover'\r\n }\r\n }).afterClosed().pipe(first()).subscribe( (result: boolean) => {\r\n if (result){\r\n this.deleteSelectedPoints();\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => openConfirmationSubscription?.unsubscribe());\r\n }\r\n\r\n /**\r\n * Remove os pontos e atualiza o datasource\r\n */\r\n private deleteSelectedPoints(){\r\n this.pointSelection.selected.forEach( (selectedItem: InspectionModel) => {\r\n const id = this.view['inspections'].indexOf(selectedItem);\r\n this.view['inspections'].splice(id, 1);\r\n });\r\n\r\n this.pointSelection.clear();\r\n this.buildPointsDataSource();\r\n }\r\n\r\n onDeletePointClick(row: InspectionModel){\r\n const openConfirmationSubscription = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: 'Remover ponto(s) selecionado(s)?',\r\n title: 'Remover Ponto',\r\n okLabel: 'Remover'\r\n }\r\n }).afterClosed().pipe(first()).subscribe( (result: boolean) => {\r\n if (result){\r\n const id = this.view['inspections'].indexOf(row);\r\n this.view['inspections'].splice(id, 1);\r\n this.buildPointsDataSource();\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => openConfirmationSubscription?.unsubscribe());\r\n }\r\n\r\n onMovePointUp(){\r\n const point = this.pointSelection.selected[0];\r\n const id = this.view['inspections'].indexOf(point);\r\n\r\n if (id === 0) {\r\n return;\r\n }\r\n\r\n this.view['inspections'].splice(id, 1);\r\n this.view['inspections'].splice(id - 1, 0, point);\r\n\r\n // Não chama a buildPointsDataSource() propositadamente,\r\n // Porque estamos mudando apenas a ordem dos pontos\r\n this.pointsDataSource = new MatTableDataSource(this.view['inspections']);\r\n if (this.view['autoRoute']) this.buildAutoRoute();\r\n if (this.editOnMap) this.sendEditionModeToMap();\r\n }\r\n\r\n onMovePointDown(){\r\n const point = this.pointSelection.selected[0];\r\n const id = this.view['inspections'].indexOf(point);\r\n\r\n if (id === this.view['inspections'].length-1) {\r\n return;\r\n }\r\n\r\n this.view['inspections'].splice(id, 1);\r\n this.view['inspections'].splice(id + 1, 0, point);\r\n\r\n // Não chama a buildPointsDataSource() propositadamente,\r\n // Porque estamos mudando apenas a ordem dos pontos\r\n this.pointsDataSource = new MatTableDataSource(this.view['inspections']);\r\n if (this.view['autoRoute']) this.buildAutoRoute();\r\n if (this.editOnMap) this.sendEditionModeToMap();\r\n }\r\n\r\n onImportPointsClick(){\r\n let dialogRef = this.dialog.open(ImportPointsDialogComponent, {\r\n data:this.view['inspections'],\r\n panelClass: 'sipd-modal'\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe( (inspectionPoints:InspectionPointModel[]) => {\r\n let inspections:InspectionModel[] = this.view['inspections'];\r\n\r\n if(inspectionPoints && inspectionPoints.length > 0) {\r\n inspectionPoints.forEach((inspectionPoint:InspectionPointModel) => {\r\n let inspection = new InspectionModel();\r\n inspection.inspectionPointId = inspectionPoint.identifier;\r\n inspection.km = FieldUtils.kmIntToString(inspectionPoint.km);\r\n let latlong:any = inspectionPoint.latLong.split(\",\");\r\n inspection.location.latitude = latlong[0];\r\n inspection.location.longitude = latlong[1];\r\n inspection.band = inspectionPoint.band;\r\n inspection.city = inspectionPoint.city;\r\n inspection.state = inspectionPoint.uf;\r\n inspection.name = inspection.band + ' ' + inspection.km;\r\n inspections.push(inspection);\r\n });\r\n this.view['inspections'] = inspections;\r\n this.buildPointsDataSource();\r\n }\r\n });\r\n }\r\n\r\n onInsertPointClick(){\r\n const insertPointDialogComponent = this.dialog.open(InsertPointDialogComponent, {\r\n width: '800px',\r\n panelClass: 'sipd-modal'\r\n }).afterClosed().pipe(first()).subscribe( (result) => {\r\n if (result) {\r\n this.view['inspections'].push(result);\r\n this.buildPointsDataSource();\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => insertPointDialogComponent?.unsubscribe());\r\n }\r\n\r\n onEditPointClick(row: InspectionModel){\r\n const insertPointDialogComponent = this.dialog.open(InsertPointDialogComponent, {\r\n width: '800px',\r\n data: row,\r\n panelClass: 'sipd-modal'\r\n }).afterClosed().pipe(first()).subscribe( (result: boolean) => {\r\n if (result) {\r\n this.buildPointsDataSource();\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => insertPointDialogComponent?.unsubscribe());\r\n }\r\n\r\n onCopyPointClick(row: InspectionModel) {\r\n let newPoint: InspectionModel = this.copyModel(row);\r\n newPoint.status = InspectionStatusType.NOT_STARTED;\r\n newPoint.inspectionPointNoAccess = false;\r\n\r\n const insertPointDialogComponent = this.dialog.open(InsertPointDialogComponent, {\r\n width: '800px',\r\n data: newPoint,\r\n panelClass: 'sipd-modal'\r\n }).afterClosed().pipe(first()).subscribe( (result: boolean) => {\r\n if (result) {\r\n this.view['inspections'].push(result);\r\n this.buildPointsDataSource();\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => insertPointDialogComponent?.unsubscribe());\r\n }\r\n\r\n onKmlImportPointClick(){\r\n const importPointsKmlDialogComponent = this.dialog.open(ImportPointsKmlDialogComponent, {\r\n width: '800px',\r\n data: this.view['inspections'],\r\n panelClass: 'sipd-modal'\r\n }).afterClosed().pipe(first()).subscribe( (result: boolean) => {\r\n if (result) {\r\n this.buildPointsDataSource();\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => importPointsKmlDialogComponent?.unsubscribe());\r\n }\r\n\r\n /**\r\n * Ação de alteração de ponto em base\r\n */\r\n onChangeBasePoint(item: any) {\r\n if (item['type'] !== PointType.BASE) {\r\n item['type'] = PointType.BASE;\r\n } else {\r\n item['type'] = PointType.CRITICAL_POINT;\r\n }\r\n\r\n if (this.editOnMap) this.sendEditionModeToMap();\r\n }\r\n\r\n kmlStringToFile(kmlStr: string){\r\n let strArray = [];\r\n strArray.push(kmlStr);\r\n let blob = new Blob(strArray);\r\n let arrayOfBlob = new Array();\r\n arrayOfBlob.push(blob);\r\n let file = new File(arrayOfBlob, '[Rota Automatizada]');\r\n return file;\r\n }\r\n\r\n getKmlRoute(resultGeoJson) {\r\n let kmlStr = tokml(resultGeoJson, {\r\n name: 'Rota Automatizada',\r\n description: 'description'\r\n });\r\n\r\n let fileKmlRoute = this.kmlStringToFile(kmlStr);\r\n return fileKmlRoute;\r\n }\r\n\r\n buildKmlRoute(resultGeoJson){\r\n let fileKmlRoute = resultGeoJson? this.getKmlRoute(resultGeoJson): undefined;\r\n if (!fileKmlRoute) {\r\n // Limpa a rota sem afetar o flag de rota automática\r\n this.clearKmlRoute();\r\n this.view['autoRoute'] = true;\r\n }\r\n else {\r\n this.fileKmlRoute = fileKmlRoute;\r\n this.removedKmlRoute = false;\r\n this.view['filenameKmlRoute'] = \"[Rota Automatizada]\";\r\n this.view['KmlRouteId'] = ObjectID.generate(); // Para que a mudança possa ser detectada mesmo que o nome do arquivo seja identico ao anterior\r\n }\r\n\r\n // envía os dados temporarios para o mapa\r\n if (this.editOnMap) this.sendEditionModeToMap();\r\n }\r\n\r\n buildAutoRoute(){\r\n let stops = [];\r\n\r\n let inspections: InspectionModel [] = this.view['inspections'];\r\n \r\n inspections.forEach(inspection => {\r\n const coordinates = [+inspection.location.longitude, +inspection.location.latitude]; // Note que é invertido em coordinates (longitude, latitude)\r\n stops.push(coordinates)\r\n });\r\n\r\n if(stops.length>1){\r\n esri_routing.solveRoute({\r\n stops: stops,\r\n endpoint: 'https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World',\r\n authentication\r\n }).then(response => {\r\n const resultGeoJson = response.routes.geoJson as any;\r\n let coordinates = resultGeoJson.features[0].geometry.coordinates;\r\n if(coordinates){\r\n this.buildKmlRoute(resultGeoJson);\r\n this.toastr.info(\"Rota automática gerada!\");\r\n }\r\n }).catch((error) => {\r\n this.logger.error(error);\r\n this.toastr.warning(\"Ocorreu um problema ao utilizar o serviço de rota automática do ArcGIS. Tente novamente mais tarde.\");\r\n });\r\n }\r\n else { // 1 ponto ou menos\r\n this.buildKmlRoute(null); // Limpa a rota automática se existia uma\r\n }\r\n }\r\n\r\n OnChangeAutomaticRoute() {\r\n if(this.view['autoRoute']){ // se o botão estava marcado\r\n this.view['autoRoute'] = false;\r\n if (this.editOnMap) this.sendEditionModeToMap();\r\n }\r\n else{ //se o botão não estava marcado\r\n //verifico se a janela do mapa esta aberta em modo de edição\r\n if(this.editOnMap){\r\n const openConfirmationSubscription = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n disableClose: true,\r\n data:{\r\n msg: 'Atenção! Esta operação irá descartar quaisquer edições realizadas na rota. Confirma a operação?',\r\n title: 'Mensagem',\r\n okLabel: 'Confirmar'\r\n }\r\n }).afterClosed().pipe(first()).subscribe( (result: boolean) => {\r\n if (result){\r\n this.view['autoRoute'] = true;\r\n this.buildAutoRoute();\r\n }\r\n else{\r\n this.view['autoRoute'] = false;\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => openConfirmationSubscription?.unsubscribe());\r\n }\r\n else {\r\n this.view['autoRoute'] = true;\r\n this.buildAutoRoute();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Verifica se ponto é uma base\r\n */\r\n isBasePoint(item: any) {\r\n return item['type'] === PointType.BASE;\r\n }\r\n\r\n formatPointActivities(activities: Array) {\r\n // Usado apenas para visualização na lista de pontos\r\n let ret: string = \"\";\r\n\r\n if (!activities)\r\n return ret;\r\n\r\n for( let i=0; i {\r\n if (inspection.inspectionPointId || // Se já está no cadastro ou\r\n !inspection.km) { // Falta o km\r\n this.denySavePointsToRegistration = true;\r\n }\r\n });\r\n }\r\n\r\n masterTogglePoints() {\r\n if(this.isAllSelectedPoints()) {\r\n this.pointSelection.clear();\r\n }\r\n else {\r\n this.pointsDataSource.filteredData.forEach(row => this.pointSelection.select(row));\r\n }\r\n this.updateSavePointsToRegistration();\r\n }\r\n\r\n isAllSelectedPoints(){\r\n const numSelected = this.pointSelection.selected.length;\r\n const numRows = this.pointsDataSource.filteredData.length;\r\n return numSelected === numRows;\r\n }\r\n\r\n checkboxTipPoints(row?: InspectionModel): string {\r\n if (!row) {\r\n return `${this.isAllSelectedPoints() ? 'Desmarcar' : 'Selecionar'} Todos`;\r\n }\r\n return `${this.pointSelection.isSelected(row) ? 'Desmarcar' : 'Selecionar'} Ponto`;\r\n }\r\n\r\n onCheckboxPointsClick(row) {\r\n this.pointSelection.toggle(row);\r\n this.updateSavePointsToRegistration();\r\n }\r\n\r\n sendEditionModeToMap(openMap?) {\r\n let data = {\r\n editionMode: this.editOnMap,\r\n autoRoute: this.view['autoRoute'],\r\n operationId: this.getOperationId(),\r\n operation: this.getUpdatedOperation(), // Envia a operação atualizada\r\n inspections: this.view['inspections'],\r\n fileKmlRoute: this.fileKmlRoute,\r\n removedKmlRoute: this.removedKmlRoute}; // Envia os dados temporários modificados durante a edição\r\n\r\n if (openMap)\r\n this.glOpenContainer(MAP_PAGE, data);\r\n else\r\n this.glEmitEvent(FILL_DATA_PREFIX + MAP_PAGE, data);\r\n }\r\n\r\n onEditOnMapClick(){\r\n if(!this.editOnMap) this.editOnMap = true;\r\n else this.editOnMap = false;\r\n\r\n this.sendEditionModeToMap(true);\r\n }\r\n\r\n private subscribeOnLocationUpdate(){\r\n this.glSubscribeEvent(LOCATION_UPDATE_PREFIX + 'operation-edit', (data) => {\r\n // Emitido quando uma informação de localização da operação (pontos ou rotas) é modificada diretamente no mapa (vem do mapa)\r\n if (data.id == this.getOperationId()) {\r\n this.logger.debug(\"OperationEditComponent.OnLocationUpdate\");\r\n if (data.clearEditionMode) {\r\n this.editOnMap = false;\r\n return;\r\n }\r\n else {\r\n if (data.inspections) {\r\n this.view['inspections'] = this.copyModel(data.inspections);\r\n this.buildPointsDataSource(0);\r\n this.toastr.info(\"Pontos atualizados a partir do mapa!\");\r\n }\r\n\r\n if (data.removedKmlRoute) {\r\n this.clearKmlRoute(true);\r\n this.view['autoRoute'] = data.autoRoute; // O mapa só consegue mudar para false (essa atribuição é redundante)\r\n this.toastr.info(\"Rota removida a partir do mapa!\");\r\n }\r\n else if (data.fileKmlRoute) {\r\n this.fileKmlRoute = data.fileKmlRoute;\r\n this.view['KmlRouteId'] = ObjectID.generate(); // Para cada modificação gera um novo Id\r\n this.view['filenameKmlRoute'] = \"[Rota Editada]\";\r\n this.removedKmlRoute = false;\r\n this.view['autoRoute'] = data.autoRoute; // O mapa só consegue mudar para false\r\n this.toastr.info(\"Rota atualizada a partir do mapa!\");\r\n }\r\n else {\r\n // Rota não foi modificada no mapa, mas os pontos foram\r\n // Verifica se é rota automatizada e gera uma nova\r\n if (data.inspections && this.view['autoRoute']) {\r\n this.buildAutoRoute();\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n onHistoricalTrackingClick() {\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingOperation: this.model});\r\n }\r\n\r\n canHasHistoricalTracking(): boolean {\r\n let operation = this.model as OperationModel;\r\n if (operation && operation.status != OperationStatus.PLANNED\r\n && operation.status != OperationStatus.SENT)\r\n return true;\r\n else\r\n return false;\r\n }\r\n \r\n onMessagesClick() {\r\n this.openMessageComponent(this.model);\r\n }\r\n \r\n openMessageComponent(operation: OperationModel){\r\n const messageData: MessageComponentData = new MessageComponentData();\r\n messageData.componentType = MessageComponentType.OPERATION_MESSAGE;\r\n messageData.operationId = operation.id;\r\n messageData.operationType = operation.type;\r\n this.glOpenContainer(MESSAGE_PAGE, messageData);\r\n }\r\n \r\n isOperationArchiveButtonHiddenForUser() {\r\n this.isHiddenButtonArchiveForUser = !this.authorizationService.isOperationArchiveAllowed(); \r\n }\r\n \r\n canArchive(): boolean{\r\n if (!this.model)\r\n return false;\r\n\r\n if (this.authorizationService.isAdmin())\r\n return true;\r\n\r\n let canArchive = this.authorizationService.isControl();\r\n if (canArchive) {\r\n if (!this.hasArchivalRequirements(this.model as CommonModel))\r\n canArchive = false;\r\n }\r\n\r\n return canArchive;\r\n }\r\n\r\n // Sobreescrito para verificações e rondas\r\n hasArchivalRequirements(model: CommonModel){\r\n return true;\r\n }\r\n\r\n onArchiveClick(){\r\n let entities: EntityModel[] = [];\r\n entities.push(this.model);\r\n this.operationService.archive(entities).pipe(first()).subscribe( values => {\r\n let archiveButtonLabel = this.model['archived'] ? 'Arquivar' : 'Desarquivar';\r\n this.toastr.info('Ação de ' + archiveButtonLabel + ' ' + this.modelName + ' foi realizada com sucesso.');\r\n this.view['archived'] = this.model['archived'];\r\n this.updateInitialView('archived');\r\n this.glEmitEvent(SAVE_DATA_PREFIX + this.componentName, {entity: this.model});\r\n }, error => this.logger.error(error));\r\n }\r\n\r\n replaceRunTimeData(data){\r\n // Substitui mudanças dinamicas, que independem da edição do usuário\r\n\r\n this.replaceModelViewData(data, 'updatedAt'); // Não converter como data\r\n this.replaceModelViewData(data, 'expired');\r\n this.replaceModelViewData(data, 'status');\r\n this.replaceModelViewData(data, 'archived');\r\n this.replaceModelViewData(data, 'executedPoints');\r\n this.replaceModelViewData(data, 'situationFound');\r\n this.replaceModelViewData(data, 'dateSituationFound'); // Não converter como data\r\n this.replaceModelViewData(data, 'lastSync');\r\n\r\n ////////// InspectionStatus e InspectionAccess\r\n let updatedInspections: InspectionModel [] = data.inspections;\r\n let modelInspections: InspectionModel [] = this.model['inspections'];\r\n let viewInspections: InspectionModel [] = this.view['inspections'];\r\n let initialViewInspections: InspectionModel [] = this.initialView['inspections'];\r\n\r\n // Para todas as inspeções que vieram do backend\r\n // Atualiza somente os dados de InspectionForm, InspectionStatus e InspectionAccess dos pontos em memória\r\n // Temos 3 listas para atualizar: model, view e initialView\r\n updatedInspections.forEach(updatedInspection => {\r\n let modelinspection = modelInspections.find( isp => isp.identifier == updatedInspection.identifier)\r\n if (modelinspection) {\r\n this.updateInspection(modelinspection, updatedInspection);\r\n }\r\n\r\n let viewInspection = viewInspections.find( isp => isp.identifier == updatedInspection.identifier)\r\n if (viewInspection) {\r\n this.updateInspection(viewInspection, updatedInspection);\r\n }\r\n\r\n // Não dá para chamar essas duas funções, então fazemos uma atualização manual da initialView\r\n // this.backupInitialView(); -- copiaria tudo, mesmo se temos algumas modificações em outros lugares\r\n // this.updateInitialView('inspections'); -- copiaria apenas a referência\r\n\r\n let initialViewInspection = initialViewInspections.find( isp => isp.identifier == updatedInspection.identifier)\r\n if (initialViewInspection) {\r\n this.updateInspection(initialViewInspection, updatedInspection);\r\n }\r\n });\r\n\r\n this.pointsDataSource = new MatTableDataSource(this.view['inspections']);\r\n this.updateNoAccessInspection();\r\n }\r\n\r\n private updateInspection(inspection: InspectionModel, updatedInspection: InspectionModel){\r\n inspection.status = updatedInspection.status;\r\n inspection.inspectionPointNoAccess = updatedInspection.inspectionPointNoAccess;\r\n inspection.inspectionForms = updatedInspection.inspectionForms;\r\n } \r\n\r\n getFormNameAndInspection(form) {\r\n if (!form) { return null; }\r\n\r\n let title = '';\r\n if (form['name']) {\r\n title += form['name'];\r\n }\r\n\r\n if (form['inspectionType']) {\r\n title += ' |' + form['inspectionType'] ;\r\n }\r\n\r\n return title;\r\n }\r\n\r\n compareWithFn(form1, form2) {\r\n return form1 && form2 ? form1.id === form2.id : form1 === form2;\r\n }\r\n\r\n getOperationStatus(): string {\r\n if (this.view['archived'])\r\n return \"Arquivada\";\r\n else if (this.view['status'])\r\n return OperationStatusDescription[this.view['status']];\r\n else\r\n return '';\r\n }\r\n \r\n /**verifica se o(s) ponto(s) selecionados podem ser removidos da lista\r\n * Só podem ser removidos da lista se a operação é planejada ou enviada\r\n * Nas outras opções, verifica se o id do ponto é diferente de null e que não esteja iniciada, em percurso ou concluído\r\n */\r\n canDeleteInspectionsPoints(rows : InspectionModel[]): boolean{\r\n\r\n if((this.view['status'] === OperationStatus.PLANNED) || (this.view['status'] === OperationStatus.SENT)) return true;\r\n \r\n let canDelete = true; \r\n if(rows.length>0){ \r\n for(let i = 0; i < rows.length ; i++){\r\n if(rows[i].identifier && (rows[i].status === InspectionStatusType.STARTED || \r\n rows[i].status === InspectionStatusType.ON_THE_WAY || \r\n rows[i].status === InspectionStatusType.FINISHED))\r\n {\r\n canDelete = false;\r\n break\r\n }\r\n }\r\n }\r\n return canDelete; \r\n }\r\n\r\n canDeleteInspectionPoint(inspection: InspectionModel){\r\n if(!inspection) return;\r\n \r\n if((this.view['status'] === OperationStatus.PLANNED) || (this.view['status'] === OperationStatus.SENT)) return true;\r\n \r\n if (inspection.identifier && (inspection.status === InspectionStatusType.STARTED || \r\n inspection.status === InspectionStatusType.ON_THE_WAY || \r\n inspection.status === InspectionStatusType.FINISHED)) \r\n {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Atualiza a lista de pontos de inspeção sem acesso\r\n updateNoAccessInspection(){\r\n let noAccessInspectionPoints : InspectionModel[] = [];\r\n \r\n if(!this.view['inspections']) return;\r\n\r\n this.view['inspections'].forEach((inspection, index) => {\r\n if(inspection.inspectionPointNoAccess == true){ \r\n let inspectionNoAccess:InspectionModel = this.copyModel(inspection)\r\n inspectionNoAccess.number = \"\"+(index+1);\r\n noAccessInspectionPoints.push(inspectionNoAccess);\r\n }\r\n \r\n });\r\n \r\n this.noAccessPointsDataSource = new MatTableDataSource(noAccessInspectionPoints);\r\n }\r\n\r\n updateFilteredCompanies(){\r\n if (!this.view['placement'] || this.entityCacheService.getCompanies().length == 0) {\r\n this.filteredCompanies = [];\r\n }\r\n else {\r\n this.filteredCompanies = this.entityCacheService.getCompanies().filter((company:CompanyModel)=>{return company.placement?.id === this.view['placement'].id;})\r\n this.checkObjectInOptionData('company', this.filteredCompanies);\r\n }\r\n }\r\n\r\n updateFilteredTeams(){\r\n this.filteredTeams = this.entityCacheService.getPatrolTeams().filter((team:PatrolTeamModel )=>{\r\n return (team.company?.id === this.view['company']?.id && team?.serviceType === this.view['serviceType']) ;\r\n });\r\n this.checkObjectInOptionData('patrolTeam', this.filteredTeams);\r\n ListUtils.orderSimpleModelList(this.filteredTeams);\r\n\r\n // O primeiro da lista será uma equipe vazia, que permite limpar o campo Equipe\r\n // O que identifica a equipe vazia é a não existem do nome da equipe\r\n //this.filteredTeams.unshift(this.getEmptyPatrolTeam());\r\n }\r\n\r\n filterByService(){\r\n // Tipo de Serviço mudou, precisa atualizar as Equipes\r\n if(!this.view['company'] || !this.view['serviceType'] ){\r\n this.filteredTeams = [];\r\n }\r\n else{\r\n this.updateFilteredTeams();\r\n } \r\n }\r\n\r\n filterByCompany(){\r\n // Empresa mudou, precisa atualizar as Equipes\r\n this.filterByService();\r\n }\r\n\r\n filterByPlacement(){\r\n // Lotação mudou, precisa atualizar Empresas e Equipes\r\n\r\n // Filtra as empresas pela Lotação escolhida\r\n this.updateFilteredCompanies();\r\n // Limpa a empresa selecionada\r\n this.view['company'] = null;\r\n this.view['serviceType'] = null;\r\n this.view['patrolTeam'] = null;\r\n\r\n this.filterByCompany();\r\n }\r\n\r\n /** Se é uma operação cópia, atualiza os dados da equipe\r\n * A equipe depende da lotação\r\n */\r\n updatePatrolTeamForCopy(){\r\n if(!this.copy) return;\r\n \r\n const index = this.filteredTeams.findIndex(team => team.id === this.model['patrolTeam'].id); \r\n if(index >= 0 ) { \r\n this.view['patrolTeam'] = this.filteredTeams[index]; \r\n }else{// pode ser que a equipe tem mudado de lotação\r\n this.view['patrolTeam'] = this.getEmptyPatrolTeam(); \r\n }\r\n \r\n this.backupInitialView();\r\n }\r\n\r\n /** Se é uma operação cópia, atualiza os dados da empresa\r\n * A empresa depende da lotação\r\n */\r\n updateCompanyForCopy(){\r\n if(!this.copy) return;\r\n \r\n const index = this.filteredCompanies.findIndex(company => company.id === this.model['company'].id); \r\n if(index >= 0 ) {\r\n this.view['company'] = this.filteredCompanies[index]; \r\n }else{// pode ser que a equipe tenha mudado de lotação\r\n this.view['company'] = null \r\n }\r\n \r\n this.backupInitialView();\r\n }\r\n \r\n /**Se o campo (key) está salvo no modelo, verifica se a opção está na lista a ser apresentada e que não seja um pedido de cópia.\r\n * Assim adiciona na lista para restaurar a informação como foi salva. */\r\n checkObjectInOptionData(key, optionArray){\r\n console.log('OperationEditComponent.checkObjectInOptionData ', key ); \r\n if(this.model[key]){\r\n // Procura o item anterior na lista de opções\r\n const object = optionArray.find(option => option.id === this.model[key].id) \r\n if(!object && this.copy) {\r\n // Se não tem o item anterior, então adiciona um item em branco\r\n if (key == \"patrolTeam\") {\r\n this.view[key] = this.getEmptyPatrolTeam();\r\n }\r\n else {\r\n this.view[key] = \"\";\r\n }\r\n this.updateInitialView(key);\r\n }\r\n }\r\n }\r\n\r\n /**** MÉTODOS PARA ANEXAR ARQUIVO NA OPERAÇÃO */\r\n\r\n /** Adiciona um arquivo anexo\r\n * file: arquivo\r\n * attachmentNumber: número de anexo\r\n */\r\n addFile(file: File, attachmentNumber: AttachmentNumber): void {\r\n this.logger.debug('OperationEditComponent.addFile()');\r\n\r\n if (file) { // Usuário selecionou um arquivo\r\n\r\n this.logger.debug('File size : ', file.size);\r\n // 1. Valida o peso do arquivo <=2Mb\r\n if(file.size > MAX_FILE_SIZE){ \r\n this.clearOperationFile(true, attachmentNumber, false);\r\n const title = 'Arquivo Inválido!';\r\n const message = 'Só podem ser carregados arquivos com até 2Mb';\r\n this.toastr.error(message, title); \r\n return; \r\n }\r\n\r\n let attachmentFile = new AttachmentModel();\r\n let filename = file.name.replace(/[\\x00-\\x1f?<>:\"/\\\\*|]/g, '_');\r\n attachmentFile.name = filename.split('.').slice(0, -1).join('.');\r\n attachmentFile.extension = file.name.split('.').pop();\r\n attachmentFile.type = file.type;\r\n\r\n switch(attachmentNumber){\r\n case AttachmentNumber.ONE:\r\n this.attachmentFile1 = file;\r\n this.view['attachmentFile1'] = this.attachmentFile1.name;\r\n this.view['attachmentOpFile1'] = attachmentFile;\r\n break;\r\n case AttachmentNumber.TWO:\r\n this.attachmentFile2 = file;\r\n this.view['attachmentFile2'] = this.attachmentFile2.name;\r\n this.view['attachmentOpFile2'] = attachmentFile;\r\n break; \r\n case AttachmentNumber.THREE:\r\n this.attachmentFile3 = file;\r\n this.view['attachmentFile3'] = this.attachmentFile3.name;\r\n this.view['attachmentOpFile3'] = attachmentFile;\r\n break; \r\n case AttachmentNumber.FOUR:\r\n this.attachmentFile4 = file;\r\n this.view['attachmentFile4'] = this.attachmentFile4.name;\r\n this.view['attachmentOpFile4'] = attachmentFile;\r\n break; \r\n case AttachmentNumber.FIVE:\r\n this.attachmentFile5 = file;\r\n this.view['attachmentFile5'] = this.attachmentFile5.name;\r\n this.view['attachmentOpFile5'] = attachmentFile;\r\n break; \r\n }\r\n }\r\n else {\r\n this.clearOperationFile(true, attachmentNumber, true);\r\n }\r\n }\r\n\r\n /** Deleta o arquivo da vista\r\n * Faz um backup do arquivo, em caso mais para frente precisar desfazer as modificações */\r\n clearOperationFile(removed, attachmentNumber: AttachmentNumber, backup: boolean){\r\n\r\n switch(attachmentNumber){\r\n case AttachmentNumber.ONE:\r\n if(backup) this.back_attachmentFile1 = this.attachmentFile1;\r\n this.attachmentFile1 = undefined;\r\n this.view['attachmentFile1'] = undefined;\r\n this.view['attachmentOpFile1'] = undefined;\r\n break;\r\n case AttachmentNumber.TWO:\r\n if(backup) this.back_attachmentFile2 = this.attachmentFile2;\r\n this.attachmentFile2 = undefined;\r\n this.view['attachmentFile2'] = undefined;\r\n this.view['attachmentOpFile2'] = undefined;\r\n break;\r\n case AttachmentNumber.THREE:\r\n if(backup) this.back_attachmentFile3 = this.attachmentFile3;\r\n this.attachmentFile3 = undefined;\r\n this.view['attachmentFile3'] = undefined;\r\n this.view['attachmentOpFile3'] = undefined;\r\n break;\r\n case AttachmentNumber.FOUR:\r\n if(backup) this.back_attachmentFile4 = this.attachmentFile4;\r\n this.attachmentFile4 = undefined;\r\n this.view['attachmentFile4'] = undefined;\r\n this.view['attachmentOpFile4'] = undefined;\r\n break; \r\n case AttachmentNumber.FIVE:\r\n if(backup) this.back_attachmentFile5 = this.attachmentFile5;\r\n this.attachmentFile5 = undefined;\r\n this.view['attachmentFile5'] = undefined;\r\n this.view['attachmentOpFile5'] = undefined;\r\n break;\r\n }\r\n }\r\n \r\n /** Chama o método para apresentar ou baixar o arquivo anexo */\r\n openOperationFile(fileName: string, attachmentNumber: AttachmentNumber) : void {\r\n \r\n switch(attachmentNumber){\r\n case AttachmentNumber.ONE:\r\n this.viewFile(this.attachmentFile1 , this.view['attachmentOpFile1'] );\r\n break;\r\n case AttachmentNumber.TWO:\r\n this.viewFile(this.attachmentFile2 , this.view['attachmentOpFile2']);\r\n break;\r\n case AttachmentNumber.THREE:\r\n this.viewFile(this.attachmentFile3 , this.view['attachmentOpFile3']);\r\n break;\r\n case AttachmentNumber.FOUR:\r\n this.viewFile(this.attachmentFile4 , this.view['attachmentOpFile4']);\r\n break;\r\n case AttachmentNumber.FIVE:\r\n this.viewFile(this.attachmentFile5 , this.view['attachmentOpFile5']);\r\n break;\r\n }\r\n } \r\n \r\n /** chamado após desfazer as modificações */\r\n restoreFiles(){\r\n if(this.back_attachmentFile1) this.attachmentFile1 = this.back_attachmentFile1;\r\n if(this.back_attachmentFile2) this.attachmentFile2 = this.back_attachmentFile2;\r\n if(this.back_attachmentFile3) this.attachmentFile3 = this.back_attachmentFile3;\r\n if(this.back_attachmentFile4) this.attachmentFile4 = this.back_attachmentFile4;\r\n if(this.back_attachmentFile5) this.attachmentFile5 = this.back_attachmentFile5;\r\n }\r\n\r\n /** Add o nome do arquivo para cada anexo da operação */\r\n private extractAttachmentFileName(){\r\n \r\n let operation: OperationModel = this.model;\r\n \r\n if(operation.attachmentOpFile1)\r\n operation.attachmentOpFile1 = this.view['attachmentOpFile1'];\r\n \r\n if(operation.attachmentOpFile2)\r\n operation.attachmentOpFile2 = this.view['attachmentOpFile2'];\r\n \r\n if(operation.attachmentOpFile3)\r\n operation.attachmentOpFile3 = this.view['attachmentOpFile3'];\r\n \r\n if(operation.attachmentOpFile4)\r\n operation.attachmentOpFile4 = this.view['attachmentOpFile4'];\r\n \r\n if(operation.attachmentOpFile5)\r\n operation.attachmentOpFile5 = this.view['attachmentOpFile5'];\r\n \r\n }\r\n \r\n updateAttachmentData() {\r\n if(this.model['attachmentOpFile1'])\r\n this.getAttachmentFile(this.model['attachmentOpFile1'], AttachmentNumber.ONE );\r\n\r\n if(this.model['attachmentOpFile2'])\r\n this.getAttachmentFile(this.model['attachmentOpFile2'], AttachmentNumber.TWO );\r\n\r\n if(this.model['attachmentOpFile3'])\r\n this.getAttachmentFile(this.model['attachmentOpFile3'], AttachmentNumber.THREE);\r\n\r\n if(this.model['attachmentOpFile4'])\r\n this.getAttachmentFile(this.model['attachmentOpFile4'], AttachmentNumber.FOUR);\r\n\r\n if(this.model['attachmentOpFile5'])\r\n this.getAttachmentFile(this.model['attachmentOpFile5'], AttachmentNumber.FIVE);\r\n }\r\n\r\n getAttachmentFile(fileData: AttachmentModel, attachmentNumber: AttachmentNumber){\r\n this.operationService.loadAttachmentFile(fileData).pipe(first()).subscribe( (file) => {\r\n switch(attachmentNumber){\r\n case AttachmentNumber.ONE:\r\n this.attachmentFile1 = file;\r\n break;\r\n case AttachmentNumber.TWO:\r\n this.attachmentFile2 = file;\r\n break;\r\n case AttachmentNumber.THREE:\r\n this.attachmentFile3 = file;\r\n break;\r\n case AttachmentNumber.FOUR:\r\n this.attachmentFile4 = file;\r\n break; \r\n case AttachmentNumber.FIVE: \r\n this.attachmentFile5 = file;\r\n break;\r\n } \r\n }, (error: any) => this.logger.error(error));\r\n }\r\n \r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { FilterModel } from 'src/app/general/filter-component/filter.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MarkerFilterModel extends FilterModel{\r\n\r\n operationId: string;\r\n operationIds: string[];\r\n operationType: string;\r\n inspectionId: string;\r\n patrolTeamId: string;\r\n startDate: number;\r\n endDate: number;\r\n channelId: string;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChannelFilterModel {\r\n channelTypes: string[] = [];\r\n placementNames: string[] = []; \r\n channelIds: string[] = [];\r\n}\r\n","import { SimpleModel } from 'src/app/model/simple.model';\r\nimport { UserModel } from './user.model';\r\n\r\nexport class SingleDataModel extends SimpleModel{\r\n type: string; // Vem apenas do yaml, não é incluído no modelo\r\n updater: UserModel;\r\n opsNumber?: BigInteger;\r\n}\r\n","import { PatrolTeamModel } from './../../../../model/patrolteam.model';\r\nimport { Component, Inject, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { PatrolTeamService } from 'src/app/service/model/patrol.team.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { environment } from 'src/environments/environment';\r\nimport { RegistrationType, ServiceTypeDescription, ShiftDescription } from 'src/app/model/enums.enum';\r\nimport { AuthorizationService } from '../../../../service/authorization/authorization.service';\r\nimport { StorageService } from '../../../../service/storage-service';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { ESP, MAP_PAGE, SORT_NAME_ASC } from 'src/app/common/constants';\r\nimport { UserService } from 'src/app/service/model/user.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { RegistrationListComponent } from '../../registration-list-component';\r\nimport { SAVE_DATA_PREFIX } from '../../../../common/constants';\r\n\r\n@Component({\r\n selector: 'app-patrol-team-list',\r\n templateUrl: './patrol-team-list.component.html',\r\n styleUrls: ['../../../../app.component.scss', '../../../list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PatrolTeamListComponent extends RegistrationListComponent implements OnInit, OnDestroy {\r\n\r\n shiftDescription = ShiftDescription;\r\n private userDataSubscription: Subscription;\r\n\r\n serviceTypeDescription = ServiceTypeDescription;\r\n\r\n constructor(logger: NGXLogger,\r\n protected patrolTeamService: PatrolTeamService,\r\n dialog: MatDialog,\r\n protected toastr: ToastrService,\r\n public authorizationService: AuthorizationService,\r\n protected storageService: StorageService,\r\n protected userService: UserService,\r\n protected changeDetector: ChangeDetectorRef,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, patrolTeamService, dialog, 'patrol-teams', environment.PATROL_TEAM_GROUP_LABEL, environment.PATROL_TEAM_TITLE_LABEL, environment.PATROL_TEAM_MODEL_LABEL, storageService, changeDetector,\r\n toastr, goldenLayout, container);\r\n logger.debug('PatrolTeamListComponent.constructor()');\r\n this.subscribeToSaveCompaniesData();\r\n this.subscribeToSaveUsersData();\r\n this.subscribeToSaveVehiclesData();\r\n this.registrationType = RegistrationType.PATROL_TEAM;\r\n this.sortOptions = SORT_NAME_ASC;\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.logger.debug('PatrolTeamListComponent.ngOnInit()');\r\n this.loadRecordsFromServer();\r\n this.displayedColumns = ['select',\r\n 'name',\r\n 'company.name',\r\n 'company.placement.name',\r\n 'serviceType',\r\n 'shift',\r\n 'users.0.name',\r\n 'users.1.name',\r\n 'users.2.name',\r\n 'vehicle.plate',\r\n 'patrolCoordinator.name'\r\n ];\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.userDataSubscription?.unsubscribe();\r\n }\r\n\r\n public subscribeToSaveCompaniesData() {\r\n // A lista escuta a edição correspondente para saber se algo foi modificado\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + 'companies-edit', (data) => {\r\n this.loadRecordsFromServer();\r\n });\r\n }\r\n\r\n public subscribeToSaveUsersData() {\r\n // A lista escuta a edição correspondente para saber se algo foi modificado\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + 'users-edit', (data) => {\r\n this.loadRecordsFromServer();\r\n });\r\n }\r\n\r\n public subscribeToSaveVehiclesData() {\r\n // A lista escuta a edição correspondente para saber se algo foi modificado\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + 'vehicles-edit', (data) => {\r\n this.loadRecordsFromServer();\r\n });\r\n }\r\n\r\n loadRecordsFromServer(): void {\r\n this.logger.debug('ListComponent.PatrolTeamListComponent()');\r\n /**Verifica se o perfil do usuário logado possui a restrição \"Acesso somente a dados de Lotações específicas\" da seção Web.\r\n * Em caso positivo, somente as verificações que pertencem à mesma Lotação do usuário */\r\n\r\n this.filterModel.placements = this.storageService.getSpecificPlacementIds()\r\n super.loadRecordsFromServer();\r\n }\r\n\r\n onHistoricalTrackingClick(patrolTeam: PatrolTeamModel ) {\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingTeam: patrolTeam});\r\n }\r\n\r\n onHistoricalTrackingManyClick(){\r\n let historicalTrackingTeamList = [];\r\n this.selection.selected.forEach( (patrolTeam: PatrolTeamModel) => {\r\n historicalTrackingTeamList.push(patrolTeam);\r\n });\r\n\r\n // Note que depois de abrir o mapa pode descobrir que não tem sinais\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingTeamList: historicalTrackingTeamList});\r\n }\r\n\r\n getCompany(element){\r\n let patrolTeam = element as PatrolTeamModel;\r\n if (patrolTeam.company){\r\n return patrolTeam.company;\r\n }\r\n else {\r\n if (patrolTeam.users &&\r\n patrolTeam.users[0] &&\r\n patrolTeam.users[0].company) {\r\n return patrolTeam.users[0].company; // backward compatibility code - para equipes que ainda não foram atualizadas\r\n }\r\n }\r\n }\r\n\r\n protected getStringEntityForFilter(team: PatrolTeamModel): string {\r\n const teamName = super.lowerAndTrimText(team.name);\r\n const vehiclePlate = (team.vehicle) ? super.lowerAndTrimText(team.vehicle.plate) : '';\r\n const serviceType = team.serviceType? super.lowerAndTrimText(ServiceTypeDescription[team.serviceType]): '';\r\n const shift = (team.shift) ? super.lowerAndTrimText(ShiftDescription[team.shift]) : '';\r\n let userNames = '';\r\n if (team.users) {\r\n for (let i = 0; i < team.users.length; i++) {\r\n if (team.users[i]) {\r\n userNames = userNames + super.lowerAndTrimText(this.getUserNameLoginTitle(team.users[i])) + ESP;\r\n }\r\n }\r\n }\r\n const coordinator = (team.patrolCoordinator) ? super.lowerAndTrimText(this.getUserNameLoginTitle(team.patrolCoordinator)) : '';\r\n const company = this.getCompany(team);\r\n const companyName = company? super.lowerAndTrimText(company.name): '';\r\n const placementName = company && company.placement ? super.lowerAndTrimText(company.placement.name): '';\r\n return teamName + ESP + vehiclePlate + ESP + serviceType + ESP + shift + ESP + coordinator + ESP + companyName + ESP + placementName + ESP + userNames ;\r\n }\r\n\r\n getPropertyByPath(item: Object, property: string){\r\n switch (property) {\r\n case 'company.name': {\r\n const val = this.getCompany(item);\r\n return val ? this.lowerAndTrimText(val.name) : '';\r\n } \r\n case 'company.placement.name': {\r\n const val = this.getCompany(item);\r\n return val && val.placement ? this.lowerAndTrimText(val.placement.name) : '';\r\n } \r\n case 'serviceType': {\r\n const val = ServiceTypeDescription[(item as PatrolTeamModel).serviceType];\r\n return val ? val.name : '';\r\n } \r\n default: return super.getPropertyByPath(item, property);\r\n }\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n {{title}}[ {{getListCount()}} ]\r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Nome {{element?.name}} Empresa {{getCompany(element)?.name}} Lotação {{getCompany(element)?.placement?.name}} Tipo de Serviço {{serviceTypeDescription[element?.serviceType]}} Turno {{shiftDescription[element?.shift]}} Profissional 1 {{element.users ? getUserNameLoginTitle(element.users[0]) : \"\"}} Profissional 2 {{element.users ? getUserNameLoginTitle(element.users[1]) : \"\"}} Profissional 3 {{element.users ? getUserNameLoginTitle(element.users[2]) : \"\"}} Placa {{element.vehicle?.plate}} Coordenador {{getUserNameLoginTitle(element.patrolCoordinator)}}
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n ReactiveFormsModule\r\n ]\r\n})\r\nexport class LoginModule { }\r\n","import {EntityModel} from './entity.model';\r\nimport { CompanyModel } from './company.model';\r\n\r\nexport class ChannelModel extends EntityModel {\r\n // Depende de ChannelType: ReferencedId / ReferencedName\r\n // SYNERGY = PlacementId / PlacementName (ChannelName=\"Sinergia \" + ReferencedName\r\n // PD_MOBILE = PatrolTeamId / PlacementName (ChannelName=PatrolTeamName)\r\n // PD_TECHNICAL = PatrolTeamId / PlacementName (ChannelName=PatrolTeamName)\r\n // CCPD = UserId / OriginPlacementName (ChannelName=UserName) - Não inclui profissionais\r\n // CNCL = null / \"CNCL\" (ChannelName=ReferencedName)\r\n // MANAGERIAL = null / \"Gerencial\" (ChannelName=ReferencedName)\r\n // CORE = null / \"Núcleo\" (CCPD Interno) (ChannelName=ReferencedName)\r\n name: string;\r\n type: string;\r\n referencedId: string;\r\n referencedName: string;\r\n // Só é usado por PD_MOBILE, PD_TECHNICAL e CCPD\r\n company: CompanyModel;\r\n\r\n // O atributo abaixo somente são usados no front-end\r\n lastMessageReceivedTimestamp: number;\r\n newMessagesCount: number;\r\n}\r\n","import * as moment from 'moment';\r\n\r\n/**\r\n * Utilitário para manipulação de datas\r\n *\r\n * Lembretes: \r\n * Data/Hora é sempre passada para o frontend via um timestamp\r\n * No Web Timestamp são tratados como UTC\r\n * No Web strings e outros são tratados como horário local, em geral UTC-3\r\n * MomentJs faz essa conversão para nós \r\n * By default, moment parses and displays in local time.\r\n * \r\n * moment().valueOf() - retorna da Data/Hora de corrente em UTC\r\n * moment().format('DD/MM/yyyy HH:mm'); - retorna em horário local\r\n * O mesmo acontece ao passar um timestamp especifico como paramtro nas chamadas acima\r\n * moment(timestamp).format('x'); Apenas converte o timestamp em uma string, não faz parse, continua em UTC\r\n * \r\n * moment(timestamp).startOf('day') e moment(timestamp).endOf('day') são problemáticos,\r\n * porque em geral usamos esses valores em UTC no backend, mas ambas as funções retornam 00:00 e 23:59 em horário local.\r\n * Isso em UTC resulta em 03:00 e 02:59 em UTC.\r\n * Em alguns casos queremos filtrar pelo horário local mesmo.\r\n * Mas em outros casos queremos os valores de hora em UTC sendo 00:00 e 23:59. Tomar cuidado com isso!\r\n */\r\nexport default class DateUtils {\r\n\r\n static containsOnlyNumbers(str) {\r\n return /^\\d+$/.test(str);\r\n }\r\n\r\n static isTimestamp(timestamp){\r\n if (typeof timestamp == 'number' && timestamp < 946684800000) // 1 January 2000 00:00:00\r\n return false;\r\n if (typeof timestamp == 'string' && !DateUtils.containsOnlyNumbers(timestamp))\r\n return false;\r\n return (new Date(timestamp)).getTime() > 0;\r\n }\r\n\r\n /**\r\n * Transforma um timestamp para o formato string com o formato 'DD/MM/YYYY HH:mm:ss'\r\n * @param timestamp Timestamp para conversão\r\n */\r\n static timestampToStringInSeconds(timestamp: number): string {\r\n return moment(timestamp).format('DD/MM/YYYY HH:mm:ss');\r\n }\r\n\r\n /**\r\n * Transforma um timestamp para o formato string com o formato 'DD/MM/YYYY HH:mm' (sem segundos)\r\n * @param timestamp Timestamp para conversão\r\n */\r\n static timestampToStringInMinutes(timestamp: number): string {\r\n return moment(timestamp).format('DD/MM/YYYY HH:mm');\r\n }\r\n\r\n /**\r\n * Transforma um timestamp para o formato string com o formato 'DD/MM/YYYY' (sem horário)\r\n * @param timestamp Timestamp para conversão\r\n */\r\n static timestampToStringInDays(timestamp: number): string {\r\n return moment(timestamp).format('DD/MM/YYYY');\r\n }\r\n\r\n /**\r\n * Transforma um timestamp para o formato string com o formato 'MM/YYYY - HH:mm' (sem o dia)\r\n * @param timestamp Timestamp para conversão\r\n */\r\n static timestampToStringInMonths(timestamp: number): string {\r\n return moment(timestamp).format('MM/YYYY');\r\n }\r\n\r\n static timestampToTimeString(timestamp: number): string{\r\n return moment(timestamp).format('HH:mm:ss');\r\n }\r\n\r\n private static formatTime(t) {\r\n return ('00'+t).slice(-2);\r\n }\r\n\r\n // Transforma uma duração de timestamp para uma string no formato HH:mm:ss\r\n static durationToTimeString(duration: number){\r\n let sec = Math.floor(duration / 1000);\r\n let min = Math.floor(sec / 60);\r\n let hour = Math.floor(min / 60);\r\n min = min % 60;\r\n sec = sec % 60;\r\n return DateUtils.formatTime(hour) + ':'+ DateUtils.formatTime(min) + ':' + DateUtils.formatTime(sec);\r\n }\r\n\r\n /**\r\n * Converte dados de um Date,Time String para long (millisecond)\r\n * A string vem em local time, o long é em UTC\r\n */\r\n static stringDateTimeToTimestamp(stringDate: string, stringTime: string, isStart: boolean): number{\r\n if(!stringDate) return null;\r\n\r\n const dateSplit = String( stringDate ).split('/');\r\n const day: number = Number( dateSplit[0] );\r\n const month: number = Number( dateSplit[1] );\r\n const year: number = Number( dateSplit[2] );\r\n\r\n let hours: number = 0;\r\n let minutes: number = 0;\r\n let seconds: number = 0;\r\n\r\n if(stringTime){\r\n const timeSplit = String( stringTime ).split(':');\r\n hours = Number( timeSplit[0] );\r\n minutes = Number( timeSplit[1] );\r\n if (timeSplit[2]) seconds = Number( timeSplit[2] );\r\n }else{\r\n if(!isStart){\r\n hours = 23;\r\n minutes = 59;\r\n seconds = 59;\r\n }\r\n }\r\n\r\n let tempStartDate: Date = new Date(year, month-1, day, hours, minutes, seconds, 0); // Local time\r\n return tempStartDate.getTime(); // UTC\r\n }\r\n\r\n /**\r\n * Converte dados de um Date+Time String para long (millisecond)\r\n */\r\n static stringDateToTimestamp(stringDateTime: string){\r\n if(!stringDateTime) return null;\r\n\r\n return moment(stringDateTime,\"DD/MM/yyyy HH:mm\").valueOf();\r\n }\r\n\r\n /**\r\n * Obtem o timestamp do inicio do dia de hoje 00:00 no horário local, convertido para UTC.\r\n * Ou seja, a hora em UTC vai ser 03:00\r\n */\r\n static getTodayStartDate(): number {\r\n return moment().startOf('day').valueOf();\r\n }\r\n\r\n /**\r\n * Obtem o timestamp do final do dia de hoje 23:59 no horário local, convertido para UTC.\r\n * Ou seja, a hora em UTC vai ser 02:59 do dia seguinte\r\n */\r\n static getTodayEndDate(): number {\r\n return moment().endOf('day').valueOf();\r\n }\r\n\r\n /**\r\n * Obtem o timestamp do inicio do dia 00:00 em UTC.\r\n * Ou seja, a hora em UTC vai ser 00:00\r\n */\r\n static getStartOfDayUTC(timestamp: number): number {\r\n return moment(timestamp).utc().startOf('day').valueOf();\r\n }\r\n\r\n /**\r\n * Obtem o timestamp do final do dia 23:59 em UTC.\r\n * Ou seja, a hora em UTC vai ser 23:59\r\n */\r\n static getEndOfDayUTC(timestamp: number): number {\r\n return moment(timestamp).utc().endOf('day').valueOf();\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\nimport { first } from 'rxjs/operators';\r\nimport { LoadingListService } from 'src/app/service/loading/loading-list.service';\r\nimport { UserModel } from '../../model/user.model';\r\n\r\n@Component({\r\n selector: 'notification-dialog',\r\n templateUrl: './notification-dialog.component.html',\r\n styleUrls: ['./notification-dialog.component.scss']\r\n})\r\nexport class NotificationDialogComponent implements OnInit, OnDestroy {\r\n\r\n observations: string;\r\n \r\n loadingListService = new LoadingListService();\r\n\r\n constructor(private logger: NGXLogger,\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: any){}\r\n\r\n ngOnInit() {\r\n this.observations = this.data.successMessage + \"\\n\" + this.data.errorMessage;\r\n }\r\n \r\n ngOnDestroy() {\r\n }\r\n\r\n}\r\n","
    \r\n Atenção!\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n\r\n \r\n\r\n","import { Directive, Inject, OnDestroy, OnInit, ViewChild, ChangeDetectorRef } from '@angular/core';\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport { MatTableDataSource } from \"@angular/material/table\";\r\nimport * as GoldenLayout from \"golden-layout\";\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from \"ngx-golden-layout\";\r\nimport { NGXLogger } from \"ngx-logger\";\r\nimport { FilterModel } from \"../general/filter-component/filter.model\";\r\nimport { EntityModel } from '../model/entity.model';\r\nimport { AuthorizationService } from \"../service/authorization/authorization.service\";\r\nimport { StorageService } from \"../service/storage-service\";\r\nimport { ListComponent } from \"./list-component\";\r\nimport { MAP_PAGE } from '../common/constants';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { EntityService } from '../service/model/entity.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { MapEvents } from '../model/enums.enum';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ProfileClassToConsole } from '../common/profile-class.decorator';\r\nimport { first } from 'rxjs/operators';\r\n\r\n\r\n@ProfileClassToConsole()\r\n@Directive()\r\nexport class FilteredListComponent extends ListComponent implements OnInit, OnDestroy {\r\n\r\n @ViewChild('sidenav') sidenav: MatSidenav;\r\n openedSideList: boolean = false;\r\n\r\n filterModel: FilterModel;\r\n\r\n mapEvents = MapEvents;\r\n isLoading: boolean = false;\r\n\r\n constructor(public logger: NGXLogger,\r\n public authorizationService: AuthorizationService,\r\n protected entityService: EntityService,\r\n protected dialog: MatDialog,\r\n public componentName: string,\r\n public tabTitle: string,\r\n public title: string,\r\n public modelName: string, // Usado em diálogos de confirmação\r\n protected storageService: StorageService,\r\n protected changeDetector: ChangeDetectorRef,\r\n protected toastr: ToastrService, \r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, entityService, dialog, toastr, componentName, tabTitle, title, modelName, storageService, changeDetector, goldenLayout, container);\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.logger.debug('FilteredListComponent.ngOnInit()');\r\n\r\n if (this.hasListPopoutData()) {\r\n const popout = this.getListPopoutData();\r\n this.filterModel = popout.filterModel;\r\n this.restorePopoutData(popout);\r\n this.setListPopoutData(null);\r\n }\r\n else {\r\n this.filterModel = this.newFilterModel();\r\n }\r\n\r\n /**Verifica se o usuário possui a restrição \"Acesso somente a dados de Lotações específicas\" da seção Web.\r\n * Em caso positivo, filtra por somente as que pertencem à mesma Lotação do usuário */\r\n this.filterModel.placements = this.storageService.getSpecificPlacementIds();\r\n\r\n this.loadRecordsFromServer();\r\n }\r\n\r\n protected newFilterModel() {\r\n return new FilterModel();\r\n }\r\n\r\n restorePopoutData(popout){}\r\n\r\n ngOnDestroy(){\r\n super.ngOnDestroy();\r\n }\r\n\r\n loadRecordsFromServer() {\r\n if (this.isLoading) // Controle para evitar que a primeira conexão com o Websocket dispare num novo load\r\n return;\r\n\r\n this.logger.debug('FilteredListComponent.loadRecordsFromServer()');\r\n\r\n this.loadingOn();\r\n this.isLoading = true;\r\n\r\n this.dataSource = new MatTableDataSource([]);\r\n \r\n this.entityService.loadFilteredRawListFromRestApi(this.paginator? 0: null, this.paginator? this.initialPageSize: null, this.sortOptions, this.filterModel).pipe(first()).subscribe( (result) => {\r\n this.updateDataSource(result);\r\n }, error => { \r\n if(error.status == 413){// não é um erro, a consulta foi maior do límite (2000 registros)\r\n this.toastr.warning(\"Sua consulta retornou mais de 2000 registros, por favor refina sua busca.\");\r\n this.isLoading = false;\r\n this.loadingOff();\r\n }else{ \r\n this.logger.error(error);\r\n }\r\n },\r\n () => {\r\n this.isLoading = false;\r\n this.loadingOff();\r\n this.renderComponent();\r\n });\r\n }\r\n\r\n glOnPopout() {\r\n this.logger.debug('FilteredListComponent.glOnPopout()');\r\n this.setListPopoutData({filterModel: this.filterModel});\r\n }\r\n\r\n glOnPopin() {\r\n this.logger.debug('FilteredListComponent.glOnPopout()');\r\n this.setListPopoutData({filterModel: this.filterModel});\r\n }\r\n\r\n onLocationClick(entity: EntityModel, mapEvent: MapEvents) {\r\n this.glOpenContainer(MAP_PAGE, {entity: entity, mapEvent: mapEvent});\r\n }\r\n\r\n onLocationManyClick(mapEvent: MapEvents){\r\n let entityList = [];\r\n this.selection.selected.forEach( (entity: EntityModel) => {\r\n if(this.hasLocation(entity))\r\n entityList.push(entity);\r\n });\r\n\r\n if(entityList.length > 0)\r\n this.glOpenContainer(MAP_PAGE, {entityList: entityList, mapEvent: mapEvent});\r\n else\r\n this.toastr.warning(\"Nenhum item selecionado possui dados de localização.\");\r\n }\r\n\r\n hasLocation(entity: EntityModel): boolean{ return true; }\r\n\r\n onPageChanged(event){\r\n if (environment.useServerPagination) {\r\n const pageIndex = event.pageIndex;\r\n this.loadingOn();\r\n this.entityService.loadFilteredRawListFromRestApi(pageIndex.toString(), this.pageSize, this.sortOptions, this.filterModel).pipe(first()).subscribe( (result) => {\r\n this.updateDataSource(result);\r\n }, error => {\r\n this.logger.error(error);\r\n },\r\n () => {\r\n this.loadingOff();\r\n this.renderComponent();\r\n });\r\n }\r\n }\r\n\r\n sidenavToggle(opened: any) {\r\n this.openedSideList = opened;\r\n }\r\n}\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { Subscription } from 'rxjs';\r\nimport { AlertModel } from 'src/app/model/alert.model';\r\nimport { AlertPriority, AlertPriorityDescription, AlertType, AlertTypeDescription, PermisionRuleOption, Permission, SimfAlertTypeDescription, OperationTypeDescription, UserType } from 'src/app/model/enums.enum';\r\nimport { AlertsService } from 'src/app/service/model/alerts.service';\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\nimport { CentralFilterDialogComponent } from '../central-filter-dialog/central-filter-dialog.component';\r\nimport { CentralFilterModel } from '../central-filter-dialog/central-filter.model';\r\nimport { ServiceTypeDescription, SourceType } from '../../../model/enums.enum';\r\nimport { LoadingListService } from 'src/app/service/loading/loading-list.service';\r\nimport { AuthorizationService } from '../../../service/authorization/authorization.service';\r\nimport { PermissionOptions } from '../../../model/field.model';\r\nimport { AuthenticationService } from '../../login/login-services';\r\nimport { ProfileModel } from '../../../model/profile.model';\r\nimport { first } from 'rxjs/operators';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { environment } from 'src/environments/environment';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { ESP } from 'src/app/common/constants';\r\nimport FieldUtils from 'src/app/service/util/field-utils';\r\n\r\n@Component({\r\n selector: 'app-central-list',\r\n templateUrl: './central-list.component.html',\r\n styleUrls: ['./central-list.component.scss']\r\n})\r\nexport class CentralListComponent implements OnInit, OnDestroy {\r\n\r\n loadingListService: LoadingListService = new LoadingListService();\r\n\r\n @Input() title: string;\r\n @Input() displayedColumns: string[];\r\n @Input() inMemoryDetailsAlert: AlertModel;\r\n @Input() showDetails: boolean;\r\n @Input() sourceApp: boolean;\r\n\r\n @Output() alertClicked = new EventEmitter();\r\n @Output() locationClicked = new EventEmitter();\r\n @Output() eventClicked = new EventEmitter();\r\n @Output() operationMessagesClicked = new EventEmitter();\r\n @Output() operationClicked = new EventEmitter();\r\n @Output() acknowledgeClicked = new EventEmitter();\r\n @Output() dataSourceLoaded = new EventEmitter();\r\n @Output() loggedUserPermission = new EventEmitter();\r\n\r\n filterModel: CentralFilterModel;\r\n\r\n dataSource: MatTableDataSource;\r\n model: AlertModel[] = [];\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n /** The structure to control grid selection */\r\n selection = new SelectionModel(true, []);\r\n\r\n // Context Menu\r\n @ViewChild('contextMenuTrigger', { read: MatMenuTrigger, static: true }) contextMenu: MatMenuTrigger;\r\n contextMenuPosition = { x: '0px', y: '0px' };\r\n contextMenuSelectedItem; // Leave t as any, for now\r\n\r\n /** PAGINAÇÂO */\r\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\r\n pageSize = environment.defaultPageSize;\r\n pageLength = undefined;\r\n\r\n private audio: HTMLAudioElement;\r\n\r\n /** ENUMS */\r\n alertTypeDescription = AlertTypeDescription;\r\n serviceTypeDescription = ServiceTypeDescription;\r\n simfAlertTypeDescription = SimfAlertTypeDescription;\r\n operationTypeDescription = OperationTypeDescription\r\n\r\n /* Variável que controla o alerta atual selecionado para os detalhes */\r\n clickedAlert: AlertModel;\r\n\r\n /**User Profile */ \r\n permission = Permission;\r\n permisionRuleOption = PermisionRuleOption;\r\n\r\n authenticatedSubscription: Subscription;\r\n\r\n constructor(public logger: NGXLogger,\r\n public authorizationService: AuthorizationService,\r\n private dialog: MatDialog,\r\n private authenticationService: AuthenticationService,\r\n protected toastr: ToastrService,\r\n private storageService: StorageService,\r\n private alertsService: AlertsService) {}\r\n\r\n ngOnInit() {\r\n if(!this.filterModel){\r\n this.filterModel = new CentralFilterModel(); \r\n }\r\n \r\n this.filterModel.sourceTypes = (this.sourceApp) ? [SourceType.MOBILE_APP] : [SourceType.SIMF];\r\n this.filterModel.simfAlertTypes = (this.sourceApp) ? undefined: ['Threat.Type.Digging', 'Threat.Type.Mechanical_Digging', 'Threat.Type.Pig', 'Threat.Type.FibreBreak','Threat.Type.LeakNPP'];\r\n\r\n this.audio = new Audio();\r\n this.audio.src = \"../../assets/sound/alert.wav\";\r\n this.audio.load();\r\n\r\n this.subscribeAndLoadAll();\r\n\r\n this.sort.sort({id: \"timestamp\", start: 'desc', disableClear: false});\r\n }\r\n\r\n ngOnDestroy(){\r\n this.loadingListService.destroy();\r\n this.authenticatedSubscription?.unsubscribe();\r\n }\r\n\r\n /**\r\n * @description Subscribes to all entities changes and loads all data\r\n */\r\n subscribeAndLoadAll() {\r\n this.subscribeOnAuthenticatedStatus();\r\n }\r\n\r\n loadAlerts(){\r\n const loggedUser = this.storageService.getLocalUser();\r\n const nameUser = loggedUser.name;\r\n const profile = this.storageService.getLocalProfile();\r\n let permission_option: PermissionOptions = this.authorizationService.getUserPermissionOptions(this.permission.LIST_ALERTS);\r\n let hasSourceTypePermission = false;\r\n if(permission_option){\r\n hasSourceTypePermission = permission_option.fields.includes('SIMF');\r\n }else{\r\n hasSourceTypePermission = false;\r\n console.debug(\"permission_option é nulo ou indefinido.\");\r\n }\r\n \r\n if (this.getShowSpinner()) // Controle para evitar que a primeira conexão com o Websocket dispare num novo load\r\n return;\r\n\r\n // lotaçoes especificas as que pertence o usuário \r\n this.filterModel.placements = this.storageService.getSpecificPlacementIds();\r\n //this.filterModel.simfAlertTypes = permission_option;\r\n console.log(\"### 5 Central List - loadAlerts user: \" + nameUser);\r\n this.loadingOn(); \r\n this.alertsService.loadFromServerBySearch(this.filterModel).pipe(first()).subscribe( (entities : AlertModel[]) => {\r\n this.model = entities;\r\n this.model.sort((alert1, alert2) => (alert1.timestamp < alert2.timestamp) ? 1 : -1);\r\n if(hasSourceTypePermission || this.authorizationService.isAdmin){\r\n this.updateSimfInfo();\r\n }\r\n this.buildDataSource(true); \r\n }, error => {\r\n if(error.status == 413){ // não é um erro, a consulta foi maior do límite (2000 registros)\r\n this.toastr.warning(\"Sua consulta retornou mais de 2000 registros, por favor refina sua busca.\");\r\n this.loadingOff();\r\n }else{ \r\n this.logger.error(error);\r\n }\r\n }\r\n ,() => {\r\n this.loadingOff();\r\n });\r\n }\r\n \r\n /**verifica o tipo de alertas que o usuário tem acesso */\r\n filterAlertsToProfile(){ \r\n if(this.authorizationService.userHasPermission(this.permission.LIST_ALERTS)){\r\n let permission_option: PermissionOptions = this.authorizationService.getUserPermissionOptions(this.permission.LIST_ALERTS);\r\n if(permission_option.option == this.permisionRuleOption.SOME_FIELDS){\r\n this.filterModel.types = permission_option.fields;\r\n } \r\n }\r\n }\r\n\r\n subscribeOnAuthenticatedStatus(){\r\n this.authenticatedSubscription = this.authenticationService.authenticated$.subscribe(authenticated => {\r\n this.logger.debug('CentralListComponent.OnAuthenticatedStatus() - ' + authenticated); \r\n if (authenticated) {\r\n this.filterAlertsToProfile();\r\n this.loggedUserPermission.emit();\r\n this.loadAlerts();\r\n }\r\n });\r\n }\r\n\r\n getShowSpinner() { \r\n return this.loadingListService.getShowSpinner();\r\n }\r\n\r\n loadingOn() { \r\n this.loadingListService.loadingOn();\r\n }\r\n\r\n loadingOff() { \r\n this.loadingListService.loadingOff();\r\n }\r\n\r\n buildDataSource(cleanSelection: boolean){\r\n this.dataSource = new MatTableDataSource(this.model);\r\n this.dataSource.paginator = this.paginator;\r\n\r\n this.dataSource.filterPredicate = (entity: AlertModel, filter: string): boolean => {\r\n return this.getStringEntityForFilter(entity).indexOf(filter) != -1;\r\n };\r\n\r\n this.dataSource.sortingDataAccessor = (data, sortHeaderId: string) => {\r\n return this.getPropertyByPath(data, sortHeaderId);\r\n };\r\n\r\n this.dataSourceLoaded.emit();\r\n\r\n this.dataSource.sort = this.sort;\r\n\r\n if (cleanSelection) this.selection.clear();\r\n }\r\n\r\n updateSearchFilter(filter){\r\n this.dataSource.filter = filter;\r\n }\r\n\r\n protected getStringEntityForFilter(alert: AlertModel): string {\r\n const identifier = this.lowerAndTrimText(alert.identifier);\r\n const timestamp = (alert.timestamp) ? DateUtils.timestampToStringInMinutes(alert.timestamp) : '';\r\n const alertType = this.lowerAndTrimText(this.sourceApp? this.alertTypeDescription[alert?.alertType]: (this.simfAlertTypeDescription[alert?.simfAlertType]? this.simfAlertTypeDescription[alert?.simfAlertType]: alert?.simfAlertType));\r\n const observedArea = this.lowerAndTrimText(alert.observedArea);\r\n const observation = this.lowerAndTrimText(alert.observation);\r\n\r\n let extra;\r\n // App Móvel\r\n if (this.sourceApp){\r\n const patrolTeam = (alert.patrolTeam) ? this.lowerAndTrimText(alert.patrolTeam.name) : '';\r\n const operationIdentifier = this.lowerAndTrimText(alert.operationIdentifier); \r\n const serviceType = alert.patrolTeam? this.lowerAndTrimText(this.serviceTypeDescription[alert.patrolTeam.serviceType]): '';\r\n const placement = alert.patrolTeam?.company?.placement? this.lowerAndTrimText(alert.patrolTeam.company.placement.name): '';\r\n const band = this.lowerAndTrimText(alert.band);\r\n const duct = this.lowerAndTrimText(alert.duct);\r\n const km = this.lowerAndTrimText(alert.km);\r\n\r\n extra = patrolTeam + ESP + operationIdentifier + ESP + serviceType + ESP + placement + ESP + band + ESP + duct + ESP + km;\r\n }\r\n else{ // SIMF\r\n const duration = this.getDuration(alert)\r\n const scalePoint = this.lowerAndTrimText(alert.simf.scalePoint);\r\n const zoneName = this.lowerAndTrimText(alert.simf.zoneName);\r\n const cpsNumber = this.lowerAndTrimText(alert.simf.cpsNumber);\r\n const endChannel = this.lowerAndTrimText(alert.simf.endChannel);\r\n\r\n extra = duration + ESP + scalePoint + ESP + zoneName + ESP + cpsNumber + ESP + endChannel;\r\n }\r\n \r\n // Não está na tabela, mas permitimos a busca\r\n const prioritiy = this.lowerAndTrimText(AlertPriorityDescription[alert.alertPriority]);\r\n const eventIdentifier = this.lowerAndTrimText(alert.eventIdentifier);\r\n\r\n return identifier + ESP + timestamp + ESP + prioritiy + ESP + alertType + ESP + observation + ESP + eventIdentifier + ESP + observedArea + ESP + extra;\r\n }\r\n\r\n /* reducer method */\r\n getProperty (o, i) {\r\n if ( !o ) { return ''; }\r\n return o[i];\r\n }\r\n\r\n /** Método utilitário para passar strings para caixa alta e remover espaços (se existirem) */\r\n protected lowerAndTrimText(text: string) {\r\n if (!text) {\r\n return '';\r\n }\r\n text = (typeof text == 'string') ? text : String(text);\r\n return text.trim().toLowerCase();\r\n }\r\n\r\n /* Retorna a propriedade definida pelo caminho */\r\n getPropertyByPath(item: Object, property: string){\r\n let value = property.split('.').reduce(this.getProperty, item);\r\n if (property === 'alertType') {\r\n if (this.sourceApp)\r\n value = AlertTypeDescription[value];\r\n else {\r\n value = (item as any).simfAlertType;\r\n if (SimfAlertTypeDescription[value]) value = SimfAlertTypeDescription[value];\r\n }\r\n }\r\n else if (property === 'duration') {\r\n value = this.getDuration(item);\r\n }\r\n else if (property === 'patrolTeam.serviceType') {\r\n value = ServiceTypeDescription[value];\r\n }\r\n\r\n if (typeof value === 'string'){\r\n value = this.lowerAndTrimText(value);\r\n }\r\n return value ? value : '';\r\n }\r\n\r\n updateSimfAlert(alert){\r\n let simf;\r\n\r\n if (alert.description.indexOf(\"OptaSense\") != -1) {\r\n return;\r\n }\r\n\r\n try {\r\n simf = JSON.parse(alert.description);\r\n }catch (e) {\r\n return;\r\n }\r\n\r\n alert.simf = simf;\r\n\r\n // Compatibilidade para alertas antigos\r\n if (!alert.simfAlertType) {\r\n alert.simfAlertType = alert.simf.alertType;\r\n }\r\n\r\n alert.simf.scalePoint = FieldUtils.kmSimfToString(alert.simf.scalePoint);\r\n alert.scalePoint = alert.simf.scalePoint;\r\n }\r\n\r\n updateSimfInfo(){\r\n this.model.forEach((alert: AlertModel) => {\r\n if (alert.sourceType == SourceType.SIMF && alert.description) {\r\n this.updateSimfAlert(alert);\r\n }\r\n });\r\n }\r\n\r\n getDuration(alert): string {\r\n if (alert && alert.sourceType == SourceType.SIMF && alert.simf) {\r\n if (alert.simf.startTime && alert.simf.endTime) {\r\n return DateUtils.durationToTimeString(alert.simf.endTime - alert.simf.startTime);\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n //########################################################\r\n // HEADER ACTIONS\r\n //########################################################\r\n\r\n getListCount(){\r\n return this.dataSource? this.dataSource.filteredData.length: 0;\r\n }\r\n\r\n openFilterDialog(): void {\r\n\r\n const dialogRef = this.dialog.open(CentralFilterDialogComponent, {\r\n width: '800px',\r\n data: this.filterModel,\r\n panelClass: 'sipd-modal'\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.loadAlerts();\r\n }\r\n });\r\n }\r\n\r\n //########################################################\r\n // EXTERNAL NOTIFICATIONS\r\n //########################################################\r\n\r\n // Filtra apenas o que foi\r\n filterNewAlert(alert: AlertModel): boolean{\r\n if (this.filterModel.startDate && this.filterModel.endDate) {\r\n if (alert.timestamp < this.filterModel.startDate ||\r\n alert.timestamp > this.filterModel.endDate) {\r\n return false;\r\n }\r\n } else if (this.filterModel.startDate) {\r\n if (alert.timestamp < this.filterModel.startDate) {\r\n return false;\r\n }\r\n } else if (this.filterModel.endDate) {\r\n if (alert.timestamp > this.filterModel.endDate) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this.filterModel.priorities && this.filterModel.priorities.length > 0) {\r\n if (!this.filterModel.priorities.find(alertPriority => alertPriority == alert.alertPriority))\r\n return false;\r\n }\r\n\r\n if (this.sourceApp){ \r\n if (this.filterModel.patrolTeams && this.filterModel.patrolTeams.length > 0) {\r\n if (!alert.patrolTeam) return false;\r\n if (!this.filterModel.patrolTeams.find(patrolTeamId => patrolTeamId == alert.patrolTeam.id))\r\n return false;\r\n }\r\n\r\n if (this.filterModel.vehicles && this.filterModel.vehicles.length > 0) {\r\n if (!alert.patrolTeam || !alert.patrolTeam.vehicle) return false;\r\n if (!this.filterModel.vehicles.find(vehiclePlate => vehiclePlate == alert.patrolTeam.vehicle.plate))\r\n return false;\r\n }\r\n\r\n if (this.filterModel.types && this.filterModel.types.length > 0) {\r\n if (!this.filterModel.types.find(alertType => alertType == alert.alertType))\r\n return false;\r\n }\r\n\r\n if (this.filterModel.sourceTypes && this.filterModel.sourceTypes.length > 0) {\r\n if (!this.filterModel.sourceTypes.find(sourceType => sourceType == alert.sourceType))\r\n return false;\r\n }\r\n }\r\n else {\r\n if (this.filterModel.simfAlertTypes && this.filterModel.simfAlertTypes.length > 0) {\r\n if (!this.filterModel.simfAlertTypes.find(alertType => alertType == alert.simfAlertType))\r\n return false;\r\n }\r\n\r\n if (this.filterModel.startScalePoint && this.filterModel.endScalePoint) {\r\n if (alert.scalePoint < this.filterModel.startScalePoint ||\r\n alert.scalePoint > this.filterModel.endScalePoint) {\r\n return false;\r\n }\r\n } else if (this.filterModel.startScalePoint) {\r\n if (alert.scalePoint < this.filterModel.startScalePoint) {\r\n return false;\r\n }\r\n } else if (this.filterModel.endScalePoint) {\r\n if (alert.scalePoint > this.filterModel.endScalePoint) {\r\n return false;\r\n }\r\n }\r\n \r\n if (this.filterModel.cpsNumber && this.filterModel.cpsNumber.length > 0) {\r\n if (!this.filterModel.cpsNumber.includes(alert.cpsNumber)) {\r\n return false;\r\n }\r\n }\r\n\r\n if (this.filterModel.startChannel && this.filterModel.endChannel) {\r\n if (alert.endChannel < this.filterModel.startChannel ||\r\n alert.endChannel > this.filterModel.endChannel) {\r\n return false;\r\n }\r\n } else if (this.filterModel.startChannel) {\r\n if (alert.endChannel < this.filterModel.startChannel) {\r\n return false;\r\n }\r\n } else if (this.filterModel.endChannel) {\r\n if (alert.endChannel > this.filterModel.endChannel) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkAlertSound(alert: AlertModel) {\r\n if(alert.alertPriority == AlertPriority.HIGH && \r\n alert.sourceType == SourceType.MOBILE_APP &&\r\n (alert.alertType == AlertType.ATTENTION_PATROL_CHECK || alert.alertType == AlertType.PANIC)){\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Insere um alerta no grid - chamado ao receber um novo alerta */\r\n insertNewAlert(alert: AlertModel) {\r\n if (!this.filterNewAlert(alert))\r\n return;\r\n\r\n if (alert.sourceType == SourceType.SIMF && alert.description) {\r\n this.updateSimfAlert(alert);\r\n }\r\n\r\n this.model.splice(0, 0, alert); // Insere no topo sempre, a ordenação corrente vai colocar no lugar certo na tela\r\n this.buildDataSource(false);\r\n\r\n if(this.checkAlertSound(alert)){\r\n this.audio.play();\r\n }\r\n }\r\n\r\n /** Altera um alerta no grid - chamado ao atualizar um alerta existente */\r\n updateExistingAlert(existingAlertPos, alert: AlertModel) {\r\n if (!this.filterNewAlert(alert))\r\n return;\r\n \r\n if (alert.sourceType == SourceType.SIMF && alert.description) {\r\n this.updateSimfAlert(alert);\r\n }\r\n\r\n this.model[existingAlertPos] = alert;\r\n this.buildDataSource(false);\r\n }\r\n\r\n //########################################################\r\n // CONTEXT MENU ACTIONS\r\n //########################################################\r\n\r\n onLocationClick(alert: AlertModel) {\r\n this.locationClicked.emit(alert);\r\n }\r\n\r\n hasLocation(alert: AlertModel): boolean {\r\n return alert && alert.location.coordinates[0] != 0 && alert.location.coordinates[1] != 0;\r\n }\r\n\r\n hasOperation(alert: AlertModel): boolean {\r\n return !!alert && !!alert.operationId;\r\n }\r\n\r\n onCreateEventClick(alert: AlertModel) {\r\n this.eventClicked.emit({alert: alert, create: true});\r\n }\r\n\r\n onLinkEventClick(alert: AlertModel) {\r\n this.eventClicked.emit({alert: alert, link: true});\r\n }\r\n\r\n onUnLinkEventClick(alert: AlertModel) {\r\n this.eventClicked.emit({alert: alert, link: false});\r\n }\r\n\r\n canUnLinkEvent(alert: AlertModel) {\r\n return alert && alert.eventIdentifier;\r\n }\r\n\r\n onAcknowledgeClick(alert: AlertModel) {\r\n this.acknowledgeClicked.emit(alert);\r\n }\r\n\r\n canAcknowledge(alert: AlertModel) {\r\n return alert && !alert.acknowledged; // Não preciso verificar o alert.acknowledgmentAuthor aqui\r\n }\r\n\r\n onMessagesClick(alert: AlertModel) {\r\n this.operationMessagesClicked.emit({ operationId: alert.operationId, operationType: alert.operationType});\r\n }\r\n\r\n onOperationClick(alert: AlertModel) {\r\n this.operationClicked.emit({ operationId: alert.operationId, operationType: alert.operationType});\r\n }\r\n\r\n //########################################################\r\n // GRID SELECTION CONTROL\r\n //########################################################\r\n\r\n /** The tip for the checkbox on the passed row */\r\n checkboxTip(row?: AlertModel): string {\r\n if (!row) {\r\n return `${this.isAllSelected() ? 'Desmarcar' : 'Selecionar'} Todos`;\r\n }\r\n return `${this.selection.isSelected(row) ? 'Desmarcar' : 'Selecionar'} Item`;\r\n }\r\n\r\n /** Selects all rows if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n this.selection.hasValue() ?\r\n this.selection.clear() :\r\n this.dataSource.filteredData.forEach(row => this.selection.select(row));\r\n }\r\n\r\n /** Whether the number of selected elements matches the total number of rows. */\r\n isAllSelected() {\r\n const numSelected = this.selection.selected.length;\r\n const numRows = this.dataSource ? this.dataSource.filteredData.length : 0;\r\n return numSelected === numRows;\r\n }\r\n\r\n openContextMenu(event: MouseEvent, row) {\r\n event.preventDefault();\r\n this.contextMenuSelectedItem = row;\r\n\r\n this.contextMenuPosition.x = event.clientX + 'px';\r\n this.contextMenuPosition.y = event.clientY + 'px';\r\n this.contextMenu.menu.focusFirstItem('mouse');\r\n this.contextMenu.openMenu();\r\n }\r\n\r\n //########################################################\r\n // GRID ACTIONS\r\n //########################################################\r\n\r\n onCheckboxClick(alert: AlertModel){\r\n this.selection.toggle(alert);\r\n }\r\n\r\n onAlertClick(alert: AlertModel) {\r\n this.showAlertDetails(alert);\r\n }\r\n\r\n isAlertInDetails(alert: AlertModel){\r\n if (this.showDetails && alert && this.inMemoryDetailsAlert && alert.id == this.inMemoryDetailsAlert.id)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n arrowUpEvent( ){\r\n let sortedData = this.dataSource.sortData(this.dataSource.filteredData, this.dataSource.sort);\r\n let index = sortedData.findIndex( (alert: AlertModel) => this.clickedAlert.id === alert.id);\r\n if (index==0) return;\r\n index--;\r\n const alert = sortedData[index];\r\n this.showAlertDetails(alert);\r\n }\r\n\r\n arrowDownEvent(){\r\n let sortedData = this.dataSource.sortData(this.dataSource.filteredData, this.dataSource.sort);\r\n let index = sortedData.findIndex( (alert: AlertModel) => this.clickedAlert.id === alert.id);\r\n if (index == (this.dataSource.filteredData.length-1)) return;\r\n index++;\r\n const alert = sortedData[index];\r\n this.showAlertDetails(alert);\r\n }\r\n\r\n /* Procura o objeto(alerta) na tabela a partir do index atual */\r\n showAlertDetails(alert: AlertModel){\r\n this.alertClicked.emit(alert);\r\n this.clickedAlert = alert;\r\n }\r\n\r\n onPageChanged(event){\r\n if (environment.useServerPagination) {\r\n this.loadingOn();\r\n this.alertsService.loadFromServerBySearch(this.filterModel).pipe(first()).subscribe( (result) => {\r\n this.model = result;\r\n this.model.sort((alert1, alert2) => (alert1.timestamp < alert2.timestamp) ? 1 : -1);\r\n this.updateSimfInfo();\r\n this.buildDataSource(true);\r\n }, error => {\r\n this.logger.error(error);\r\n },\r\n () => {\r\n this.loadingOff();\r\n });\r\n }\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n \r\n {{title}}[ {{getListCount()}} ]\r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    ID {{alert?.identifier}}\r\n Recon.\r\n \r\n \r\n done\r\n Data/Hora {{ alert?.timestamp | date:'dd/MM/yyyy HH:mm' }} Área Obs. {{ alert?.observedArea }} Origem {{sourceApp? alertTypeDescription[alert?.alertType]: (simfAlertTypeDescription[alert?.simfAlertType]? simfAlertTypeDescription[alert?.simfAlertType]: alert?.simfAlertType)}} Duração {{ getDuration(alert) }} Faixa {{alert?.band}} Duto {{alert?.duct}} KM {{alert?.km}} Equipe {{alert?.patrolTeam?.name}} Lotação {{alert?.patrolTeam?.company?.placement?.name}} Tipo de Serviço {{ serviceTypeDescription[alert?.patrolTeam?.serviceType] }} Tipo de Operação {{ operationTypeDescription[alert?.operationType] }} Canal {{ alert.simf?.endChannel }} OPS {{ alert.simf?.cpsNumber }} Kpoint {{ alert.simf?.scalePoint }} Zona {{ alert.simf?.zoneName }} Notas {{alert?.observation}}
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { BaseGoldenPanel } from 'src/app/pages/base-golden-panel/base-golden-panel';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { AuthenticationService } from 'src/app/pages/login/login-services';\r\n\r\n\r\n@Component({\r\n selector: 'app-login-error',\r\n templateUrl: './login-error.component.html',\r\n styleUrls: ['./login-error.component.scss']\r\n})\r\nexport class LoginErrorComponent extends BaseGoldenPanel implements OnInit {\r\n\r\n error: string;\r\n\r\n constructor(public logger: NGXLogger,\r\n private authenticationService: AuthenticationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, goldenLayout, container);\r\n }\r\n\r\n ngOnInit(): void { \r\n this.error = localStorage.getItem(\"Login Error\");\r\n super.glUpdateTabTitle(\"Erro!\"); \r\n }\r\n\r\n resetLogin(){\r\n this.authenticationService.logout();\r\n }\r\n}\r\n","
    \r\n
    \r\n

    SIPD - Erro de Autorização!

    \r\n

    Não foi possível autorizar a entrada do usuário.

    \r\n

    Erro: {{error}}

    \r\n

    Por favor entre em contato com o suporte.

    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n","import { environment } from '../../environments/environment';\r\n\r\n/**\r\n * Use to patch all functions/methods in a class and make them print out run time\r\n * in ms to the console.\r\n *\r\n * This decorator will only patch functions declared in the target class.\r\n * It will **not** patch functions reside in the **base class**.\r\n * Dynamically created functions or functions received from the outside as input\r\n * may also not be patched.\r\n *\r\n * Keep in mind that the act of printing stuffs to the console itself will slow down\r\n * some function a little. This could add up if that function is called multiple times in a loop.\r\n * Callbacks may also not be tracked so functions that rely on\r\n * callbacks to do heavy lifting may appear to take very little time\r\n * here.\r\n *\r\n * @param threshold allow filtering log to only those that took more than the threshold (in ms)\r\n */\r\nexport function ProfileClassToConsole({ prefix = '', threshold = environment.profileThresHold } = {}) {\r\n\r\n return function (target: Function) {\r\n\r\n // Guard to skip patching\r\n if (!environment.profileClassToConsoleEnabled) {\r\n return;\r\n }\r\n\r\n // Loop through all property of the class\r\n for (const propName of Object.getOwnPropertyNames(target.prototype)) {\r\n\r\n const descriptor = Object.getOwnPropertyDescriptor(target.prototype, propName);\r\n\r\n // If not a function, skip\r\n if (propName == 'constructor' || !(descriptor.value instanceof Function)) {\r\n continue;\r\n }\r\n\r\n const windowsPerfomance = window.performance;\r\n const fn = descriptor.value;\r\n\r\n descriptor.value = function (...args: any[]): any {\r\n\r\n const before = windowsPerfomance.now();\r\n\r\n const result = fn.apply(this, args);\r\n\r\n const after = windowsPerfomance.now();\r\n const runTime = after - before;\r\n if (runTime > threshold) {\r\n let time = runTime.toFixed(0);\r\n console.log(\"ProfileClassToConsole \", prefix, target.name, ': ', propName, 'took', time, 'ms');\r\n }\r\n\r\n return result;\r\n\r\n }\r\n \r\n Object.defineProperty(target.prototype, propName, descriptor);\r\n }\r\n }\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { first } from 'rxjs/operators';\r\nimport { ConfirmationDialogComponent } from 'src/app/general/confirmation-dialog/confirmation-dialog.component';\r\nimport { ValidationNoteModel } from 'src/app/model/validation.note.model';\r\n\r\n@Component({\r\n selector: 'app-event-validation-note-dialog',\r\n templateUrl: './event-validation-note-dialog.component.html',\r\n styleUrls: ['./event-validation-note-dialog.component.scss']\r\n})\r\nexport class EventValidationNoteDialogComponent implements OnInit{\r\n \r\n public validationNote:string;\r\n \r\n editing: boolean;\r\n\r\n constructor(public dialogRef: MatDialogRef, \r\n protected dialog: MatDialog,\r\n @Inject(MAT_DIALOG_DATA) public data: ValidationNoteModel) {\r\n }\r\n\r\n ngOnInit():void {\r\n if(this.data){\r\n this.editing = true;\r\n this.validationNote = this.data.note \r\n }\r\n else{\r\n this.editing = false; \r\n }\r\n }\r\n \r\n getTitle(){\r\n if(this.editing){\r\n return 'Editar Nota de Validação' ;\r\n }\r\n else {\r\n return 'Nova Nota de Validação';\r\n }\r\n }\r\n\r\n onSaveClick() {\r\n let msg: string = 'Atenção! Ao confirmar esta nota, esta operação não poderá ser desfeita. Se desejar, cancele e revise suas anotações antes da confirmação definitiva.';\r\n let data:any = {\r\n msg: msg, \r\n title: 'Atenção', \r\n okLabel: 'Confirmar'\r\n };\r\n \r\n this.dialog.open(ConfirmationDialogComponent, {\r\n data: data,\r\n width: '28rem',\r\n panelClass: 'sipd-modal'\r\n }).afterClosed().pipe(first()).subscribe((result)=>{\r\n if(result) {\r\n this.dialogRef.close(this.validationNote);\r\n }\r\n });\r\n }\r\n}\r\n","
    \r\n {{getTitle()}}\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n Nota\r\n \r\n \r\n
    \r\n
    \r\n\r\n\r\n \r\n \r\n\r\n","import { AbstractSignalModel } from \"./abstract.signal.model\";\r\n\r\n/**\r\n * Sinal recebido de um veículo\r\n */\r\nexport class VehicleSignalModel extends AbstractSignalModel {\r\n\r\n public placa: string; // O mesmo que mobileObjectId\r\n public data: string;\r\n public hora: string;\r\n public empresa: string;\r\n public marca: string;\r\n public motor: string;\r\n public movimento: string;\r\n public velocidade: string;\r\n public gps: string;\r\n public precisao: string;\r\n public direcao: string;\r\n \r\n public enriched: boolean;\r\n\r\n // Enriquecido apenas quando o veículo não tem equipe\r\n public companyId:string;\r\n public placementId: string;\r\n\r\n constructor(){\r\n super();\r\n }\r\n\r\n static getPopupContent(vehicleSignal: VehicleSignalModel) : string {\r\n return `
    Dados:
    \r\n
    Empresa: ${vehicleSignal.empresa ? vehicleSignal.empresa : ``}
    \r\n
    Carro: ${vehicleSignal.marca ? vehicleSignal.marca : ``}
    \r\n
    Motor: ${vehicleSignal.motor ? vehicleSignal.motor : ``}
    \r\n
    Movimento: ${vehicleSignal.movimento ? vehicleSignal.movimento : ``}
    \r\n
    Velocidade: ${vehicleSignal.velocidade ? vehicleSignal.velocidade : ``}
    \r\n
    GPS: ${vehicleSignal.gps ? vehicleSignal.gps : ``}
    \r\n
    Precisão: ${vehicleSignal.precisao ? vehicleSignal.precisao : ``}
    \r\n
    Direção: ${vehicleSignal.direcao ? vehicleSignal.direcao : ``}
    \r\n `;\r\n }\r\n}\r\n","import { Directive, OnInit, OnDestroy, Output, EventEmitter, Renderer2, ElementRef } from '@angular/core';\r\n\r\n@Directive({\r\n // tslint:disable-next-line:directive-selector\r\n selector: '[ctrl-click]',\r\n})\r\nexport class CtrlClickDirective implements OnInit, OnDestroy {\r\n\r\n private unsubscribe: any;\r\n\r\n @Output('ctrl-click') ctrlClickEvent = new EventEmitter();\r\n\r\n constructor(\r\n private readonly renderer: Renderer2,\r\n private readonly element: ElementRef) { }\r\n\r\n ngOnInit() {\r\n this.unsubscribe = this.renderer.listen(this.element.nativeElement, 'click', event => {\r\n if (event.ctrlKey) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n // remove quaisquer textos selecionados\r\n document.getSelection().removeAllRanges();\r\n this.ctrlClickEvent.emit(event);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (!this.unsubscribe) {\r\n return;\r\n }\r\n this.unsubscribe();\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { Observable } from 'rxjs';\r\nimport { EventMainActionModel } from 'src/app/model/event.main.action.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EntityService } from './entity.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EventMainActionsService extends EntityService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.registrations_address}/event-main-actions`);\r\n }\r\n\r\n /**\r\n * Obtem uma lista de ações principais filtradas por origem\r\n * @param sourceType Origem para filtro\r\n */\r\n public loadFromServerBySourceType( sourceType: string ): Observable {\r\n this.logger.debug(`Obtendo lista de ações principais de eventos filtradas pela origem '${sourceType}'`);\r\n\r\n const params: HttpParams = new HttpParams().set('sourceType', sourceType);\r\n return this.http.get(this.apiUrl, { params: params });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UserType, OperationStatus, Permission, PermisionRuleOption } from '../../model/enums.enum';\r\nimport { PatrolModel } from '../../model/patrol.model';\r\nimport { VerificationModel } from '../../model/verification.model';\r\nimport { ProfileModel } from 'src/app/model/profile.model';\r\nimport { PermissionOptions } from '../../model/field.model';\r\n\r\n\r\n/**\r\n * Serviço responsável por controlar autorizações no sistema - quais as funcionalidades permitidas em função\r\n * do perfil do usuário.\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthorizationService {\r\n private profileUser: ProfileModel; // Inicializado pelo AppComponent durante o login\r\n private permissionsMap: Map;\r\n \r\n setLoggedProfileUser(profile: ProfileModel) {\r\n this.profileUser = profile;\r\n if (profile) {\r\n this.permissionsMap = new Map(Object.entries(profile.permissions));\r\n }\r\n else {\r\n this.permissionsMap = null;\r\n }\r\n }\r\n\r\n getLoggedProfileName(): string {\r\n if(this.profileUser){ \r\n return this.profileUser.name;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n \r\n public getLoggedUserType() {\r\n if(this.profileUser){ \r\n return this.profileUser.userType;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n /**Retorna se false se o usuario tem permissão, em caso ser administrador não avalia a tabela de permissões e retorna false */\r\n userHasPermission(permission: Permission): boolean{\r\n if(this.profileUser){ \r\n return (this.permissionsMap.has(permission));\r\n }else return false; \r\n }\r\n\r\n getUserPermissionOptions(permission: Permission): PermissionOptions {\r\n if(this.profileUser){ \r\n return this.permissionsMap.get(permission);\r\n }\r\n return null;\r\n }\r\n \r\n isFieldEnabledForUser(permission:Permission, field: string) : boolean {\r\n if(this.isAdmin()) return true; \r\n const permissionOptions = this.getUserPermissionOptions(permission);\r\n if(permissionOptions && permissionOptions.fields){\r\n return permissionOptions.fields.includes(field);\r\n }\r\n return false;\r\n }\r\n \r\n canEditUser(profileId: string){ \r\n if(this.isAdmin()) return true;\r\n if(this.userHasPermission(Permission.CREATE_EDIT_USER)) {\r\n const permissionOptions = this.getUserPermissionOptions(Permission.CREATE_EDIT_USER);\r\n if (permissionOptions.option === PermisionRuleOption.ALL_PROFILE) return true;\r\n else {// PermisionRuleOption.SOME_PROFILE\r\n return permissionOptions.fields.includes(profileId);\r\n }\r\n }\r\n else return false;\r\n }\r\n\r\n canDeleteUser(profileId: string){\r\n if(this.isAdmin()) return true;\r\n if(this.userHasPermission(Permission.DELETE_USER)){\r\n const permissionOptions = this.getUserPermissionOptions(Permission.DELETE_USER);\r\n if (permissionOptions.option === PermisionRuleOption.ALL_PROFILE) return true;\r\n else {// PermisionRuleOption.SOME_PROFILE\r\n return permissionOptions.fields.includes(profileId);\r\n }\r\n }\r\n else return false;\r\n }\r\n \r\n /**\r\n * Verifica se o usuário é admin\r\n */\r\n public isAdmin(): boolean {\r\n const loggedUserType = this.getLoggedUserType();\r\n return loggedUserType === UserType.ADMINISTRATOR;\r\n }\r\n\r\n /** Verifica que se o usuário tem acesso ao pelo menos uma opção do grupo para apresentar a opção de administração */\r\n isAdministrationGroupHidden(){\r\n if(this.userHasPermission(Permission.LIST_PATROL_TEAM_ADMINISTRATION) || \r\n this.userHasPermission(Permission.LIST_USERS_ADMINISTRATION) || \r\n this.userHasPermission(Permission.LIST_VEHICLE_ADMINISTRATION) || \r\n this.userHasPermission(Permission.LIST_COMPANY_ADMINISTRATION) ||\r\n this.userHasPermission(Permission.LIST_PLACEMENT_ADMINISTRATION))\r\n return false; \r\n \r\n return true;\r\n }\r\n \r\n /** Verifica que se o usuário tem acesso ao pelo menos uma opção do grupo para apresentar a opção de cadastro */\r\n isRegistrationGroupHidden(){\r\n if(this.userHasPermission(Permission.LIST_REGISTRATION_GROUP))\r\n return false; \r\n \r\n return true;\r\n }\r\n\r\n /**\r\n * Verifica se o usuário logado está autorizado ou não a remover esta verificação\r\n */\r\n public isVerificationDeletionAllowed( verification: VerificationModel): boolean {\r\n if (!verification || !verification.status) {\r\n return false;\r\n } \r\n\r\n if(this.isAdmin()) return true;\r\n\r\n let permissionOptions = this.getUserPermissionOptions(Permission.DELETE_VERIFICATIONS)\r\n if(permissionOptions)\r\n {\r\n switch(permissionOptions.option){\r\n case PermisionRuleOption.ONLY_NOT_STARTED: return (verification.status === OperationStatus.PLANNED);\r\n case PermisionRuleOption.ALL_VERIFICATIONS: return true;\r\n default: return false \r\n }\r\n \r\n } else return false\r\n }\r\n\r\n /**\r\n * Verifica se o usuário logado está autorizado ou não a remover essa ronda.\r\n */\r\n public isPatrolDeletionAllowed(patrol: PatrolModel): boolean {\r\n if (!patrol || !patrol.status) {\r\n return false;\r\n }\r\n\r\n if(this.isAdmin()) return true;\r\n\r\n let permissionOptions = this.getUserPermissionOptions(Permission.DELETE_PATROL)\r\n if(permissionOptions)\r\n {\r\n switch(permissionOptions.option)\r\n {\r\n case PermisionRuleOption.ONLY_NOT_STARTED : return (patrol.status == OperationStatus.PLANNED)\r\n case PermisionRuleOption.ALL_PATROLS : return true;\r\n default: return false;\r\n \r\n } \r\n } else return false;\r\n } \r\n\r\n isCreatorEditAllowedForUser(){\r\n if (this.isAdmin())\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n isApproveEditAllowedForUser(){\r\n if (this.isAdmin())\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n isProfileCreateEditAllowedForUser(){\r\n if (this.isAdmin())\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n /**\r\n * Verifica se o usuário logado está autorizado ou não a criar operações.\r\n */\r\n public isOperationCreatingAllowed(): boolean {\r\n return this.isOperationEditingAllowed();\r\n }\r\n\r\n public isOperationEditingAllowed(): boolean {\r\n const loggedUserType = this.getLoggedUserType();\r\n switch (loggedUserType) {\r\n case UserType.COORDINATOR_CCPD: return true;\r\n case UserType.COORDINATOR_OPPD: return true\r\n case UserType.PLANNER: return true;\r\n case UserType.ANALYSIS_CCPD: return true;\r\n case UserType.ADMINISTRATOR: return true;\r\n default: return false;\r\n }\r\n }\r\n\r\n public isOperationArchiveAllowed(): boolean {\r\n const loggedUserType = this.getLoggedUserType();\r\n switch (loggedUserType) {\r\n case UserType.ANALYSIS_CCPD: return true;\r\n case UserType.ADMINISTRATOR: return true;\r\n default: return false;\r\n }\r\n }\r\n\r\n public isPointStatusEditingAllowed(): boolean {\r\n const loggedUserType = this.getLoggedUserType();\r\n switch (loggedUserType) {\r\n case UserType.COORDINATOR_CCPD: return true;\r\n case UserType.COORDINATOR_OPPD: return true\r\n case UserType.ADMINISTRATOR: return true;\r\n default: return false;\r\n }\r\n }\r\n\r\n /**\r\n * Verifica se o usuário tem o perfil ANALYSIS_CCPD\r\n */\r\n public isControl(): boolean {\r\n const loggedUserType = this.getLoggedUserType();\r\n return loggedUserType === UserType.ANALYSIS_CCPD;\r\n }\r\n\r\n public canEditEventBySource(source: string): boolean {\r\n if (this.isAdmin())\r\n return true;\r\n\r\n if(!this.userHasPermission(Permission.CHANGE_EVENTS_FROM_ANY_SOURCE)){\r\n return false; // Se a permissão não está definida, não pode alterar\r\n }else{\r\n // Se está definida\r\n if(this.getUserPermissionOptions(Permission.CHANGE_EVENTS_FROM_ANY_SOURCE).option == PermisionRuleOption.SOME_SOURCE){\r\n // Se o valor é somente algumas origens, tem verificar a origem\r\n const sources = this.getUserPermissionOptions(Permission.CHANGE_EVENTS_FROM_ANY_SOURCE).fields;\r\n return sources.includes(source);\r\n }\r\n else {\r\n // Se o valor é qualquer origem\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n public getEditEventSources(): string[] {\r\n if(!this.userHasPermission(Permission.CHANGE_EVENTS_FROM_ANY_SOURCE)){\r\n return []; // Se a permissão não está definida retorna vazio\r\n }else{ \r\n // Se está definida\r\n if(this.getUserPermissionOptions(Permission.CHANGE_EVENTS_FROM_ANY_SOURCE)?.option === PermisionRuleOption.SOME_SOURCE){\r\n // Se é somente algumas, retorna lista de origens definidas\r\n const sources = this.getUserPermissionOptions(Permission.CHANGE_EVENTS_FROM_ANY_SOURCE).fields;\r\n return sources;\r\n }\r\n else {\r\n return null; // Todas\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Verifica se o usuário logado está autorizado ou não a enviar senha por e-mail a usuários.\r\n */\r\n public isSendingPasswordToUserAllowed(): boolean {\r\n const loggedUserType = this.getLoggedUserType();\r\n switch (loggedUserType) {\r\n case UserType.COORDINATOR_CCPD: return true;\r\n case UserType.COORDINATOR_OPPD: return true;\r\n case UserType.PLANNER: return true;\r\n case UserType.ANALYSIS_CCPD: return true;\r\n case UserType.ADMINISTRATOR: return true;\r\n case UserType.CENTRAL_OPERATOR: return true;\r\n default: return false;\r\n }\r\n }\r\n}\r\n","/**\r\n * Utilitário para manipulação de campos diversos\r\n */\r\n export default class FieldUtils {\r\n\r\n static padLeadingZeros(num: number, size: number): string {\r\n var s = num+\"\";\r\n while (s.length < size) s = \"0\" + s;\r\n return s;\r\n }\r\n\r\n static padEndZeros(num: number, size: number): string {\r\n var s = num+\"\";\r\n while (s.length < size) s = s + \"0\";\r\n return s;\r\n }\r\n\r\n static padEndZerosString(string: string, size: number): string {\r\n var s = string+\"\";\r\n while (s.length < size) s = s + \"0\";\r\n return s;\r\n }\r\n\r\n // Converte KM no formato 000000 para 000+000\r\n static kmIntToString(km: number) {\r\n if (km == null || km == undefined) return ''; // Cuidado !km=true se km=0\r\n let km_str: string = FieldUtils.padLeadingZeros(km, 6);\r\n return km_str.slice(0, 3) + '+' + km_str.slice(3, 6);\r\n }\r\n\r\n // Converte KM no formato 000+000 para 000000\r\n static kmStringToInt(km: string) {\r\n if (!km) return 0;\r\n return +km.slice(0, 3) * 1000 + +km.slice(4, 7);\r\n }\r\n\r\n static coordToString(coord): string {\r\n if (typeof coord == 'number')\r\n return coord.toFixed(6);\r\n else {\r\n let c: number = +coord;\r\n return c.toFixed(6);\r\n }\r\n }\r\n\r\n // Converte KM no formato ??0.??0 para 000+000\r\n static kmSimfToString(kmSimf: string){\r\n const km: string [] = kmSimf.split('.');\r\n if(km.length == 1) return FieldUtils.padLeadingZeros(+km[0], 3) + '+000';\r\n //Ao utilizar a função padEndZeros com um número iniciado com zero o parametro da função que era number \r\n //eliminada os zeros a esquerda, no caso replicada a função agora recebendo uma string #FSWSQD-1330\r\n const kmEdit = FieldUtils.padLeadingZeros(+km[0], 3) + '+' + FieldUtils.padEndZerosString(km[1], 3);\r\n return kmEdit;\r\n }\r\n\r\n static kmStringToSimf(kmSimf: string){\r\n const km: string [] = kmSimf.split('+');\r\n const km1: number = +km[0];\r\n const km2: number = +km[1];\r\n return km1 + \".\" + km2;\r\n }\r\n\r\n static parseLatLong(value: string){\r\n const latlong: string [] = value.split(',');\r\n if(latlong.length !== 2) return null;\r\n const latitude: number = +latlong[0].trim();\r\n const longitude: number = +latlong[1].trim();\r\n value = FieldUtils.coordToString(latitude) + ',' + FieldUtils.coordToString(longitude);\r\n return value;\r\n }\r\n\r\n static pasteLatLong(event: ClipboardEvent, oldValue: string): string {\r\n let newValue: string = event.clipboardData.getData('text');\r\n // Se novo valor está vazio\r\n if (!newValue || newValue.length == 0) {\r\n event.preventDefault();\r\n return newValue;\r\n }\r\n\r\n // Se antigo valor está vazio, apenas faz o parse do novo valor\r\n if (!oldValue || oldValue.length == 0) {\r\n event.preventDefault();\r\n return FieldUtils.parseLatLong(newValue);\r\n }\r\n else {\r\n var el = $(event.target);\r\n var cursorPosStart = el.prop('selectionStart');\r\n var cursorPosEnd = el.prop('selectionEnd');\r\n // Só faz o paste se o valor antigo está completamente selecionado\r\n if (cursorPosStart == 0 && cursorPosEnd == oldValue.length){\r\n event.preventDefault();\r\n return FieldUtils.parseLatLong(newValue);\r\n }\r\n\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Permission, UserType } from './../../../../model/enums.enum';\r\nimport { PatrolTeamModel } from './../../../../model/patrolteam.model';\r\nimport { Component, OnInit, OnDestroy, Inject } from '@angular/core';\r\nimport { EditComponent } from '../../../edit-component';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { PatrolTeamService } from 'src/app/service/model/patrol.team.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { environment } from 'src/environments/environment';\r\nimport { VehicleModel } from 'src/app/model/vehicle.model';\r\nimport { UserModel } from 'src/app/model/user.model';\r\nimport { ShiftDescription, ServiceTypeDescription } from 'src/app/model/enums.enum';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { StorageService } from '../../../../service/storage-service';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { MAP_PAGE } from 'src/app/common/constants';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { MarkersService } from 'src/app/service/model/markers.service';\r\n\r\n@Component({\r\n selector: 'app-patrol-team-edit',\r\n templateUrl: './patrol-team-edit.component.html',\r\n styleUrls: ['../../../../app.component.scss', './patrol-team-edit.component.scss']\r\n})\r\nexport class PatrolTeamEditComponent extends EditComponent implements OnInit, OnDestroy {\r\n\r\n /** SHIFTS: Morning, Night */\r\n shiftDescription = ShiftDescription;\r\n serviceTypeDescription = ServiceTypeDescription;\r\n\r\n /** The Vehicles filtered by the company chosed */\r\n vehicles: VehicleModel[];\r\n\r\n /** The Professionals loaded from the Registrations Service, to allow the user to choose from the list */\r\n professionals: UserModel[];\r\n\r\n /** The Users of type Coordinators loaded from the Registrations Service, to allow the user to choose from the list */\r\n coordinators: UserModel[];\r\n\r\n // Usado ao salvar para avisar a equipe quem mudou\r\n oldUsers: UserModel[];\r\n \r\n private reloadUsersSubscription: Subscription;\r\n private reloadVehiclesSubscription: Subscription;\r\n\r\n constructor(logger: NGXLogger,\r\n patrolTeamService: PatrolTeamService,\r\n dialog: MatDialog,\r\n toastr: ToastrService,\r\n private markerService: MarkersService,\r\n public entityCacheService: EntityCacheService,\r\n protected storageService: StorageService,\r\n authorizationService: AuthorizationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, patrolTeamService, dialog, environment.PATROL_TEAM_MODEL_LABEL, environment.PATROL_TEAM_TITLE_LABEL, storageService,\r\n 'patrol-teams-edit', environment.PATROL_TEAM_GROUP_LABEL, toastr, authorizationService, goldenLayout, container);\r\n this.logger.debug('PatrolTeamEditComponent.constructor()');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this.reloadUsersSubscription?.unsubscribe();\r\n this.reloadVehiclesSubscription?.unsubscribe();\r\n }\r\n\r\n mapModelToView() {\r\n super.mapModelToView();\r\n\r\n this.view['professional1'] = this.model['users'] ? this.model['users'][0] ? this.model['users'][0] : null : null;\r\n this.view['professional2'] = this.model['users'] ? this.model['users'][1] ? this.model['users'][1] : null : null;\r\n this.view['professional3'] = this.model['users'] ? this.model['users'][2] ? this.model['users'][2] : null : null;\r\n this.view['shift'] = this.model['shift'];\r\n\r\n if (this.view['name']) {\r\n this.glUpdateTabTitle(this.modelName + ': \"' + this.view['name'] + '\"');\r\n }\r\n\r\n if (!this.view['company']) {\r\n let patrolTeam = this.model as PatrolTeamModel;\r\n if (patrolTeam.users && \r\n patrolTeam.users[0] && \r\n patrolTeam.users[0].company) {\r\n this.view['company'] = patrolTeam.users[0].company; // backward compatibility code\r\n }\r\n }\r\n }\r\n\r\n mapViewToModel() {\r\n super.mapViewToModel();\r\n\r\n this.logger.debug('PatrolTeamEditComponent.mapViewToModel()');\r\n\r\n delete this.model['professional1'];\r\n delete this.model['professional2'];\r\n delete this.model['professional3'];\r\n\r\n this.model['users'] = [];\r\n if(this.view['professional1'] && this.view['professional1'] !== '') this.model['users'].push(this.view['professional1']);\r\n if(this.view['professional2'] && this.view['professional2'] !== '') this.model['users'].push(this.view['professional2']);\r\n if(this.view['professional3'] && this.view['professional3'] !== '') this.model['users'].push(this.view['professional3']);\r\n this.model['shift'] = this.view['shift'];\r\n }\r\n\r\n createData(options?) {\r\n this.logger.debug('PatrolTeamEditComponent.createData()');\r\n\r\n this.model = new PatrolTeamModel();\r\n this.view = {};\r\n\r\n this.glUpdateTabTitle(this.modelName + ': [NOVA]');\r\n }\r\n\r\n loadFormOptionsData() {\r\n this.logger.debug('PatrolTeamEditComponent.loadFormOptionsData()');\r\n let _this = this; // Necessário por causa do contexto das callacks\r\n const onUsersLoad = function(){\r\n _this.coordinators = _this.entityCacheService.getFilteredUsers([UserType.COORDINATOR_CCPD, UserType.COORDINATOR_OPPD]);\r\n\r\n if(_this.id || _this.copy){\r\n _this.updateFormData(true);\r\n }\r\n }\r\n this.entityCacheService.loadUsers(this.loadingListService, onUsersLoad);\r\n this.reloadUsersSubscription = this.entityCacheService.onUsersReload().subscribe(onUsersLoad);\r\n\r\n const onVehiclesLoad = function(){\r\n if(_this.id || _this.copy){\r\n _this.updateFormData(true);\r\n }\r\n };\r\n this.entityCacheService.loadVehicles(this.loadingListService, onVehiclesLoad);\r\n this.reloadVehiclesSubscription = this.entityCacheService.onVehiclesReload().subscribe(onUsersLoad);\r\n\r\n this.entityCacheService.loadCompanies(this.loadingListService);\r\n }\r\n\r\n /**\r\n * Método que recebe a empresa selecionada ou a empresa da equipe e recarrega\r\n * os dados das combos usando a empresa como filtro\r\n */\r\n updateFormData(load: boolean){\r\n let patrolTeam = this.view as PatrolTeamModel;\r\n\r\n if (!patrolTeam.company && load) {\r\n if (patrolTeam.users && \r\n patrolTeam.users[0] && \r\n patrolTeam.users[0].company) {\r\n patrolTeam.company = patrolTeam.users[0].company; // backward compatibility code\r\n this.toastr.warning(\"Empresa não encontrada. Usada empresa do primeiro profissional.\");\r\n this.onEnableEditClick();\r\n }\r\n }\r\n\r\n if(!patrolTeam.company) {\r\n this.toastr.warning(\"Empresa não encontrada. Dados de Profissionais e Veículo removidos.\");\r\n this.clearCompanyDependentyFields();\r\n this.onEnableEditClick();\r\n return;\r\n };\r\n\r\n if (this.entityCacheService.getVehicles().length == 0 ||\r\n this.entityCacheService.getUsers().length == 0){\r\n return;\r\n }\r\n\r\n this.vehicles = this.entityCacheService.getVehicles().filter( vehicle => vehicle.company?.id === patrolTeam.company.id );\r\n\r\n if (environment.allUsersCanUseApp) {\r\n this.professionals = this.entityCacheService.getUsers();\r\n }else {\r\n this.professionals = this.entityCacheService.getFilteredUsers([UserType.PROFESSIONAL]);\r\n }\r\n this.professionals = this.professionals.filter(elem => (elem.patrolTeamId === '' || elem.patrolTeamId == this.id) && elem.company?.id === patrolTeam.company.id);\r\n }\r\n\r\n clearCompanyDependentyFields(){\r\n this.view['professional1'] = '';\r\n this.view['professional2'] = '';\r\n this.view['professional3'] = '';\r\n\r\n this.view['vehicle'] = '';\r\n }\r\n\r\n canEdit(): boolean {\r\n if (!this.model) return false;\r\n\r\n if (!this.authorizationService.userHasPermission(Permission.CREATE_EDIT_PATROL_TEAM)){\r\n return false\r\n }\r\n\r\n return true;\r\n }\r\n\r\n onSaveClick(saveClickEvent?) {\r\n const professional1 = this.view['professional1'];\r\n const professional2 = this.view['professional2'];\r\n const professional3 = this.view['professional3'];\r\n const teamId = this.view['id']; // Existe somente se o modelo já havia sido salvo antes,\r\n // pode ser null que não invalida os testes abaixo\r\n\r\n // Ao menos 1 profissional precisa ser selecionado\r\n if(!professional1 && !professional2 && !professional3){\r\n this.toastr.error('Ao menos 1 profissional precisa ser selecionado');\r\n return;\r\n }\r\n\r\n // Verifica se o profissional foi escolhido mais de 1 vez\r\n // TODO: Falta verificar Login e Nome repetidos\r\n if (((professional1 && professional2) && professional1.id === professional2.id) ||\r\n ((professional1 && professional3) && professional1.id === professional3.id) ||\r\n ((professional2 && professional3) && professional2.id === professional3.id)) {\r\n this.toastr.error('Os profissionais precisam ser diferentes');\r\n return;\r\n }\r\n\r\n // Verifica se os profissionais escolhidos já fazem parte de outra equipe\r\n const professional1HasTeam: boolean = professional1 && professional1.patrolTeamId && professional1.patrolTeamId != teamId;\r\n const professional2HasTeam: boolean = professional2 && professional2.patrolTeamId && professional2.patrolTeamId != teamId;\r\n const professional3HasTeam: boolean = professional3 && professional3.patrolTeamId && professional3.patrolTeamId != teamId;\r\n\r\n if (professional1HasTeam && professional2HasTeam && professional3HasTeam) {\r\n this.toastr.error('Os Profissionais ' + professional1.name + ', ' + professional2.name + ' e ' + professional3.name +\r\n ' já foram cadastrados em outra equipe.');\r\n return;\r\n }\r\n else if (professional1HasTeam && professional2HasTeam) {\r\n this.toastr.error('Os Profissionais ' + professional1.name + ' e ' + professional2.name +\r\n ' já foram cadastrados em outra equipe.');\r\n return;\r\n }\r\n else if (professional1HasTeam && professional3HasTeam) {\r\n this.toastr.error('Os Profissionais ' + professional1.name + ' e ' + professional3.name +\r\n ' já foram cadastrados em outra equipe.');\r\n return;\r\n }\r\n else if (professional2HasTeam && professional3HasTeam) {\r\n this.toastr.error('Os Profissionais ' + professional2.name + ' e ' + professional3.name +\r\n ' já foram cadastrados em outra equipe.');\r\n return;\r\n }\r\n else if (professional1HasTeam) {\r\n this.toastr.error('O Profissional ' + professional1.name + ' já foi cadastrado em outra equipe.');\r\n return;\r\n }\r\n else if (professional2HasTeam) {\r\n this.toastr.error('O Profissional ' + professional2.name + ' já foi cadastrado em outra equipe.');\r\n return;\r\n }else if (professional3HasTeam) {\r\n this.toastr.error('O Profissional ' + professional3.name + ' já foi cadastrado em outra equipe.');\r\n return;\r\n }\r\n else {\r\n this.view['name'] = this.view['name'].trim();\r\n this.oldUsers = (this.model as PatrolTeamModel).users; // Em uma nova equipe users é null\r\n if (this.oldUsers) this.oldUsers = this.oldUsers.slice();\r\n super.onSaveClick(saveClickEvent);\r\n }\r\n }\r\n\r\n entitySaved(entity: EntityModel): void {\r\n const newUsers = (this.model as PatrolTeamModel).users;\r\n if (this.oldUsers) {\r\n this.oldUsers.forEach(oldUser => {\r\n if (!newUsers.find(newUser => newUser.id == oldUser.id)) {\r\n // Não encontrou o antigo na lista nova, antigo removido da lista\r\n this.markerService.sendTeamInfoMessage(this.loggedUser, oldUser.patrolTeamId, \"Usuário \\\"\" + oldUser.name + \"\\\" removido da Equipe.\");\r\n }\r\n });\r\n newUsers.forEach(newUser => {\r\n if (!this.oldUsers.find(oldUser => newUser.id == oldUser.id)) {\r\n // Não encontrou o novo na lista antiga, novo acrescentado na equipe\r\n newUser.patrolTeamId = this.model.id;\r\n this.markerService.sendTeamInfoMessage(this.loggedUser, newUser.patrolTeamId, \"Usuário \\\"\" + newUser.name + \"\\\" adicionado à Equipe.\");\r\n }\r\n });\r\n this.oldUsers = null;\r\n }\r\n super.entitySaved(entity);\r\n }\r\n\r\n isRequiredFieldFilled(): boolean{\r\n if (!this.view['name'] ||\r\n !this.view['vehicle'] ||\r\n !this.view['company'] ||\r\n !this.view['serviceType']) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['name']) names.push('Nome');\r\n if (!this.view['vehicle']) names.push('Veículo');\r\n if (!this.view['company']) names.push('Empresa');\r\n if (!this.view['serviceType']) names.push('Tipo de Serviço');\r\n return names;\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n this.model['name'] = null;\r\n this.model['users'] = [];\r\n }\r\n\r\n onHistoricalTrackingClick() {\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingTeam: this.model});\r\n }\r\n\r\n replaceRunTimeData(data){\r\n this.replaceUserData(data, 0, 'patrolTeamId');\r\n this.replaceUserData(data, 1, 'patrolTeamId');\r\n this.replaceUserData(data, 2, 'patrolTeamId');\r\n super.replaceRunTimeData(data);\r\n }\r\n\r\n replaceUserData(data, userIndex, key) {\r\n if (!this.model['users'][userIndex] || !data['users'][userIndex])\r\n return;\r\n\r\n this.model['users'][userIndex][key] = data['users'][userIndex][key];\r\n\r\n if (this.view['professional' + userIndex + 1]) {\r\n this.view['professional' + userIndex + 1][key] = data['users'][userIndex][key];\r\n this.updateInitialView('professional' + userIndex + 1 + '.' + key);\r\n }\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n {{modelName + (isCreating()? ': [NOVA]':'')}}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Nome\r\n \r\n Campo Obrigatório\r\n \r\n\r\n \r\n \r\n\r\n \r\n Lotação\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n","
    \r\n\r\n
    \r\n \r\n {{title}}[ {{getListCount()}} ]\r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n ID {{element?.identifier}} Status \r\n \r\n \r\n {{getOperationStatus(element) + ((element.expired && element.status=='FINISHED')? ' (expirada)': '') }}\r\n \r\n \r\n Evento {{ element?.eventId }} Data/Hora (Solicitação) {{element?.sentDate | date:'dd/MM/yyyy HH:mm'}} Equipe {{element?.patrolTeam?.name}} Prioritária {{ (element?.priority ? 'Sim': 'Não') }} Liberação de Faixa {{verificationBandReleaseDescription[element?.bandRelease] || \"\"}} Analista {{getUserNameLoginTitle(element?.analyst)}} Faixa {{element?.band}} KM {{element?.stretchStartKM && element?.stretchEndKM ?\r\n element?.stretchStartKM + \" - \" + element?.stretchEndKM : element?.km}} Lotação {{element?.placement?.name}} Duto {{element?.duct}} Última Atualização (GPS) {{element.lastSync | date:'dd/MM/yyyy HH:mm:ss'}}
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n","import { Component, OnInit, OnDestroy, Inject, Input, NgZone, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ShiftDescription, OperationStatus, UserType, OperationStatusDescription, PermisionRuleOption, OperationType, Permission } from 'src/app/model/enums.enum';\r\nimport { VerificationService } from 'src/app/service/model/verification.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { StorageService } from '../../../service/storage-service';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { VerificationModel } from 'src/app/model/verification.model';\r\nimport { saveAs } from 'file-saver/dist/FileSaver';\r\nimport { VerificationFilterDialogComponent } from '../verification-filter-dialog/verification-filter-dialog.component';\r\nimport { VerificationFilterModel } from '../verification-filter-dialog/verification.filter.model';\r\nimport { AuthorizationService } from '../../../service/authorization/authorization.service';\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\nimport { TrackingService } from 'src/app/service/model/tracking.service';\r\nimport { OperationListComponent } from '../../operation-list-component';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { VerificationBandReleaseDescription } from '../../../model/enums.enum';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\nimport { first } from 'rxjs/operators';\r\nimport { ArchivedType } from '../../../general/filter-component/filter.model';\r\nimport { EventModel } from '../../../model/event.model';\r\nimport { ESP } from 'src/app/common/constants';\r\nimport { MarkersService } from 'src/app/service/model/markers.service';\r\n\r\n@ProfileClassToConsole()\r\n@Component({\r\n selector: 'app-verification-list',\r\n templateUrl: './verification-list.component.html',\r\n styleUrls: ['../../../app.component.scss', '../../list.component.scss', './verification-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class VerificationListComponent extends OperationListComponent implements OnInit, OnDestroy {\r\n\r\n /* Variável setada quando o componente é filho de outro e ajuda para o filtro de dados apresentado na lista */\r\n identifierEvent: string;\r\n\r\n @Input() readOnly: boolean = false;\r\n \r\n _editedEvent : EventModel;\r\n \r\n @Input()\r\n set editedEvent (event : EventModel) {\r\n this._editedEvent = event;\r\n if(this._editedEvent != null){\r\n this.identifierEvent = event.identifier != null ? event.identifier : \"[NOVO]\"; // o modelo existe, mais ainda não foi salvo\r\n if (this.filterModel) {\r\n let filter: VerificationFilterModel = this.filterModel as VerificationFilterModel;\r\n filter.eventIds = [];\r\n filter.eventIds.push(this.identifierEvent);\r\n filter.archived = ArchivedType.ALL;\r\n }\r\n } else {\r\n this.identifierEvent = \"[NOVO]\";\r\n }\r\n \r\n }\r\n \r\n get editedEvent(): EventModel {\r\n return this._editedEvent;\r\n }\r\n\r\n operationStatusDescription = OperationStatusDescription;\r\n verificationBandReleaseDescription = VerificationBandReleaseDescription;\r\n permisionRuleOption = PermisionRuleOption; \r\n\r\n isHiddenButtonCreateEditVerification: boolean;\r\n isHiddenButtonDeleteVerification: boolean; \r\n\r\n constructor(logger: NGXLogger,\r\n protected changeDetector: ChangeDetectorRef,\r\n protected ngZone: NgZone,\r\n protected verificationService: VerificationService,\r\n protected markerService: MarkersService,\r\n protected storageService: StorageService,\r\n public authorizationService: AuthorizationService,\r\n protected toastr: ToastrService,\r\n protected trackingService: TrackingService,\r\n dialog: MatDialog, \r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, changeDetector, ngZone, authorizationService, verificationService, OperationType.EVENT_VERIFICATION, dialog, 'verifications', environment.VERIFICATION_GROUP_LABEL, environment.VERIFICATION_TITLE_LABEL,\r\n environment.VERIFICATION_MODEL_LABEL, storageService, trackingService, markerService, toastr, goldenLayout, container);\r\n logger.debug('VerificationListComponent.constructor()');\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n this.logger.debug('VerificationListComponent.ngOnInit()'); \r\n // Ao editar essa lista, não esquecer de atualizar columnsTitles mais abaixo (select e lastSync não entram, date=>data+hora, km=>km+trecho+trecho)\r\n if(this.identifierEvent){\r\n this.displayedColumns = ['select', 'identifier', 'status', 'analyst.name',\r\n 'sentDate', 'band', 'duct', 'km', 'patrolTeam.company.placement.name',\r\n 'patrolTeam.name', 'priority', 'bandRelease','lastSync'];\r\n }else{\r\n this.displayedColumns = ['select', 'identifier', 'status', 'analyst.name',\r\n 'sentDate', 'band', 'duct', 'km', 'patrolTeam.company.placement.name',\r\n 'patrolTeam.name', 'priority', 'bandRelease', 'eventId', 'lastSync'];\r\n }\r\n\r\n this.glUpdateTabTitle();\r\n\r\n /**Verifica se o usuário possui a restrição \"Acesso somente a dados de Lotações específicas\" da seção Web.\r\n * Em caso positivo, somente as verificações que pertencem à mesma Lotação do usuário */\r\n this.filterModel.placements = this.storageService.getSpecificPlacementIds();\r\n }\r\n\r\n protected getDefaultSortColumn(): string {\r\n return \"identifier\";\r\n }\r\n\r\n protected getDefaultSortDirection(): 'asc' | 'desc' {\r\n return 'desc';\r\n }\r\n\r\n protected newFilterModel() {\r\n let filter = new VerificationFilterModel();\r\n\r\n if (this.identifierEvent) {\r\n filter.eventIds = [];\r\n filter.eventIds.push(this.identifierEvent);\r\n filter.archived = ArchivedType.ALL;\r\n }\r\n \r\n return filter;\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n }\r\n\r\n postLoadProcess(): void {\r\n this.model.forEach((verification: VerificationModel) => {\r\n verification.type = OperationType.EVENT_VERIFICATION;\r\n this.updateOperationFromPatrolTeam(verification);\r\n this.checkVerificationStartDate(verification);\r\n });\r\n \r\n this.loadLastSignals();\r\n }\r\n\r\n protected getExportColValue(col, model):string[] {\r\n let values: string[] = [];\r\n\r\n if(col == 'sentDate') {\r\n values.push(model[col] ? DateUtils.timestampToStringInDays(model[col]) : \"\");\r\n values.push(model[col] ? DateUtils.timestampToTimeString(model[col]) : \"\");\r\n }\r\n else if(col == 'priority') {\r\n if(model[col]) values.push('Sim');\r\n else values.push('Não');\r\n }\r\n else if(col == 'status') {\r\n values.push(this.getOperationStatus(model));\r\n }\r\n else if (col == 'bandRelease'){\r\n values.push(VerificationBandReleaseDescription[model[col]]);\r\n }\r\n else if(col == 'patrolTeam.name') {\r\n if(model['patrolTeam']) values.push(model['patrolTeam']['name']);\r\n else values.push(\"\");\r\n }\r\n else if(col == 'patrolTeam.shift') {\r\n if(model['patrolTeam'] && model['patrolTeam']['shift']) values.push(ShiftDescription[model['patrolTeam']['shift']]);\r\n else values.push(\"\");\r\n }\r\n else if(col == 'patrolTeam.company.placement.name') {\r\n if(model['patrolTeam'] && model['patrolTeam']['company'] && model['patrolTeam']['company']['placement']) return model['patrolTeam']['company']['placement']['name'];\r\n else values.push(\"\");\r\n }\r\n else if(col == 'km') {\r\n values.push(model['km'] ? model['km'] : \"\");\r\n values.push(model['stretchStartKM'] ? model['stretchStartKM'] : \"\");\r\n values.push(model['stretchEndKM'] ? model['stretchEndKM'] : \"\");\r\n }\r\n else if(col == 'analyst.name') {\r\n if(model['analyst']) values.push(this.getUserNameLoginTitle(model['analyst']));\r\n else values.push(\"\");\r\n }\r\n else {\r\n values.push(model[col]);\r\n }\r\n return values;\r\n }\r\n\r\n onExportManyClick() {\r\n if(this.selection.selected.length == 1) {\r\n this.onExportClick(this.selection.selected[0], null);\r\n }\r\n else {\r\n const columnsTitles = ['ID', 'Status', 'Analista', 'Data', 'Hora', 'Faixa', 'Duto', 'KM','Início de Trecho (KM)', 'Fim de Trecho (KM)', \r\n 'Lotação', 'Equipe', 'Prioritária', 'Liberação de Faixa', 'Evento'];\r\n this.exportXls(columnsTitles);\r\n }\r\n }\r\n\r\n onExportClick(row: any, event: any) {\r\n this.loadingListService.loadingOn();\r\n (this.entityService).exportVerification(row).pipe(first()).subscribe(response => {\r\n this.loadingListService.loadingOff();\r\n this.renderComponent();\r\n \r\n let filename = `${row.identifier}.zip`;\r\n filename = filename.replace(/[\\x00-\\x1f?<>:\"/\\\\*|]/g, '_');\r\n saveAs(response, filename);\r\n },\r\n error =>{\r\n this.loadingListService.loadingOff();\r\n this.renderComponent();\r\n this.logger.error(error);\r\n });\r\n }\r\n\r\n /**\r\n * Abre dialog de filtro dos dados do grid\r\n */\r\n openFilterDialog(): void {\r\n const dialogRef = this.dialog.open(VerificationFilterDialogComponent, {\r\n width: '800px',\r\n data: this.filterModel,\r\n panelClass: 'sipd-modal'\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.updateDataSource(result);\r\n }\r\n });\r\n }\r\n\r\n canDelete(entity: EntityModel) {\r\n return this.authorizationService.isVerificationDeletionAllowed(entity);\r\n }\r\n\r\n /**\r\n * Retorna a entidade em formato string, contendo só os campos visualizados na interface, para Buscar.\r\n */\r\n protected getStringEntityForFilter(verification: VerificationModel): string {\r\n const identifier = (verification.identifier) ? super.lowerAndTrimText(verification.identifier) : '';\r\n const status = super.lowerAndTrimText(this.getOperationStatus(verification) + ((verification.expired && verification.status=='FINISHED')? ' (expirada)': ''));\r\n const sentDate = (verification.sentDate) ? this.formatDate(verification.sentDate) : '';\r\n const priority = verification.priority ? 'sim': 'não';\r\n const patrolTeamName = verification.patrolTeam? super.lowerAndTrimText(verification.patrolTeam.name): '';\r\n const placement = verification.patrolTeam && verification.patrolTeam.company && verification.patrolTeam.company.placement && verification.patrolTeam.company.placement.name? super.lowerAndTrimText(verification.patrolTeam.company.placement.name): '';\r\n const analyst = (verification.analyst) ? super.lowerAndTrimText(this.getUserNameLoginTitle(verification.analyst)) : '';\r\n const eventId = super.lowerAndTrimText(verification.eventId);\r\n const duct = super.lowerAndTrimText(verification.duct);\r\n const band = super.lowerAndTrimText(verification.band);\r\n const bandRelease = verification.bandRelease ? super.lowerAndTrimText(this.verificationBandReleaseDescription[verification.bandRelease]) : '';\r\n const km = verification.stretchStartKM && verification.stretchEndKM ? verification.stretchStartKM + ' - ' +\r\n verification.stretchEndKM : (verification.km ? verification.km : '');\r\n return identifier + ESP + status + ESP + sentDate + ESP + priority + ESP + eventId + ESP + band + ESP + duct + ESP + km + ESP + patrolTeamName + ESP + placement + ESP + bandRelease + ESP + analyst;\r\n }\r\n\r\n // Verifica os requisitos do model para arquivamento\r\n hasArchivalRequirements(model: VerificationModel){\r\n\r\n if(model.status != OperationStatus.FINISHED){ // Verifica se o status é Concluído\r\n return false;\r\n }\r\n\r\n if(this.authorizationService.isControl()){ // Se for perfil ANALYSIS_CCPD, verifica se os eventos foram criados por ele\r\n if(!model.analyst || model.analyst.id !== this.loggedUser.id.toString()){\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n archiveTooltipText() {\r\n return `${this.archiveButtonLabel} Verificação(ões) Selecionada(s)`;\r\n }\r\n\r\n /** Abre o container de inserção de verificações, passando o identificador do evento */\r\n onCreateVerificationClick(){\r\n this.glOpenContainer('verifications-edit', {id: null, options: {event: this.editedEvent}});\r\n }\r\n\r\n /** Desabilita o botão criar quando a lista está dentro da edição de um evento que não foi salvo */\r\n public canCreateVerification(): boolean {\r\n if (this.identifierEvent === '[NOVO]') return false\r\n else return true;\r\n }\r\n \r\n /** Método sobrescrito do pai que permite reusar o componente da lista de verificações\r\n * sem trocar o título do componente que o está contido (evento) */\r\n glUpdateTabTitle(){\r\n if(!this.identifierEvent) super.glUpdateTabTitle(this.tabTitle);\r\n }\r\n\r\n saveData(entity){\r\n // Confere se o usuário tem acesso apenas algumas lotações, antes de atualizar na lista \r\n let specificPlacements = this.storageService.getSpecificPlacementIds();\r\n const operation = entity as OperationModel;\r\n if(specificPlacements.length > 0 && !specificPlacements.includes(operation.placement.id)){\r\n return;\r\n }\r\n\r\n const oldModel: any = this.model.find( model => operation.id == model.id);\r\n if (oldModel)\r\n entity.lastSync = oldModel.lastSync;\r\n\r\n if(!this.identifierEvent || (entity).eventId == this.identifierEvent){ \r\n if (this.identifierEvent) (this.filterModel).eventIds.push(this.identifierEvent);\r\n if (this.model) super.saveData(entity); // TODO scuri Não faz sentido o teste de proteção, mas em algum caso não identificado está ocorrendo. Pode ser concorrência. \r\n }\r\n }\r\n\r\n checkPermissions(){\r\n this.isHiddenButtonCreateEditVerification = !this.authorizationService.userHasPermission(Permission.CREATE_EDIT_VERIFICATIONS);\r\n this.isHiddenButtonDeleteVerification = !this.authorizationService.userHasPermission(Permission.DELETE_VERIFICATIONS);\r\n }\r\n \r\n /** chamada pelo updateModelItem inscrito no websocket que ouve as mudanças nas operações */\r\n checkInsideEventlistOrNotInsideEvent(entity): boolean{\r\n if(!this.identifierEvent) // se a lista não está numa edição de evento\r\n return true;\r\n\r\n if(entity.eventId === this.identifierEvent ){ // se a lista pertence a esse evento\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n onHistoricalTrackingClick(verificationModel : VerificationModel){\r\n this.checkVerificationStartDate(verificationModel);\r\n super.onHistoricalTrackingClick(verificationModel);\r\n } \r\n\r\n //verifica se a operação tem startDate, se não tiver prenche essa informação com a data de envío\r\n checkVerificationStartDate(verification : VerificationModel){\r\n if (verification.sentDate != null && verification.startDate == null) {\r\n verification.startDate = verification.sentDate;\r\n }\r\n }\r\n}","import {Injectable} from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport {environment} from '../../../environments/environment';\r\n\r\n@Injectable()\r\nexport class LayerService {\r\n\r\n constructor(private http: HttpClient){}\r\n\r\n public getBands(){\r\n return this.http.get(`${environment.settings.registrations_address}/geo?geoMetadata=Band`);\r\n }\r\n\r\n /* Não são mais usados - todas as camadas são carregadas em memória\r\n public getBandsByStates(states: string[]){\r\n\r\n let params = new HttpParams();\r\n params = params.append('geoMetadata', 'Band');\r\n\r\n for(let i = 0; i < states.length; i++){\r\n params = params.append('states', states[i]);\r\n }\r\n\r\n return this.http.get(`${environment.settings.registrations_address}/geo`, { params : params});\r\n }\r\n\r\n public getGeoItemsByFilter(geoMetadata: string, states: string[], simple: boolean){\r\n let params = new HttpParams();\r\n params = params.append('geoMetadata', geoMetadata);\r\n\r\n for(let i = 0; i < states.length; i++){\r\n params = params.append('states', states[i]);\r\n }\r\n\r\n params = params.append('simple', String(simple));\r\n\r\n return this.http.get(`${environment.settings.registrations_address}/geo`, { params : params});\r\n }\r\n\r\n public getKilometerMarksByBand(bandId: string){\r\n let params = new HttpParams();\r\n params = params.append('geoMetadata', 'KilometerMark');\r\n params = params.append('bandIds', bandId);\r\n\r\n return this.http.get(`${environment.settings.registrations_address}/geo`, { params : params});\r\n }\r\n\r\n public getKilometerMarksByBandIds(bandIds: string[]){\r\n let params = new HttpParams();\r\n params = params.append('geoMetadata', 'KilometerMark');\r\n\r\n if(bandIds){\r\n for(let i = 0; i < bandIds.length; i++){\r\n params = params.append('bandIds', bandIds[i]);\r\n }\r\n }\r\n\r\n return this.http.get(`${environment.settings.registrations_address}/geo`, { params : params});\r\n }\r\n */\r\n\r\n public getGasDucts(){\r\n return this.http.get(`${environment.settings.registrations_address}/geo?geoMetadata=GasDuct`);\r\n }\r\n\r\n public getOilDucts(){\r\n return this.http.get(`${environment.settings.registrations_address}/geo?geoMetadata=OilDuct`);\r\n }\r\n\r\n public getSimf(){\r\n return this.http.get(`${environment.settings.registrations_address}/geo?geoMetadata=Simf`);\r\n }\r\n\r\n public getDeliveryPoints(){\r\n return this.http.get(`${environment.settings.registrations_address}/geo?geoMetadata=DeliveryPoint`);\r\n }\r\n\r\n public getKilometerMarks(){\r\n return this.http.get(`${environment.settings.registrations_address}/geo?geoMetadata=KilometerMark`);\r\n }\r\n\r\n public getRefinary(){\r\n return this.http.get(`${environment.settings.registrations_address}/geo?geoMetadata=Refinary`);\r\n }\r\n\r\n public getTerminal(){\r\n return this.http.get(`${environment.settings.registrations_address}/geo?geoMetadata=Terminal`);\r\n }\r\n\r\n public getValve(){\r\n return this.http.get(`${environment.settings.registrations_address}/geo?geoMetadata=Valve`);\r\n }\r\n\r\n public getDCsHistory(){\r\n return this.http.get(`${environment.settings.registrations_address}/geo?geoMetadata=Dc`);\r\n }\r\n\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { SingleDataService } from '../../service/model/single.data.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { StorageService } from '../../service/storage-service';\r\nimport { AuthorizationService } from '../../service/authorization/authorization.service';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { EditComponent } from '../../pages/edit-component';\r\nimport { SingleDataModel } from '../../model/singleData.model';\r\nimport { Permission } from 'src/app/model/enums.enum';\r\nimport { FILL_DATA_PREFIX, MAP_PAGE } from '../../common/constants';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { DcModel } from 'src/app/model/dc.model';\r\n\r\n@Component({\r\n selector: 'app-single-data-edit',\r\n templateUrl: './single-data-edit.component.html',\r\n styleUrls: ['./single-data-edit.component.scss']\r\n})\r\nexport class SingleDataEditComponent extends EditComponent {\r\n\r\n public dataType: string;\r\n public hasGeometry: boolean;\r\n public hasNumber: boolean;\r\n\r\n constructor(logger: NGXLogger,\r\n protected singleDataService: SingleDataService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n dialog: MatDialog,\r\n toastr: ToastrService,\r\n protected storageService: StorageService,\r\n authorizationService: AuthorizationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, singleDataService, dialog, \"\", \"\", storageService,\r\n container.title, \"\", toastr, authorizationService, goldenLayout, container);\r\n this.logger.debug('SingleDataEditComponent.constructor()');\r\n\r\n const dataInfo = singleDataService.getDataInfo(container.title);\r\n this.dataType = dataInfo.type;\r\n this.modelName = dataInfo.modelLabel;\r\n this.hasGeometry = dataInfo.geometry;\r\n this.hasNumber = dataInfo.opsNumber;\r\n }\r\n\r\n loadFormOptionsData() {\r\n if (this.hasGeometry) {\r\n const metadatas: string[] = [\r\n \"State\",\r\n ];\r\n \r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n }\r\n\r\n protected createData(options?: any) {\r\n this.logger.debug('SingleDataEditComponent.createData()');\r\n\r\n this.model = new SingleDataModel();\r\n this.model['type'] = this.dataType;\r\n this.view = {};\r\n this.view['type'] = this.model['type'];\r\n }\r\n\r\n canEdit(): boolean {\r\n if (!this.model) return false;\r\n\r\n if (!this.authorizationService.userHasPermission(Permission.EDIT_REGISTRATION_GROUP)){\r\n return false\r\n }\r\n\r\n return true;\r\n }\r\n\r\n protected getExtraParams() {\r\n let extraParams = new Map();\r\n extraParams.set(\"metadata\", this.dataType);\r\n extraParams.set(\"id\", this.id);\r\n return extraParams;\r\n }\r\n\r\n isRequiredFieldFilled(): boolean{\r\n if (!this.view['name']) {\r\n return false;\r\n }\r\n if (this.hasGeometry && !this.view['states']) {\r\n return false;\r\n }\r\n if (this.hasNumber && (this.view['opsNumber'] === null || this.view['opsNumber'] === undefined || this.view['opsNumber'] < 0)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['name']) names.push('Nome');\r\n return names;\r\n }\r\n\r\n mapModelToView() {\r\n super.mapModelToView();\r\n\r\n if (this.view['name'] == null) {\r\n if (this.dataType == \"Dc\") {\r\n DcModel.updateName(this.view as DcModel);\r\n }\r\n }\r\n\r\n if (this.view['name']) {\r\n this.glUpdateTabTitle(this.modelName + ': \"' + this.view['name'] + '\"');\r\n }\r\n\r\n this.view['type'] = this.dataType;\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n this.model['name'] = null;\r\n if (this.hasGeometry) {\r\n this.model['states'] = []\r\n }\r\n if (this.hasNumber) {\r\n this.model['opsNumber'] = []\r\n }\r\n if (this.dataType == \"Dc\") {\r\n this.model['year'] = null;\r\n }\r\n }\r\n\r\n entitySaved(entity: EntityModel): void {\r\n super.entitySaved(entity);\r\n this.glEmitEvent(FILL_DATA_PREFIX + MAP_PAGE, {updatedLayer: this.dataType});\r\n }\r\n \r\n onLocationClick(){\r\n this.glOpenContainer(MAP_PAGE, {layerData: this.view});\r\n }\r\n\r\n hasLocation(){\r\n if (this.view && this.view['geometry'])\r\n return true;\r\n return false;\r\n }\r\n}\r\n","
    \r\n
    \r\n\r\n
    \r\n {{modelName + (isCreating()? ': [NOVO]':'')}}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    Nome
    \r\n \r\n\r\n
    \r\n \r\n Nome\r\n \r\n Campo Obrigatório\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    UF(s)
    \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    Valor
    \r\n \r\n\r\n
    \r\n \r\n Valor\r\n \r\n Campo Obrigatório\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    Ano
    \r\n \r\n\r\n
    \r\n \r\n Ano\r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { EventMainActionModel } from 'src/app/model/event.main.action.model';\r\n\r\n@Component({\r\n selector: 'app-event-main-action-dialog',\r\n templateUrl: './event-main-action-dialog.component.html',\r\n styleUrls: ['../../../app.component.scss', './event-main-action-dialog.component.scss']\r\n})\r\nexport class EventMainActionDialogComponent implements OnInit {\r\n\r\n comment: string;\r\n\r\n constructor(private logger: NGXLogger,\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public action: EventMainActionModel){\r\n this.comment = action.comment;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.logger.debug(this.action);\r\n }\r\n\r\n onSaveClick() {\r\n this.action.comment = this.comment;\r\n }\r\n}\r\n","
    \r\n Editar Comentário\r\n \r\n
    \r\n\r\n
    \r\n Ação:\r\n

    {{action.action}}

    \r\n \r\n Comentário\r\n \r\n \r\n
    \r\n\r\n\r\n \r\n \r\n\r\n","import {UserModel} from './user.model';\r\nimport { OperationModel } from './operation.model';\r\nimport { OperationType, OperationStatus } from './enums.enum';\r\nimport { ResultsModel } from './results.model';\r\nimport LanguageUtils from '../service/util/language-utils';\r\n\r\nexport class PatrolModel extends OperationModel {\r\n author: UserModel;\r\n name: string;\r\n patrolRepetitionId: string;\r\n result: ResultsModel; \r\n patrolInspectionType: string;\r\n\r\n constructor() {\r\n super();\r\n this.type = OperationType.PATROL;\r\n this.status = OperationStatus.PLANNED;\r\n this.result = new ResultsModel();\r\n }\r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['author'] = 'Planejador';\r\n LanguageUtils.languageMap['result'] = 'Resultados';\r\n LanguageUtils.languageMap['patrolInspectionType'] = 'Tipo de Inspeção';\r\n }\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport {Injectable} from '@angular/core';\r\nimport { first, map } from 'rxjs/operators';\r\nimport { SORT_NAME_ASC, SORT_OPS_ASC } from 'src/app/common/constants';\r\nimport { SingleDataModel } from 'src/app/model/singleData.model';\r\nimport { LoadingListService } from '../loading/loading-list.service';\r\nimport { SingleDataService } from './single.data.service';\r\nimport { NGXLogger } from 'ngx-logger';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SingleDataCacheService {\r\n\r\n private values = {};\r\n\r\n constructor(\r\n public logger: NGXLogger,\r\n protected singleDataService: SingleDataService) { \r\n console.log(\"SingleDataCacheService.constructor\");\r\n }\r\n\r\n getValues(metadata: string): string[] {\r\n if (this.values[metadata]) {\r\n return this.values[metadata];\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n\r\n private pushValues(data: SingleDataModel[]) {\r\n for (var i in data) {\r\n let metadata = (data[i].type == \"GasDuct\" || data[i].type == \"OilDuct\")? \"Duct\": data[i].type;\r\n if (metadata) {\r\n let value: {\r\n name: string,\r\n opsNumber?: BigInteger\r\n };\r\n if(data[i].type == \"OpticalProcessingSystem\"){\r\n value = { name: data[i].name, opsNumber: data[i].opsNumber };\r\n this.values[metadata].push(value);\r\n } else {\r\n value = { name: data[i].name };\r\n this.values[metadata].push(value.name);\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n private appendMetadata(params: HttpParams, metadata: string): HttpParams {\r\n if (metadata == \"Duct\") {\r\n params = params.append(\"metadata\", \"GasDuct\");\r\n params = params.append(\"metadata\", \"OilDuct\");\r\n }\r\n else {\r\n params = params.append(\"metadata\", metadata);\r\n }\r\n\r\n this.values[metadata] = [];\r\n\r\n return params;\r\n }\r\n\r\n private sortDucts(){\r\n this.values[\"Duct\"].sort(function(a, b){\r\n if (!a && !b) return 0\r\n if (!a) return 1;\r\n if (!b) return -1;\r\n let x = a.toLowerCase();\r\n let y = b.toLowerCase();\r\n if (x < y) {return -1;}\r\n if (x > y) {return 1;}\r\n return 0;\r\n });\r\n }\r\n\r\n private sortOPS(){\r\n this.values[\"OpticalProcessingSystem\"].sort((a, b) => {\r\n return a.opsNumber - b.opsNumber;\r\n });\r\n }\r\n\r\n private updateValues(data: SingleDataModel[]){\r\n const hasDuct: boolean = (this.values[\"Duct\"] && this.values[\"Duct\"].length == 0)? true: false;\r\n const hasOPS: boolean = (this.values[\"OpticalProcessingSystem\"] && this.values[\"OpticalProcessingSystem\"].length == 0)? true: false;\r\n\r\n this.pushValues(data);\r\n\r\n if (hasDuct) {\r\n this.sortDucts();\r\n }\r\n if (hasOPS) {\r\n this.sortOPS();\r\n }\r\n }\r\n\r\n loadMulipleValues(metadatas: string[], loadingListService: LoadingListService, onLoadCallback?: Function) {\r\n let params: HttpParams = new HttpParams();\r\n \r\n //Definido aqui para ser possível mudar a ordenação de acordo com o tipo\r\n let sortOptions = SORT_NAME_ASC;\r\n let hasMeta = false;\r\n\r\n for (var i in metadatas) {\r\n if (!this.values[metadatas[i]]) {\r\n if(metadatas[i]) sortOptions = SORT_OPS_ASC;\r\n\r\n params = this.appendMetadata(params, metadatas[i]);\r\n hasMeta = true;\r\n }\r\n }\r\n\r\n if (!hasMeta) {\r\n if (onLoadCallback) onLoadCallback();\r\n return;\r\n }\r\n \r\n loadingListService.loadingOn();\r\n this.singleDataService.loadMultipleListFromRestApi(params, sortOptions).pipe(first()).subscribe((data: SingleDataModel[]) => {\r\n this.updateValues(data);\r\n if (onLoadCallback) onLoadCallback();\r\n loadingListService.loadingOff();\r\n },\r\n (error) => {\r\n this.logger.error(`Erro ao carregar elementos: ${error}`);\r\n loadingListService.loadingOff();\r\n });\r\n }\r\n\r\n reloadValues(metadata: string) {\r\n let params: HttpParams = new HttpParams();\r\n params = this.appendMetadata(params, metadata);\r\n \r\n this.singleDataService.loadListFromRestApi(null, null, SORT_NAME_ASC, params).pipe(first()).subscribe((data: SingleDataModel[]) => {\r\n this.pushValues(data);\r\n });\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {NGXLogger} from 'ngx-logger';\r\nimport {HttpClient, HttpErrorResponse, HttpParams} from '@angular/common/http';\r\nimport {EntityService} from './entity.service';\r\nimport {environment} from '../../../environments/environment';\r\n\r\nimport {EntityModel} from '../../model/entity.model';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { FilterModel } from '../../general/filter-component/filter.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VehicleService extends EntityService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.registrations_address}/vehicles`);\r\n }\r\n\r\n protected filteredLoadFromRestApi(pageIndex?: number, pageSize?: number, sort?: string, filter?: FilterModel): Observable {\r\n\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (filter){\r\n if (filter.placements){\r\n filter.placements.forEach( placement => {\r\n params = params.append('placements', placement);\r\n });\r\n }\r\n }\r\n\r\n return super.loadFromRestApi(pageIndex, pageSize, sort, params);\r\n }\r\n\r\n protected handleError(error: HttpErrorResponse | any) { \r\n return throwError(error);\r\n }\r\n}\r\n","import { EntityModel } from './entity.model';\r\n\r\nexport class SimpleModel extends EntityModel{\r\n name: string;\r\n}\r\n","import { Component, OnInit, Inject, OnDestroy } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { PointFilterModel } from './point.filter.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { LoadingListService } from \"src/app/service/loading/loading-list.service\";\r\n\r\n@Component({\r\n selector: 'app-point-filter-dialog',\r\n templateUrl: './point-filter-dialog.component.html',\r\n styleUrls: ['./point-filter-dialog.component.scss']\r\n})\r\nexport class PointFilterDialogComponent implements OnInit, OnDestroy {\r\n\r\n bandSubscription: Subscription;\r\n pipeStretchSubscription: Subscription;\r\n \r\n loadingListService = new LoadingListService();\r\n\r\n constructor( protected logger: NGXLogger,\r\n public singleDataCacheService: SingleDataCacheService,\r\n public dialogRef: MatDialogRef,\r\n public filterModel: PointFilterModel,\r\n @Inject(MAT_DIALOG_DATA) public inMemoryFilterModel: PointFilterModel) {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n this.loadFormOptionsData();\r\n\r\n this.filterModel = new PointFilterModel();\r\n this.updateFilterModel(this.inMemoryFilterModel, this.filterModel);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.logger.debug('VerificationEditComponent.ngOnDestroy()');\r\n\r\n if(this.bandSubscription) this.bandSubscription.unsubscribe();\r\n if(this.pipeStretchSubscription) this.pipeStretchSubscription.unsubscribe();\r\n this.loadingListService.destroy();\r\n }\r\n\r\n getShowSpinner() {\r\n return this.loadingListService.getShowSpinner();\r\n }\r\n\r\n loadFormOptionsData() {\r\n this.logger.debug('EventEditComponent.loadFormOptionsData()');\r\n\r\n const metadatas: string[] = [\r\n \"Band\",\r\n \"PipeStretch\"];\r\n\r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n\r\n onFilter(){\r\n this.updateFilterModel(this.filterModel, this.inMemoryFilterModel);\r\n this.dialogRef.close(true);\r\n }\r\n\r\n /**\r\n * Atualiza o filtro em memória\r\n */\r\n updateFilterModel(sourceFilter: PointFilterModel, targetFilter: PointFilterModel){\r\n for(const key in sourceFilter){\r\n targetFilter[key] = sourceFilter[key];\r\n }\r\n }\r\n\r\n clearFilter(){\r\n this.filterModel.band = undefined;\r\n this.filterModel.stretch = undefined;\r\n this.filterModel.startKm = undefined;\r\n this.filterModel.endKm = undefined;\r\n }\r\n}\r\n","
    \r\n Filtrar Pontos\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n KM Inicial\r\n \r\n \r\n\r\n \r\n KM Final\r\n \r\n \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n\r\n \r\n \r\n \r\n\r\n","import { PermisionRuleOption } from \"./enums.enum\";\r\n\r\n\r\nexport class PermissionOptions {\r\n option : PermisionRuleOption; // opção radio button\r\n fields: string[] = []; // detalhes dos campos\r\n }\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-patrol-repetition-edit-dialog',\r\n templateUrl: './patrol-repetition-edit-dialog.component.html',\r\n styleUrls: ['./patrol-repetition-edit-dialog.component.scss']\r\n})\r\nexport class PatrolRepetitionEditDialogComponent {\r\n\r\n editionOptions: any = 'justThisPatrol';\r\n justThisPatrolRadioButton = 'justThisPatrol';\r\n fromThisPatrolRadioButton = 'fromThisPatrol';\r\n \r\n constructor(public dialogRef: MatDialogRef,\r\n protected confirmDialog: MatDialog, \r\n @Inject (MAT_DIALOG_DATA) public predicted: boolean) {\r\n }\r\n\r\n returnOption(){\r\n if(this.editionOptions === 'justThisPatrol') {\r\n this.dialogRef.close('justThisPatrol');\r\n }\r\n else if(this.editionOptions === 'fromThisPatrol') {\r\n this.dialogRef.close('fromThisPatrol');\r\n }\r\n else {\r\n this.dialogRef.close(false);\r\n }\r\n }\r\n\r\n cancel(){\r\n this.dialogRef.close(false);\r\n }\r\n}\r\n","
    \r\n Salvar Ronda {{predicted? 'Prevista': 'com Repetição'}}\r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n Alterar somente esta ronda.\r\n
    \r\n Alterar esta ronda e todas as previstas a seguir.\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n \r\n \r\n\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { Observable } from 'rxjs';\r\nimport { FILTER_OPTION_ALL } from 'src/app/common/constants';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { ObservedAreaFilterModel } from 'src/app/pages/registrations/observed-area/observed-area-filter/observed-area.filter.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EntityService } from './entity.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ObservedAreaService extends EntityService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.registrations_address}/observed-areas`);\r\n }\r\n\r\n\r\n protected filteredLoadFromRestApi(pageIndex?: number, pageSize?: number, sort?: string, filter?: ObservedAreaFilterModel): Observable {\r\n\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (filter){\r\n if (filter.startDate){\r\n const startDateTime = moment(filter.startDate).format('x');\r\n params = params.set('start', startDateTime);\r\n }\r\n\r\n if (filter.endDate){\r\n const endDateTime = moment(filter.endDate).format('x');\r\n params = params.set('end', endDateTime);\r\n }\r\n\r\n if (filter.areaStatus != FILTER_OPTION_ALL){\r\n params = params.append('status', filter.areaStatus);\r\n }\r\n\r\n if (filter.responsibles && filter.responsibles.length > 0){\r\n filter.responsibles.forEach( responsibleId => {\r\n params = params.append('responsibles', responsibleId);\r\n });\r\n }\r\n\r\n if (filter.types && filter.types.length > 0){\r\n filter.types.forEach( type => {\r\n params = params.append('types', type);\r\n });\r\n }\r\n\r\n if (filter.bands && filter.bands.length > 0){\r\n filter.bands.forEach( band => {\r\n params = params.append('bands', band);\r\n });\r\n }\r\n\r\n if (filter.cities && filter.cities.length > 0){\r\n filter.cities.forEach( city => {\r\n params = params.append('cities', city);\r\n });\r\n }\r\n\r\n if (filter.states && filter.states.length > 0){\r\n filter.states.forEach( state => {\r\n params = params.append('states', state);\r\n });\r\n }\r\n }\r\n\r\n return super.loadFromRestApi(pageIndex, pageSize, sort, params);\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatOptionSelectionChange } from '@angular/material/core';\r\nimport { Autocomplete } from '../autocomplete/autocomplete.component';\r\n\r\n/**\r\n * @title Multi-select autocomplete\r\n */\r\n@Component({\r\n selector: 'multiselect-autocomplete',\r\n templateUrl: 'multiselect-autocomplete.component.html',\r\n styleUrls: ['multiselect-autocomplete.component.css']\r\n})\r\nexport class MultiselectAutocomplete extends Autocomplete implements OnInit {\r\n\r\n // valueData é dado que vai ser atualizado no model (aqui podem ser vários objetos)\r\n _valueData: Object[];\r\n @Input()\r\n set valueData(data: Object[]) {\r\n if (!Array.isArray(data)) {\r\n data = []\r\n }\r\n this._valueData = data;\r\n if (data) {\r\n this.selectedData = this.getDataControlObjectValue(this._valueData, this._optionValue);\r\n this.dataControl.setValue(this.selectedData);\r\n }\r\n }\r\n\r\n get valueData() {\r\n return this._valueData;\r\n }\r\n\r\n selectedData: Object[] = new Array();\r\n\r\n ngOnInit() {\r\n }\r\n\r\n displayFn = (value: Object | string): string | undefined => {\r\n let displayValue: string;\r\n if (value == null) {\r\n return '';\r\n }\r\n this.selectedData.forEach((data, index) => {\r\n if (index === 0) {\r\n displayValue = this.getData(data);\r\n } else {\r\n displayValue += ', ' + this.getData(data);\r\n }\r\n });\r\n return displayValue;\r\n }\r\n\r\n optionClicked(event: MatOptionSelectionChange, data: Object) {\r\n if (event.isUserInput) {\r\n this.toggleSelection(data);\r\n }\r\n } \r\n\r\n toggleSelection(data: Object) {\r\n const dataValue = this._name ? data[this._name] : data;\r\n const index = this.selectedData.findIndex(item => {\r\n const itemValue = this._name ? item[this._name] : item;\r\n return itemValue === dataValue;\r\n });\r\n if (index >= 0) {\r\n this.selectedData.splice(index, 1);\r\n }\r\n else {\r\n this.selectedData.push(data);\r\n }\r\n this.valueDataChange.emit(this.getDataControlPropertyValue(this.selectedData, this._optionValue));\r\n }\r\n\r\n focusInFunction() {\r\n this.dataControl.setValue(null);\r\n }\r\n\r\n onOpenedEvent(event) {\r\n }\r\n\r\n onClosedEvent(event) {\r\n this.valueDataChange.emit(this.getDataControlPropertyValue(this.selectedData, this._optionValue));\r\n this.dataControl.setValue(this.selectedData);\r\n this.selectionChangedEvent.emit(this.selectedData);\r\n }\r\n\r\n getDataControlObjectValue(value: any[], option: string) {\r\n let retValue = [];\r\n if (option) {\r\n value.forEach(val => {\r\n this._data.forEach(item => {\r\n if(item[option] === val) {\r\n retValue.push(item);\r\n }\r\n })\r\n })\r\n } \r\n else {\r\n retValue = value;\r\n }\r\n return retValue;\r\n }\r\n\r\n getDataControlPropertyValue(value: any[], option: string) {\r\n let retValue= [];\r\n if (option) {\r\n value.forEach(val => {\r\n this._data.forEach(item => {\r\n if(item[option] === val[option]) {\r\n retValue.push(item[option]);\r\n }\r\n })\r\n })\r\n }\r\n else {\r\n retValue = value;\r\n }\r\n return retValue;\r\n }\r\n\r\n isSelected(data) {\r\n const dataValue = this._name ? data[this._name] : data;\r\n const index = this.selectedData.findIndex(item => {\r\n const itemValue = this._name ? item[this._name] : item;\r\n return itemValue === dataValue;\r\n });\r\n return index >= 0 ? true : false;\r\n }\r\n \r\n unSelectAll(){\r\n this.selectedData = [];\r\n }\r\n}\r\n","\r\n\t{{label ? label : placeholder}}\r\n\t\r\n\tCampo Obrigatório\r\n\tkeyboard_arrow_down\r\n\t\r\n\t\r\n\t\t\r\n\t\t\t{{ getData(data) }}\r\n\t\t\r\n\t\r\n\t\r\n\r\n\r\n","import { AlertPriorityDescription, AlertTypeDescription, ChannelTypeDescription, EventFieldsDescription, EventSituationDescription, EventStatusDescription, \r\n EventValidationDescription, EvidenceRequirementDescription, InspectionBooleanDescription, InspectionStatusTypeDescription, MarkerTypeDescription, \r\n NodeTypeDescription, ObservedAreaStatusDescription, ObservedAreaTypeDescription, OperationStatusDescription, OperationTypeDescription, \r\n PointStatusDescription, ResultOccurrenceDescription, ServiceTypeDescription, ShiftDescription, SimfAlertTypeDescription, SourceTypeDescription, \r\n UserFieldsDescription, UserTypeDescription, VerificationBandReleaseDescription } from 'src/app/model/enums.enum';\r\n\r\nexport default class LanguageUtils{\r\n\r\n static languageMap: {};\r\n\r\n static addEnum(e) {\r\n for (const k in e) {\r\n LanguageUtils.languageMap[k] = e[k];\r\n }\r\n }\r\n\r\n static init(){\r\n LanguageUtils.languageMap = {};\r\n \r\n LanguageUtils.addEnum(UserFieldsDescription);\r\n LanguageUtils.addEnum(EventFieldsDescription);\r\n LanguageUtils.addEnum(ChannelTypeDescription);\r\n LanguageUtils.addEnum(ObservedAreaStatusDescription);\r\n LanguageUtils.addEnum(NodeTypeDescription);\r\n LanguageUtils.addEnum(EvidenceRequirementDescription);\r\n LanguageUtils.addEnum(InspectionStatusTypeDescription);\r\n LanguageUtils.addEnum(MarkerTypeDescription);\r\n LanguageUtils.addEnum(OperationTypeDescription);\r\n LanguageUtils.addEnum(EventStatusDescription);\r\n LanguageUtils.addEnum(PointStatusDescription);\r\n LanguageUtils.addEnum(OperationStatusDescription);\r\n LanguageUtils.addEnum(UserTypeDescription);\r\n LanguageUtils.addEnum(AlertTypeDescription);\r\n LanguageUtils.addEnum(SimfAlertTypeDescription);\r\n LanguageUtils.addEnum(AlertPriorityDescription);\r\n LanguageUtils.addEnum(EventSituationDescription);\r\n LanguageUtils.addEnum(ResultOccurrenceDescription);\r\n LanguageUtils.addEnum(SourceTypeDescription);\r\n LanguageUtils.addEnum(EventValidationDescription);\r\n LanguageUtils.addEnum(ShiftDescription);\r\n LanguageUtils.addEnum(ServiceTypeDescription);\r\n LanguageUtils.addEnum(VerificationBandReleaseDescription);\r\n LanguageUtils.addEnum(InspectionBooleanDescription);\r\n LanguageUtils.addEnum(ObservedAreaTypeDescription);\r\n\r\n LanguageUtils.languageMap['name'] = 'Nome';\r\n LanguageUtils.languageMap['states'] = 'UF(s)';\r\n LanguageUtils.languageMap['year'] = 'Ano';\r\n }\r\n}\r\n","import {EntityModel} from './entity.model';\r\nimport {CompanyModel} from './company.model';\r\nimport LanguageUtils from '../service/util/language-utils';\r\n\r\nexport class VehicleModel extends EntityModel {\r\n plate: string;\r\n model: string;\r\n company: CompanyModel;\r\n observations: string;\r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['plate'] = 'Placa';\r\n LanguageUtils.languageMap['model'] = 'Carro';\r\n LanguageUtils.languageMap['company'] = 'Empresa';\r\n LanguageUtils.languageMap['observations'] = 'Observações';\r\n }\r\n}\r\n","import { ProfileService } from './../../../../service/model/profile.service';\r\nimport { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { PermissionOptions } from 'src/app/model/field.model';\r\nimport { ProfileModel } from 'src/app/model/profile.model';\r\nimport { EditComponent } from 'src/app/pages/edit-component';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AlertTypeDescription, EventFieldsDescription, Permission, UserFieldsDescription, UserTypeDescription, AlertType, ChannelTypeDescription, UserType } from '../../../../model/enums.enum';\r\nimport { PermisionRuleOption } from '../../../../model/enums.enum';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\n\r\n@Component({\r\n selector: 'app-profile-edit',\r\n templateUrl: './profile-edit.component.html',\r\n styleUrls: ['../../../../app.component.scss', './profile-edit.component.scss']\r\n})\r\nexport class ProfileEditComponent extends EditComponent implements OnInit {\r\n\r\n permissionsMap: Map = new Map();\r\n\r\n /**Enums */\r\n permission = Permission;\r\n eventFieldsDescription = EventFieldsDescription;\r\n userFieldsDescription = UserFieldsDescription;\r\n permisionRuleOption = PermisionRuleOption;\r\n userTypeDescription = UserTypeDescription;\r\n channelTypeDescription = ChannelTypeDescription;\r\n\r\n alertTypeMap: Map;\r\n categoryMap: Map;\r\n profileMap: Map;\r\n\r\n disableProfileList : boolean = true;\r\n disableAlertList : boolean = true;\r\n\r\n alertPermissionOptions: PermissionOptions = new PermissionOptions();\r\n profilePermisionOptions : PermissionOptions = new PermissionOptions();\r\n eventPermissionOptions : PermissionOptions = new PermissionOptions();\r\n userFields : PermissionOptions = new PermissionOptions();\r\n verificationPermisionOptions : PermissionOptions = new PermissionOptions();\r\n patrolPermisionOptions : PermissionOptions = new PermissionOptions();\r\n channelPermisionOptions : PermissionOptions = new PermissionOptions();\r\n sourcePermissionOptions : PermissionOptions = new PermissionOptions();\r\n\r\n constructor(logger: NGXLogger,\r\n public profileService: ProfileService,\r\n dialog: MatDialog,\r\n protected storageService: StorageService,\r\n public entityCacheService: EntityCacheService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n toastr: ToastrService,\r\n authorizationService: AuthorizationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container\r\n ) {\r\n super(logger, profileService, dialog, environment.PROFILES_MODEL_LABEL, environment.PROFILES_TITLE_LABEL, storageService,\r\n 'profiles-edit', environment.PROFILES_GROUP_LABEL, toastr, authorizationService, goldenLayout, container);\r\n this.logger.debug('ProfileEditComponent.constructor()');\r\n\r\n this.alertPermissionOptions.option = this.permisionRuleOption.SOME_FIELDS;\r\n this.verificationPermisionOptions.option = this.permisionRuleOption.ONLY_NOT_STARTED;\r\n this.patrolPermisionOptions.option = this.permisionRuleOption.ONLY_NOT_STARTED;\r\n this.profilePermisionOptions.option =this.permisionRuleOption.SOME_PROFILE;\r\n }\r\n\r\n ngOnInit() {\r\n this.logger.debug('ProfileEditComponent.ngOnInit()');\r\n super.ngOnInit();\r\n\r\n this.initializeFields();\r\n \r\n this.alertTypeMap = this.enumToMap( AlertTypeDescription );\r\n this.alertTypeMap.set(AlertType.SIMF,AlertType.SIMF); \r\n \r\n this.categoryMap = this.enumToMap( UserTypeDescription );\r\n this.categoryMap.delete(UserType.ADMINISTRATOR); // não pode ser criado perfis da categoria administrador\r\n\r\n this.profileMap = new Map();\r\n this.entityCacheService.getProfiles().forEach(profile =>{\r\n this.profileMap.set(profile.id, profile.name);\r\n });\r\n }\r\n\r\n createData(options?) {\r\n this.logger.debug('ProfileEditComponent.createData()');\r\n\r\n this.model = new ProfileModel();\r\n this.view = {};\r\n }\r\n\r\n mapModelToView() {\r\n super.mapModelToView();\r\n \r\n if (this.view['name']) {\r\n this.glUpdateTabTitle(this.modelName + ': \"' + this.view['name'] + '\"');\r\n }\r\n\r\n // Cria uma cópia para poder manipular \r\n let profile = this.model as ProfileModel;\r\n this.permissionsMap = new Map(Object.entries(profile.permissions));\r\n\r\n Object.entries(profile.permissions).forEach(([key, value]) => {\r\n const permissionOption : PermissionOptions = value as PermissionOptions;\r\n\r\n switch(key){\r\n case this.permission.LIST_ALERTS:\r\n this.alertPermissionOptions.fields=permissionOption.fields;\r\n this.alertPermissionOptions.option=permissionOption.option;\r\n this.disableAlertList = this.alertPermissionOptions.option == this.permisionRuleOption.ALL_FIELD ? true : false;\r\n break;\r\n case this.permission.CHANGE_ANY_EVENT_FIELD:\r\n this.eventPermissionOptions.fields=permissionOption.fields;\r\n this.eventPermissionOptions.option=permissionOption.option;\r\n break;\r\n case this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE:\r\n this.sourcePermissionOptions.fields=permissionOption.fields;\r\n this.sourcePermissionOptions.option=permissionOption.option;\r\n break;\r\n case this.permission.CREATE_EDIT_USER:\r\n this.profilePermisionOptions.fields=permissionOption.fields;\r\n this.profilePermisionOptions.option=permissionOption.option;\r\n this.disableProfileList = this.profilePermisionOptions.option == this.permisionRuleOption.ALL_PROFILE ? true : false;\r\n break;\r\n case this.permission.DELETE_USER:\r\n this.profilePermisionOptions.fields=permissionOption.fields;\r\n this.profilePermisionOptions.option=permissionOption.option;\r\n break; \r\n case this.permission.DELETE_PATROL:\r\n this.patrolPermisionOptions.fields=permissionOption.fields;\r\n this.patrolPermisionOptions.option=permissionOption.option;\r\n break; \r\n case this.permission.DELETE_VERIFICATIONS:\r\n this.verificationPermisionOptions.fields=permissionOption.fields;\r\n this.verificationPermisionOptions.option=permissionOption.option;\r\n break;\r\n case this.permission.LIST_CHANELS:\r\n this.channelPermisionOptions.fields = permissionOption.fields;\r\n this.channelPermisionOptions.option = permissionOption.option;\r\n break;\r\n }\r\n });\r\n }\r\n\r\n canEdit() {\r\n if (!this.model) return false;\r\n\r\n return this.authorizationService.isProfileCreateEditAllowedForUser();\r\n }\r\n\r\n loadFormOptionsData(){\r\n this.logger.debug('ProfileEditComponent.loadFormOptionsData()');\r\n this.entityCacheService.loadProfiles(this.loadingListService);\r\n\r\n const metadatas: string[] = [\r\n \"ReportSource\"];\r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n this.model['name'] = null;\r\n }\r\n\r\n /*** METODOS DO HTML */\r\n\r\n selectAlertFields(){\r\n this.permissionsMap.set('LIST_ALERTS', this.alertPermissionOptions);\r\n this.view['permissions']['LIST_ALERTS'] = this.alertPermissionOptions;\r\n }\r\n\r\n updateAlertFields(){\r\n if(this.alertPermissionOptions.option == this.permisionRuleOption.ALL_FIELD) {\r\n this.disableAlertList = true;\r\n this.alertPermissionOptions.fields = Object.keys(AlertTypeDescription);\r\n this.alertPermissionOptions.fields.push(AlertType.SIMF);\r\n }\r\n else {\r\n this.disableAlertList = false;\r\n this.alertPermissionOptions.fields = [];\r\n }\r\n }\r\n\r\n alertRadioChange(){\r\n this.updateAlertFields();\r\n this.permissionsMap.set(this.permission.LIST_ALERTS, this.alertPermissionOptions);\r\n this.view['permissions']['LIST_ALERTS'] = this.alertPermissionOptions;\r\n }\r\n\r\n selectEventsFields(){\r\n this.permissionsMap.set('CHANGE_ANY_EVENT_FIELD', this.eventPermissionOptions);\r\n this.view['permissions']['CHANGE_ANY_EVENT_FIELD'] = this.eventPermissionOptions;\r\n }\r\n\r\n selectChannelFields(){\r\n this.permissionsMap.set('LIST_CHANELS', this.channelPermisionOptions);\r\n this.view['permissions']['LIST_CHANELS'] = this.channelPermisionOptions;\r\n }\r\n\r\n selectProfileFields(){\r\n if(this.permissionsMap.get(this.permission.DELETE_USER)) {\r\n this.permissionsMap.set('DELETE_USER', this.profilePermisionOptions);\r\n this.view['permissions']['DELETE_USER'] = this.profilePermisionOptions;\r\n }\r\n if(this.permissionsMap.get(this.permission.CREATE_EDIT_USER)) {\r\n this.permissionsMap.set('CREATE_EDIT_USER', this.profilePermisionOptions);\r\n this.view['permissions']['CREATE_EDIT_USER'] = this.profilePermisionOptions;\r\n }\r\n }\r\n\r\n profilesRadioChange(){\r\n if(this.profilePermisionOptions.option == this.permisionRuleOption.ALL_PROFILE){\r\n this.disableProfileList = true;\r\n this.profilePermisionOptions.fields = this.entityCacheService.getProfiles().map((obj) => obj.id);\r\n }\r\n else{\r\n this.disableProfileList = false;\r\n this.profilePermisionOptions.fields = [];\r\n }\r\n this.setDualPermission(this.permission.CREATE_EDIT_USER,this.permission.DELETE_USER, this.profilePermisionOptions);\r\n }\r\n\r\n selectSourceFields(){\r\n this.permissionsMap.set(this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE, this.sourcePermissionOptions);\r\n this.view['permissions']['CHANGE_EVENTS_FROM_ANY_SOURCE'] = this.sourcePermissionOptions;\r\n }\r\n\r\n verificationRadioChange(){ \r\n this.permissionsMap.set(this.permission.DELETE_VERIFICATIONS,this.verificationPermisionOptions); \r\n this.view['permissions']['DELETE_VERIFICATIONS'] = this.verificationPermisionOptions;\r\n }\r\n\r\n patrolRadioChange(){\r\n this.permissionsMap.set(this.permission.DELETE_PATROL, this.patrolPermisionOptions)\r\n this.view['permissions']['DELETE_PATROL'] = this.patrolPermisionOptions;\r\n }\r\n\r\n // Função que trata as mudanças nos toggles principais\r\n changeMap($event : any, permision: string){\r\n let permissionOptions : PermissionOptions = new PermissionOptions();\r\n\r\n if($event.checked) // add a permission\r\n {\r\n this.permissionsMap.set(permision, permissionOptions);\r\n switch(permision){ \r\n case (this.permission.DELETE_VERIFICATIONS):\r\n this.verificationRadioChange();\r\n break; \r\n case (this.permission.DELETE_PATROL):\r\n this.patrolRadioChange();\r\n break;\r\n case (this.permission.CREATE_EDIT_USER):\r\n this.profilesRadioChange();\r\n break;\r\n case (this.permission.DELETE_USER):\r\n this.profilesRadioChange();\r\n break;\r\n case (this.permission.LIST_ALERTS):\r\n this.alertRadioChange();\r\n break;\r\n case (this.permission.ACCES_WEB):\r\n this.permissionsMap.set(this.permission.LIST_CHANELS, permissionOptions); \r\n break;\r\n case (this.permission.CREATE_EDIT_EVENT):\r\n this.eventPermissionOptions.fields = [];\r\n this.eventPermissionOptions.option = this.permisionRuleOption.ALL_FIELD;\r\n this.sourcePermissionOptions.fields = [];\r\n this.sourcePermissionOptions.option = this.permisionRuleOption.ALL_SOURCE;\r\n this.permissionsMap.set(this.permission.CHANGE_ANY_EVENT_FIELD,this.eventPermissionOptions ); \r\n this.permissionsMap.set(this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE, this.sourcePermissionOptions);\r\n break;\r\n case (this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE):\r\n this.sourcePermissionOptions.fields = [];\r\n this.sourcePermissionOptions.option = this.permisionRuleOption.ALL_SOURCE;\r\n this.permissionsMap.set(this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE, this.sourcePermissionOptions); \r\n break;\r\n case (this.permission.CHANGE_ANY_EVENT_FIELD):\r\n this.eventPermissionOptions.fields = [];\r\n this.eventPermissionOptions.option = this.permisionRuleOption.ALL_FIELD;\r\n this.permissionsMap.set(this.permission.CHANGE_ANY_EVENT_FIELD,this.eventPermissionOptions ); \r\n break; \r\n }\r\n }else { // delete a permission\r\n\r\n this.permissionsMap.delete(permision);\r\n\r\n switch(permision){\r\n case this.permission.ACCES_WEB:\r\n this.removeAllOptions(this.permissionsMap,this.permission.ACCES_APP)\r\n break;\r\n case this.permission.LIST_ALERTS:\r\n this.permissionsMap.delete(this.permission.EDIT_ALERT);\r\n this.alertPermissionOptions.fields=[];\r\n this.alertPermissionOptions.option = PermisionRuleOption.SOME_FIELDS;\r\n this.disableAlertList = true;\r\n break;\r\n case this.permission.LIST_EVENTS:\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_EVENT);\r\n this.permissionsMap.delete(this.permission.DELETE_EVENT);\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_EVENT_NOTES);\r\n this.permissionsMap.delete(this.permission.DELETE_EVENT_NOTES);\r\n this.permissionsMap.delete(this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE);\r\n this.permissionsMap.delete(this.permission.CHANGE_ANY_EVENT_FIELD);\r\n this.eventPermissionOptions.fields=[];\r\n break;\r\n case this.permission.CREATE_EDIT_EVENT:\r\n this.permissionsMap.delete(this.permission.DELETE_EVENT);\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_EVENT_NOTES);\r\n this.permissionsMap.delete(this.permission.DELETE_EVENT_NOTES);\r\n this.permissionsMap.delete(this.permission.EDIT_END_EVENT);\r\n this.permissionsMap.delete(this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE);\r\n this.permissionsMap.delete(this.permission.CHANGE_ANY_EVENT_FIELD);\r\n this.eventPermissionOptions.fields=[];\r\n break;\r\n case (this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE): \r\n this.sourcePermissionOptions.fields = [];\r\n this.sourcePermissionOptions.option = this.permisionRuleOption.SOME_SOURCE;\r\n if(this.permissionsMap.has(this.permission.CREATE_EDIT_EVENT)){ \r\n this.permissionsMap.set(this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE,this.sourcePermissionOptions)\r\n } else {\r\n this.permissionsMap.delete(this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE);\r\n }\r\n break;\r\n case (this.permission.CHANGE_ANY_EVENT_FIELD): \r\n this.eventPermissionOptions.option = this.permisionRuleOption.SOME_FIELDS;\r\n this.eventPermissionOptions.fields = [];\r\n if(this.permissionsMap.has(this.permission.CREATE_EDIT_EVENT)){\r\n this.permissionsMap.set(this.permission.CHANGE_ANY_EVENT_FIELD,this.eventPermissionOptions)\r\n } else {\r\n this.permissionsMap.delete(this.permission.CHANGE_ANY_EVENT_FIELD); \r\n }\r\n break;\r\n case this.permission.CREATE_EDIT_EVENT_NOTES:\r\n this.permissionsMap.delete(this.permission.DELETE_EVENT_NOTES);\r\n break;\r\n case this.permission.LIST_VERIFICATIONS:\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_VERIFICATIONS);\r\n this.permissionsMap.delete(this.permission.DELETE_VERIFICATIONS);\r\n this.verificationPermisionOptions.option=this.permisionRuleOption.ONLY_NOT_STARTED\r\n break;\r\n case this.permission.CREATE_EDIT_VERIFICATIONS:\r\n this.permissionsMap.delete(this.permission.DELETE_VERIFICATIONS);\r\n this.verificationPermisionOptions.option=this.permisionRuleOption.ONLY_NOT_STARTED\r\n break;\r\n case this.permission.LIST_PATROLS:\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_PATROL);\r\n this.permissionsMap.delete(this.permission.DELETE_PATROL);\r\n this.patrolPermisionOptions.option = this.permisionRuleOption.ONLY_NOT_STARTED;\r\n break;\r\n case this.permission.CREATE_EDIT_PATROL:\r\n this.permissionsMap.delete(this.permission.DELETE_PATROL);\r\n this.patrolPermisionOptions.option = this.permisionRuleOption.ONLY_NOT_STARTED;\r\n break;\r\n case this.permission.LIST_USERS_ADMINISTRATION:\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_USER);\r\n this.permissionsMap.delete(this.permission.DELETE_USER); \r\n this.profilePermisionOptions.fields=[];\r\n this.profilePermisionOptions.option = this.permisionRuleOption.SOME_PROFILE;\r\n this.userFields.fields = [];\r\n break;\r\n case this.permission.CREATE_EDIT_USER:\r\n this.permissionsMap.delete(this.permission.DELETE_USER) \r\n this.profilePermisionOptions.fields = [];\r\n this.disableProfileList = true;\r\n this.profilePermisionOptions.option = this.permisionRuleOption.SOME_PROFILE;\r\n this.userFields.fields = [];\r\n break;\r\n case this.permission.LIST_PATROL_TEAM_ADMINISTRATION:\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_PATROL_TEAM);\r\n this.permissionsMap.delete(this.permission.DELETE_PATROL_TEAM);\r\n break;\r\n case this.permission.CREATE_EDIT_PATROL_TEAM:\r\n this.permissionsMap.delete(this.permission.DELETE_PATROL_TEAM);\r\n break;\r\n case this.permission.LIST_PLACEMENT_ADMINISTRATION:\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_PLACEMENT);\r\n this.permissionsMap.delete(this.permission.DELETE_PLACEMENT);\r\n break;\r\n case this.permission.CREATE_EDIT_PLACEMENT:\r\n this.permissionsMap.delete(this.permission.DELETE_PLACEMENT);\r\n break;\r\n case this.permission.LIST_COMPANY_ADMINISTRATION:\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_COMPANY);\r\n this.permissionsMap.delete(this.permission.DELETE_COMPANY);\r\n break;\r\n case this.permission.CREATE_EDIT_COMPANY:\r\n this.permissionsMap.delete(this.permission.DELETE_COMPANY);\r\n break;\r\n case this.permission.LIST_VEHICLE_ADMINISTRATION:\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_VEHICLE);\r\n this.permissionsMap.delete(this.permission.DELETE_VEHICLE);\r\n break;\r\n case this.permission.CREATE_EDIT_VEHICLE:\r\n this.permissionsMap.delete(this.permission.DELETE_VEHICLE);\r\n break; \r\n case this.permission.LIST_MAIN_EVENT_ADMINISTRATION:\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_MAIN_EVENT);\r\n this.permissionsMap.delete(this.permission.DELETE_MAIN_EVENT);\r\n break;\r\n case this.permission.CREATE_EDIT_MAIN_EVENT:\r\n this.permissionsMap.delete(this.permission.DELETE_MAIN_EVENT);\r\n break;\r\n case this.permission.LIST_OBSERVED_AREA_ADMINISTRATION:\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_OBSERVED_AREA);\r\n this.permissionsMap.delete(this.permission.DELETE_OBSERVED_AREA);\r\n break;\r\n case this.permission.CREATE_EDIT_OBSERVED_AREA:\r\n this.permissionsMap.delete(this.permission.DELETE_OBSERVED_AREA); \r\n break;\r\n case this.permission.LIST_FORMS_ADMINISTRATION:\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_FORM);\r\n this.permissionsMap.delete(this.permission.DELETE_FORM);\r\n break;\r\n case this.permission.CREATE_EDIT_FORM:\r\n this.permissionsMap.delete(this.permission.DELETE_FORM); \r\n break;\r\n case this.permission.LIST_POINTS_ADMINISTRATION:\r\n this.permissionsMap.delete(this.permission.CREATE_EDIT_POINT);\r\n this.permissionsMap.delete(this.permission.DELETE_POINT);\r\n break;\r\n case this.permission.CREATE_EDIT_POINT: \r\n this.permissionsMap.delete(this.permission.DELETE_POINT);\r\n break;\r\n case this.permission.LIST_CHANELS:\r\n this.channelPermisionOptions.fields = [];\r\n break;\r\n case this.permission.LIST_REGISTRATION_GROUP:\r\n this.permissionsMap.delete(this.permission.EDIT_REGISTRATION_GROUP);\r\n this.permissionsMap.delete(this.permission.DELETE_REGISTRATION_GROUP);\r\n break;\r\n case this.permission.EDIT_REGISTRATION_GROUP: \r\n this.permissionsMap.delete(this.permission.DELETE_REGISTRATION_GROUP);\r\n break; \r\n }\r\n }\r\n this.view['permissions'] = this.mapToObject(); \r\n }\r\n\r\n /*** END METODOS DO HTML */\r\n\r\n /**METODOS ÚTEIS */\r\n setDualPermission(permission_one: Permission, permission_two: Permission, permissionOptions: PermissionOptions){\r\n if(this.permissionsMap.get(permission_one) && this.permissionsMap.get(permission_two)){\r\n this.permissionsMap.set(permission_one, permissionOptions);\r\n this.permissionsMap.set(permission_two, permissionOptions);\r\n this.view['permissions'][permission_one] = permissionOptions;\r\n this.view['permissions'][permission_two] = permissionOptions;\r\n }else if(this.permissionsMap.get(permission_one)){\r\n this.permissionsMap.set(permission_one, permissionOptions);\r\n this.view['permissions'][permission_one] = permissionOptions;\r\n }else if (permission_two){\r\n this.permissionsMap.set(permission_two, permissionOptions);\r\n this.view['permissions'][permission_two] = permissionOptions;\r\n }\r\n }\r\n\r\n removeAllOptions(map, option) {\r\n let listToDelete : any []= [];\r\n map.forEach(( permisionOptions, key) => {\r\n if(key !== option)\r\n listToDelete.push(key);\r\n });\r\n listToDelete.forEach(e => {\r\n map.delete(e)\r\n });\r\n }\r\n\r\n isRequiredFieldFilled(): boolean{\r\n if (!this.view['name'] ||\r\n !this.view['userType'] ||\r\n (this.permissionsMap.get(this.permission.LIST_ALERTS)?.option==this.permisionRuleOption.SOME_FIELDS && this.permissionsMap.get(this.permission.LIST_ALERTS)?.fields.length<1) ||\r\n (this.permissionsMap.get(this.permission.LIST_CHANELS) && this.permissionsMap.get(this.permission.LIST_CHANELS)?.fields.length<1) ||\r\n (this.permissionsMap.get(this.permission.CHANGE_ANY_EVENT_FIELD)?.option === this.permisionRuleOption.SOME_FIELDS && this.permissionsMap.get(this.permission.CHANGE_ANY_EVENT_FIELD)?.fields.length<1) || \r\n (this.permissionsMap.get(this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE)?.option === this.permisionRuleOption.SOME_SOURCE && this.permissionsMap.get(this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE)?.fields.length<1) || \r\n (this.permissionsMap.get(this.permission.CREATE_EDIT_USER)?.option==this.permisionRuleOption.SOME_PROFILE && this.permissionsMap.get(this.permission.CREATE_EDIT_USER)?.fields.length<1)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['name']) names.push('Nome');\r\n if (!this.view['userType']) names.push('Categoria');\r\n if (this.permissionsMap.get(this.permission.LIST_ALERTS)?.option==this.permisionRuleOption.SOME_FIELDS && this.permissionsMap.get(this.permission.LIST_ALERTS)?.fields.length<1) names.push('Campos na seção alerta');\r\n if((this.permissionsMap.get(this.permission.CHANGE_ANY_EVENT_FIELD)?.option === this.permisionRuleOption.SOME_FIELDS && this.permissionsMap.get(this.permission.CHANGE_ANY_EVENT_FIELD)?.fields.length<1)) names.push('Campos que podem ser alterados (eventos)');\r\n if((this.permissionsMap.get(this.permission.LIST_CHANELS) && this.permissionsMap.get(this.permission.LIST_CHANELS)?.fields.length<1)) names.push('Canais que participa o perfil'); \r\n if((this.permissionsMap.get(this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE)?.option === this.permisionRuleOption.SOME_SOURCE && this.permissionsMap.get(this.permission.CHANGE_EVENTS_FROM_ANY_SOURCE)?.fields.length<1)) names.push('Alterar somente eventos de origem'); \r\n if (this.permissionsMap.get(this.permission.CREATE_EDIT_USER)?.option==this.permisionRuleOption.SOME_PROFILE && this.permissionsMap.get(this.permission.CREATE_EDIT_USER)?.fields.length<1) names.push('Perfil na seção Administração de Usuários');\r\n return names;\r\n }\r\n\r\n /**Função que converte o map to string */\r\n mapToObject():{} {\r\n let object = {};\r\n\r\n this.permissionsMap.forEach((value, key) => {\r\n object[key] = value\r\n }); \r\n return object; \r\n }\r\n\r\n enumToMap(type :any) : Map{\r\n const map = new Map();\r\n for(let element in type){\r\n map.set(element,type[element]);\r\n } \r\n return map; \r\n }\r\n\r\n initializeFields(){\r\n this.view = {};\r\n this.view['name'] = '';\r\n this.view['userType'] = '';\r\n this.permissionsMap.clear();\r\n this.disableAlertList = true; \r\n this.disableProfileList = true; \r\n\r\n this.alertPermissionOptions.fields = []; \r\n this.eventPermissionOptions.fields = []; \r\n this.userFields.fields = [];\r\n this.channelPermisionOptions.fields = [];\r\n \r\n this.verificationPermisionOptions.option = this.permisionRuleOption.ONLY_NOT_STARTED;\r\n this.patrolPermisionOptions.option = this.permisionRuleOption.ONLY_NOT_STARTED;\r\n this.profilePermisionOptions.option = this.permisionRuleOption.SOME_PROFILE;\r\n }\r\n\r\n /**END METODOS ÚTEIS */\r\n}\r\n","
    \r\n
    \r\n\r\n
    \r\n {{modelName + (isCreating()? ': [NOVO]':'')}}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Informações do Perfil
    \r\n
    \r\n \r\n
    \r\n \r\n Nome\r\n \r\n Campo Obrigatório\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    Acesso ao Aplicativo
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    Acesso à Web
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Lotações
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Acesso a dados de todas as Lotações\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Alertas
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n Todas\r\n Selecionar\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Editar\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Rastreamento
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar Equipes\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Canais
    \r\n
    \r\n \r\n
    \r\n \r\n Participa dos Tipos de Canais:\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Mapa
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar DCs\r\n \r\n
    \r\n
    \r\n \r\n Visualizar Áreas Observadas\r\n \r\n
    \r\n
    \r\n \r\n Visualizar SIMF\r\n \r\n
    \r\n
    \r\n \r\n Visualizar Faixas\r\n \r\n
    \r\n
    \r\n \r\n Visualizar Oleodutos\r\n \r\n
    \r\n
    \r\n \r\n Visualizar Gasodutos\r\n \r\n
    \r\n
    \r\n \r\n Visualizar Marcos Quilométricos\r\n \r\n
    \r\n
    \r\n \r\n Visualizar Válvulas\r\n \r\n
    \r\n
    \r\n \r\n Visualizar Terminais\r\n \r\n
    \r\n
    \r\n \r\n Visualizar Refinarias\r\n \r\n
    \r\n
    \r\n \r\n Visualizar Pontos de Entrega e Estações\r\n \r\n
    \r\n
    \r\n \r\n Visualizar Equipes\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Eventos
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n\r\n \r\n Remover\r\n \r\n
    \r\n
    \r\n\r\n \r\n Criar/Editar Notas\r\n \r\n
    \r\n
    \r\n\r\n \r\n Remover Notas\r\n \r\n
    \r\n
    \r\n\r\n \r\n Alterar eventos de qualquer origem\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n Alterar qualquer campo\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n Alterar eventos concluídos\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Verificações
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n
    \r\n \r\n Visualizar Informe Gerencial\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n\r\n Remover\r\n \r\n
    \r\n
    \r\n \r\n Todas\r\n Somente\r\n não\r\n enviadas\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Rondas
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Remover\r\n \r\n
    \r\n
    \r\n \r\n Todas\r\n Somente\r\n não\r\n iniciadas\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Administração de Usuários
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n\r\n Remover\r\n \r\n
    \r\n
    \r\n \r\n \r\n Todos\r\n Selecionar\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Administração de Equipes
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Remover\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Administração de Lotações
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Remover\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Administração de Empresas
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Remover\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Administração de Veículos
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Remover\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Administração de Ações Principais
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Remover\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Administração de Áreas Observadas
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Remover\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Administração de Formulários
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Remover\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Administração de Pontos
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n Remover\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Administração de Cadastros
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Visualizar\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Criar/Editar\r\n \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n Remover\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpInterceptor,\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { UserModel } from '../model/user.model';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class AuthInterceptor implements HttpInterceptor {\r\n\r\n constructor(private logger: NGXLogger, private storageService: StorageService) {\r\n }\r\n\r\n // Toda requisição http é interceptada para receber o token do usuário\r\n // O estado de erro do acesso ao backend é tratado pelo InvalidTokenApiService\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n const loggedUser: UserModel = this.storageService.getLocalUser();\r\n if (loggedUser) {\r\n request = this.addToken(request, loggedUser.token);\r\n return next.handle(request);\r\n }\r\n this.logger.error('HttpInterceptor: sem usuário logado');\r\n return next.handle(request);\r\n }\r\n\r\n addToken(req: HttpRequest, token: string): HttpRequest {\r\n const headers = req.headers\r\n .set('Cache-Control', 'no-cache')\r\n .set('access-control-expose-headers', 'Authorization')\r\n .set('Access-Control-Allow-Origin', '*')\r\n .set('withCredentials', 'true')\r\n .set('Authorization', token);\r\n return req.clone({ headers });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { FilterModel } from 'src/app/general/filter-component/filter.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EventFilterModel extends FilterModel{\r\n\r\n sources: string[];\r\n occurrences: string[];\r\n channels: string[];\r\n startKM: string;\r\n endKM: string;\r\n filterByAssociatedEvent: string;\r\n identifier: string;\r\n}\r\n","var map = {\n\t\"./af\": \"K/tc\",\n\t\"./af.js\": \"K/tc\",\n\t\"./ar\": \"jnO4\",\n\t\"./ar-dz\": \"o1bE\",\n\t\"./ar-dz.js\": \"o1bE\",\n\t\"./ar-kw\": \"Qj4J\",\n\t\"./ar-kw.js\": \"Qj4J\",\n\t\"./ar-ly\": \"HP3h\",\n\t\"./ar-ly.js\": \"HP3h\",\n\t\"./ar-ma\": \"CoRJ\",\n\t\"./ar-ma.js\": \"CoRJ\",\n\t\"./ar-ps\": \"TJgH\",\n\t\"./ar-ps.js\": \"TJgH\",\n\t\"./ar-sa\": \"gjCT\",\n\t\"./ar-sa.js\": \"gjCT\",\n\t\"./ar-tn\": \"bYM6\",\n\t\"./ar-tn.js\": \"bYM6\",\n\t\"./ar.js\": \"jnO4\",\n\t\"./az\": \"SFxW\",\n\t\"./az.js\": \"SFxW\",\n\t\"./be\": \"H8ED\",\n\t\"./be.js\": \"H8ED\",\n\t\"./bg\": \"hKrs\",\n\t\"./bg.js\": \"hKrs\",\n\t\"./bm\": \"p/rL\",\n\t\"./bm.js\": \"p/rL\",\n\t\"./bn\": \"kEOa\",\n\t\"./bn-bd\": \"loYQ\",\n\t\"./bn-bd.js\": \"loYQ\",\n\t\"./bn.js\": \"kEOa\",\n\t\"./bo\": \"0mo+\",\n\t\"./bo.js\": \"0mo+\",\n\t\"./br\": \"aIdf\",\n\t\"./br.js\": \"aIdf\",\n\t\"./bs\": \"JVSJ\",\n\t\"./bs.js\": \"JVSJ\",\n\t\"./ca\": \"1xZ4\",\n\t\"./ca.js\": \"1xZ4\",\n\t\"./cs\": \"PA2r\",\n\t\"./cs.js\": \"PA2r\",\n\t\"./cv\": \"A+xa\",\n\t\"./cv.js\": \"A+xa\",\n\t\"./cy\": \"l5ep\",\n\t\"./cy.js\": \"l5ep\",\n\t\"./da\": \"DxQv\",\n\t\"./da.js\": \"DxQv\",\n\t\"./de\": \"tGlX\",\n\t\"./de-at\": \"s+uk\",\n\t\"./de-at.js\": \"s+uk\",\n\t\"./de-ch\": \"u3GI\",\n\t\"./de-ch.js\": \"u3GI\",\n\t\"./de.js\": \"tGlX\",\n\t\"./dv\": \"WYrj\",\n\t\"./dv.js\": \"WYrj\",\n\t\"./el\": \"jUeY\",\n\t\"./el.js\": \"jUeY\",\n\t\"./en-au\": \"Dmvi\",\n\t\"./en-au.js\": \"Dmvi\",\n\t\"./en-ca\": \"OIYi\",\n\t\"./en-ca.js\": \"OIYi\",\n\t\"./en-gb\": \"Oaa7\",\n\t\"./en-gb.js\": \"Oaa7\",\n\t\"./en-ie\": \"4dOw\",\n\t\"./en-ie.js\": \"4dOw\",\n\t\"./en-il\": \"czMo\",\n\t\"./en-il.js\": \"czMo\",\n\t\"./en-in\": \"7C5Q\",\n\t\"./en-in.js\": \"7C5Q\",\n\t\"./en-nz\": \"b1Dy\",\n\t\"./en-nz.js\": \"b1Dy\",\n\t\"./en-sg\": \"t+mt\",\n\t\"./en-sg.js\": \"t+mt\",\n\t\"./eo\": \"Zduo\",\n\t\"./eo.js\": \"Zduo\",\n\t\"./es\": \"iYuL\",\n\t\"./es-do\": \"CjzT\",\n\t\"./es-do.js\": \"CjzT\",\n\t\"./es-mx\": \"tbfe\",\n\t\"./es-mx.js\": \"tbfe\",\n\t\"./es-us\": \"Vclq\",\n\t\"./es-us.js\": \"Vclq\",\n\t\"./es.js\": \"iYuL\",\n\t\"./et\": \"7BjC\",\n\t\"./et.js\": \"7BjC\",\n\t\"./eu\": \"D/JM\",\n\t\"./eu.js\": \"D/JM\",\n\t\"./fa\": \"jfSC\",\n\t\"./fa.js\": \"jfSC\",\n\t\"./fi\": \"gekB\",\n\t\"./fi.js\": \"gekB\",\n\t\"./fil\": \"1ppg\",\n\t\"./fil.js\": \"1ppg\",\n\t\"./fo\": \"ByF4\",\n\t\"./fo.js\": \"ByF4\",\n\t\"./fr\": \"nyYc\",\n\t\"./fr-ca\": \"2fjn\",\n\t\"./fr-ca.js\": \"2fjn\",\n\t\"./fr-ch\": \"Dkky\",\n\t\"./fr-ch.js\": \"Dkky\",\n\t\"./fr.js\": \"nyYc\",\n\t\"./fy\": \"cRix\",\n\t\"./fy.js\": \"cRix\",\n\t\"./ga\": \"USCx\",\n\t\"./ga.js\": \"USCx\",\n\t\"./gd\": \"9rRi\",\n\t\"./gd.js\": \"9rRi\",\n\t\"./gl\": \"iEDd\",\n\t\"./gl.js\": \"iEDd\",\n\t\"./gom-deva\": \"qvJo\",\n\t\"./gom-deva.js\": \"qvJo\",\n\t\"./gom-latn\": \"DKr+\",\n\t\"./gom-latn.js\": \"DKr+\",\n\t\"./gu\": \"4MV3\",\n\t\"./gu.js\": \"4MV3\",\n\t\"./he\": \"x6pH\",\n\t\"./he.js\": \"x6pH\",\n\t\"./hi\": \"3E1r\",\n\t\"./hi.js\": \"3E1r\",\n\t\"./hr\": \"S6ln\",\n\t\"./hr.js\": \"S6ln\",\n\t\"./hu\": \"WxRl\",\n\t\"./hu.js\": \"WxRl\",\n\t\"./hy-am\": \"1rYy\",\n\t\"./hy-am.js\": \"1rYy\",\n\t\"./id\": \"UDhR\",\n\t\"./id.js\": \"UDhR\",\n\t\"./is\": \"BVg3\",\n\t\"./is.js\": \"BVg3\",\n\t\"./it\": \"bpih\",\n\t\"./it-ch\": \"bxKX\",\n\t\"./it-ch.js\": \"bxKX\",\n\t\"./it.js\": \"bpih\",\n\t\"./ja\": \"B55N\",\n\t\"./ja.js\": \"B55N\",\n\t\"./jv\": \"tUCv\",\n\t\"./jv.js\": \"tUCv\",\n\t\"./ka\": \"IBtZ\",\n\t\"./ka.js\": \"IBtZ\",\n\t\"./kk\": \"bXm7\",\n\t\"./kk.js\": \"bXm7\",\n\t\"./km\": \"6B0Y\",\n\t\"./km.js\": \"6B0Y\",\n\t\"./kn\": \"PpIw\",\n\t\"./kn.js\": \"PpIw\",\n\t\"./ko\": \"Ivi+\",\n\t\"./ko.js\": \"Ivi+\",\n\t\"./ku\": \"JCF/\",\n\t\"./ku-kmr\": \"dVgr\",\n\t\"./ku-kmr.js\": \"dVgr\",\n\t\"./ku.js\": \"JCF/\",\n\t\"./ky\": \"lgnt\",\n\t\"./ky.js\": \"lgnt\",\n\t\"./lb\": \"RAwQ\",\n\t\"./lb.js\": \"RAwQ\",\n\t\"./lo\": \"sp3z\",\n\t\"./lo.js\": \"sp3z\",\n\t\"./lt\": \"JvlW\",\n\t\"./lt.js\": \"JvlW\",\n\t\"./lv\": \"uXwI\",\n\t\"./lv.js\": \"uXwI\",\n\t\"./me\": \"KTz0\",\n\t\"./me.js\": \"KTz0\",\n\t\"./mi\": \"aIsn\",\n\t\"./mi.js\": \"aIsn\",\n\t\"./mk\": \"aQkU\",\n\t\"./mk.js\": \"aQkU\",\n\t\"./ml\": \"AvvY\",\n\t\"./ml.js\": \"AvvY\",\n\t\"./mn\": \"lYtQ\",\n\t\"./mn.js\": \"lYtQ\",\n\t\"./mr\": \"Ob0Z\",\n\t\"./mr.js\": \"Ob0Z\",\n\t\"./ms\": \"6+QB\",\n\t\"./ms-my\": \"ZAMP\",\n\t\"./ms-my.js\": \"ZAMP\",\n\t\"./ms.js\": \"6+QB\",\n\t\"./mt\": \"G0Uy\",\n\t\"./mt.js\": \"G0Uy\",\n\t\"./my\": \"honF\",\n\t\"./my.js\": \"honF\",\n\t\"./nb\": \"bOMt\",\n\t\"./nb.js\": \"bOMt\",\n\t\"./ne\": \"OjkT\",\n\t\"./ne.js\": \"OjkT\",\n\t\"./nl\": \"+s0g\",\n\t\"./nl-be\": \"2ykv\",\n\t\"./nl-be.js\": \"2ykv\",\n\t\"./nl.js\": \"+s0g\",\n\t\"./nn\": \"uEye\",\n\t\"./nn.js\": \"uEye\",\n\t\"./oc-lnc\": \"Fnuy\",\n\t\"./oc-lnc.js\": \"Fnuy\",\n\t\"./pa-in\": \"8/+R\",\n\t\"./pa-in.js\": \"8/+R\",\n\t\"./pl\": \"jVdC\",\n\t\"./pl.js\": \"jVdC\",\n\t\"./pt\": \"8mBD\",\n\t\"./pt-br\": \"0tRk\",\n\t\"./pt-br.js\": \"0tRk\",\n\t\"./pt.js\": \"8mBD\",\n\t\"./ro\": \"lyxo\",\n\t\"./ro.js\": \"lyxo\",\n\t\"./ru\": \"lXzo\",\n\t\"./ru.js\": \"lXzo\",\n\t\"./sd\": \"Z4QM\",\n\t\"./sd.js\": \"Z4QM\",\n\t\"./se\": \"//9w\",\n\t\"./se.js\": \"//9w\",\n\t\"./si\": \"7aV9\",\n\t\"./si.js\": \"7aV9\",\n\t\"./sk\": \"e+ae\",\n\t\"./sk.js\": \"e+ae\",\n\t\"./sl\": \"gVVK\",\n\t\"./sl.js\": \"gVVK\",\n\t\"./sq\": \"yPMs\",\n\t\"./sq.js\": \"yPMs\",\n\t\"./sr\": \"zx6S\",\n\t\"./sr-cyrl\": \"E+lV\",\n\t\"./sr-cyrl.js\": \"E+lV\",\n\t\"./sr.js\": \"zx6S\",\n\t\"./ss\": \"Ur1D\",\n\t\"./ss.js\": \"Ur1D\",\n\t\"./sv\": \"X709\",\n\t\"./sv.js\": \"X709\",\n\t\"./sw\": \"dNwA\",\n\t\"./sw.js\": \"dNwA\",\n\t\"./ta\": \"PeUW\",\n\t\"./ta.js\": \"PeUW\",\n\t\"./te\": \"XLvN\",\n\t\"./te.js\": \"XLvN\",\n\t\"./tet\": \"V2x9\",\n\t\"./tet.js\": \"V2x9\",\n\t\"./tg\": \"Oxv6\",\n\t\"./tg.js\": \"Oxv6\",\n\t\"./th\": \"EOgW\",\n\t\"./th.js\": \"EOgW\",\n\t\"./tk\": \"Wv91\",\n\t\"./tk.js\": \"Wv91\",\n\t\"./tl-ph\": \"Dzi0\",\n\t\"./tl-ph.js\": \"Dzi0\",\n\t\"./tlh\": \"z3Vd\",\n\t\"./tlh.js\": \"z3Vd\",\n\t\"./tr\": \"DoHr\",\n\t\"./tr.js\": \"DoHr\",\n\t\"./tzl\": \"z1FC\",\n\t\"./tzl.js\": \"z1FC\",\n\t\"./tzm\": \"wQk9\",\n\t\"./tzm-latn\": \"tT3J\",\n\t\"./tzm-latn.js\": \"tT3J\",\n\t\"./tzm.js\": \"wQk9\",\n\t\"./ug-cn\": \"YRex\",\n\t\"./ug-cn.js\": \"YRex\",\n\t\"./uk\": \"raLr\",\n\t\"./uk.js\": \"raLr\",\n\t\"./ur\": \"UpQW\",\n\t\"./ur.js\": \"UpQW\",\n\t\"./uz\": \"Loxo\",\n\t\"./uz-latn\": \"AQ68\",\n\t\"./uz-latn.js\": \"AQ68\",\n\t\"./uz.js\": \"Loxo\",\n\t\"./vi\": \"KSF8\",\n\t\"./vi.js\": \"KSF8\",\n\t\"./x-pseudo\": \"/X5v\",\n\t\"./x-pseudo.js\": \"/X5v\",\n\t\"./yo\": \"fzPg\",\n\t\"./yo.js\": \"fzPg\",\n\t\"./zh-cn\": \"XDpg\",\n\t\"./zh-cn.js\": \"XDpg\",\n\t\"./zh-hk\": \"SatO\",\n\t\"./zh-hk.js\": \"SatO\",\n\t\"./zh-mo\": \"OmwH\",\n\t\"./zh-mo.js\": \"OmwH\",\n\t\"./zh-tw\": \"kOpN\",\n\t\"./zh-tw.js\": \"kOpN\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"RnhZ\";","import { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { EntityService } from './entity.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { Observable } from 'rxjs';\r\nimport { DEFAULT_PAGE_INDEX } from 'src/app/common/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class OperationFormAnswersService extends EntityService {\r\n\r\n constructor(logger: NGXLogger, \r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.patrols_address}/patrols`);\r\n }\r\n\r\n public loadAnswersFromRestApi(params: HttpParams, operationType : string) : Observable{\r\n let baseUrl; \r\n if(operationType ==='PATROL')\r\n baseUrl = `${environment.settings.patrols_address}/patrols`\r\n else\r\n baseUrl = `${environment.settings.event_verifications_address}/verifications`\r\n\r\n return this.http.get(baseUrl + '/operation-form-answers', {params : params});\r\n }\r\n \r\n public loadFileById(fileId: string, operationType : string): Observable>{\r\n let baseUrl; \r\n if(operationType ==='PATROL')\r\n baseUrl = `${environment.settings.patrols_address}/patrols`\r\n else\r\n baseUrl = `${environment.settings.event_verifications_address}/verifications`\r\n\r\n return this.http.get(baseUrl + '/evidence/' + fileId, { observe: 'response', responseType: 'blob' });\r\n } \r\n}\r\n","import { ConfirmationDialogComponent } from './../general/confirmation-dialog/confirmation-dialog.component';\r\nimport { EntityModel } from '../model/entity.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { ViewChild, Directive, Inject, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { forkJoin, Observable, of } from 'rxjs';\r\nimport { EntityService } from '../service/model/entity.service';\r\nimport * as moment from 'moment';\r\nimport { StorageService } from '../service/storage-service';\r\nimport { BaseGoldenPanel } from './base-golden-panel/base-golden-panel';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { DEFAULT_SORT, DELETE_DATA_PREFIX, SAVE_DATA_PREFIX, LIST_UPDATE_PREFIX, LARGE_PAGE_SIZE, UPDATE_DATA_PREFIX, ESP } from '../common/constants';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { AuthorizationService } from '../service/authorization/authorization.service';\r\nimport * as XLSX from 'xlsx';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { UserModel } from '../model/user.model';\r\nimport { LoadingListService } from 'src/app/service/loading/loading-list.service';\r\nimport { ProfileModel } from '../model/profile.model';\r\nimport { PermisionRuleOption, Permission } from '../model/enums.enum';\r\nimport { first, catchError } from 'rxjs/operators';\r\nimport { environment } from '../../environments/environment';\r\nimport { ProfileClassToConsole } from '../common/profile-class.decorator';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { NotificationDialogComponent } from '../general/notification-dialog/notification-dialog.component';\r\n\r\n@ProfileClassToConsole()\r\n@Directive()\r\nexport class ListComponent extends BaseGoldenPanel implements OnInit, OnDestroy {\r\n\r\n loggedUser: UserModel;\r\n loggedUserProfile : ProfileModel;\r\n permission = Permission;\r\n permisionRuleOption = PermisionRuleOption;\r\n\r\n /** The list of loaded */\r\n model: EntityModel[];\r\n\r\n /** The list of columns to display on the grid */\r\n displayedColumns: string[];\r\n\r\n /** The MatTableDataSource bound to the grid to show data */\r\n dataSource: MatTableDataSource;\r\n\r\n /** The structure to control grid selection */\r\n selection = new SelectionModel(true, []);\r\n\r\n /** The MatPaginator bound to the grid to show data */\r\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\r\n\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n @ViewChild(MatInput, { static: true }) searchInput: MatInput;\r\n\r\n // pagination\r\n initialPageSize = environment.useServerPagination? environment.defaultPageSize: LARGE_PAGE_SIZE;\r\n pageSize = environment.defaultPageSize;\r\n pageLength = undefined;\r\n sortOptions = DEFAULT_SORT;\r\n\r\n // Context Menu\r\n @ViewChild('contextMenuTrigger', { read: MatMenuTrigger, static: true }) contextMenu: MatMenuTrigger;\r\n contextMenuPosition = { x: '0px', y: '0px' };\r\n contextMenuSelectedItem; // Leave t as any, for now\r\n viewContextMenu: boolean = true; // valida se o menu de contexto é apresentado para o usuário\r\n\r\n loadingListService: LoadingListService = new LoadingListService();\r\n\r\n protected apiUrl: string;\r\n\r\n constructor(public logger: NGXLogger,\r\n public authorizationService: AuthorizationService,\r\n protected entityService: EntityService,\r\n protected dialog: MatDialog,\r\n protected toastr: ToastrService,\r\n public componentName: string,\r\n public tabTitle: string,\r\n public title: string,\r\n public modelName: string, // Usado em diálogos de confirmação\r\n protected storageService: StorageService,\r\n protected changeDetector: ChangeDetectorRef,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, goldenLayout, container);\r\n this.loggedUser = this.storageService.getLocalUser();\r\n this.loggedUserProfile = this.storageService.getLocalProfile();\r\n this.apiUrl = this.componentName;\r\n this.subscribeToSaveData();\r\n this.subscribeToDeleteData();\r\n this.subscribeToListUpdateData();\r\n }\r\n\r\n ngOnInit() {\r\n this.logger.debug('ListComponent.ngOnInit()');\r\n\r\n this.glUpdateTabTitle(this.tabTitle);\r\n\r\n this.sort.sort({id: this.getDefaultSortColumn(), start: this.getDefaultSortDirection(), disableClear: false});\r\n\r\n this.checkPermissions();\r\n }\r\n\r\n getShowSpinner() {\r\n return this.loadingListService.getShowSpinner();\r\n }\r\n\r\n loadingOn() {\r\n this.loadingListService.loadingOn();\r\n }\r\n\r\n loadingOff() {\r\n this.loadingListService.loadingOff();\r\n }\r\n\r\n protected getDefaultSortColumn(): string {\r\n return \"name\";\r\n }\r\n\r\n protected getDefaultSortDirection(): 'asc' | 'desc' {\r\n return 'asc';\r\n }\r\n\r\n getListPopoutData() {\r\n return this.storageService.getPopoutData();\r\n }\r\n\r\n setListPopoutData(data): void {\r\n this.storageService.setPopoutData(data);\r\n }\r\n\r\n hasListPopoutData(): boolean {\r\n return this.storageService.hasPopoutData();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.loadingListService.destroy();\r\n this.glUnSubscribeEvent(SAVE_DATA_PREFIX + this.componentName + '-edit');\r\n this.glUnSubscribeEvent(LIST_UPDATE_PREFIX + this.componentName);\r\n this.glUnSubscribeEvent(DELETE_DATA_PREFIX + this.componentName + '-edit');\r\n }\r\n\r\n getListCount(){\r\n return this.dataSource? this.dataSource.filteredData.length: 0;\r\n }\r\n\r\n protected selectionUpdate(){\r\n }\r\n\r\n protected renderComponent(){\r\n // aguarda um pouco para outras tarefas terminarem\r\n setTimeout(() => {\r\n this.changeDetector.detectChanges();\r\n }, 250);\r\n }\r\n\r\n // Chamado de dentro da updateModelItem\r\n findAndUpdateModel(updatedModel: EntityModel, exclude?: boolean){\r\n const oldModel = this.model.find( model => updatedModel.id == model.id);\r\n if (!oldModel) { // Novo objeto\r\n this.model.push(updatedModel);\r\n this.buildDataSource();\r\n }\r\n else {\r\n // Atualização de objeto existente, itera pelos atributos e os copia um a um (mantém o mesmo ponteiro de objeto na lista)\r\n for (const key in updatedModel) {\r\n let value = updatedModel[key];\r\n oldModel[key] = value;\r\n }\r\n this.renderComponent();\r\n \r\n if(exclude){ // se a objeto existe, mas foi removido pelo filtro atual\r\n const index = this.model.findIndex((op) => { return op.id === updatedModel.id });\r\n this.model.splice(index, 1);\r\n this.buildDataSource();\r\n }\r\n \r\n // Notifica as edições que o objeto foi atualizado\r\n this.glEmitEvent(UPDATE_DATA_PREFIX + this.componentName + '-edit', oldModel);\r\n }\r\n }\r\n\r\n public subscribeToSaveData() {\r\n // A lista escuta a edição correspondente para saber se algo foi modificado\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + this.componentName + '-edit', (data) => {\r\n this.saveData(data.entity);\r\n });\r\n }\r\n\r\n public subscribeToListUpdateData() {\r\n // A lista escuta uma outra lista para saber se algo foi modificado\r\n this.glSubscribeEvent(LIST_UPDATE_PREFIX + this.componentName, () => {\r\n this.loadRecordsFromServer();\r\n });\r\n }\r\n\r\n public subscribeToDeleteData() {\r\n this.glSubscribeEvent(DELETE_DATA_PREFIX + this.componentName + '-edit', (data) => {\r\n if (!data.fromList) {\r\n // A edição avisou que foi removida\r\n this.removeFromList(data.id);\r\n this.buildDataSource();\r\n }\r\n });\r\n }\r\n\r\n public saveData(new_entity){\r\n const index = this.model.findIndex(entity => entity.id === new_entity.id);\r\n if (index >= 0) {\r\n this.model[index] = new_entity;\r\n }\r\n else{\r\n this.model.splice(0, 0, new_entity); // Insere no topo sempre, a ordenação corrente vai colocar no lugar certo na tela\r\n }\r\n\r\n this.buildDataSource(); \r\n }\r\n\r\n // Pode ter sido sobre-escrita por filhos, ver Eventos e Verificações\r\n loadRecordsFromServer() {\r\n this.logger.debug('ListComponent.loadRecordsFromServer()');\r\n\r\n this.loadingOn();\r\n this.dataSource = new MatTableDataSource([]);\r\n \r\n // Não usa loadListFromRestApi porque precisa ler o pageLength da paginação\r\n this.entityService.loadFromRestApi(this.paginator? 0: null, this.paginator? this.initialPageSize: null, this.sortOptions).pipe(first()).subscribe( (result) => {\r\n this.updateDataSource(result);\r\n this.loadingOff();\r\n }, error => {\r\n this.logger.error(error);\r\n this.loadingOff();\r\n });\r\n }\r\n\r\n updateDataSource(result: any){\r\n this.handleRestApiResult(result);\r\n this.postLoadProcess();\r\n this.buildDataSource();\r\n }\r\n\r\n handleRestApiResult(result){\r\n // checa se retorno eh um objeto pair\r\n if (result) {\r\n if ( result['first'] || result['second'] ){\r\n this.model = result['second'];\r\n this.pageLength = result['first'];\r\n } else {\r\n this.model = result;\r\n }\r\n }\r\n }\r\n\r\n buildDataSource(){\r\n this.dataSource = new MatTableDataSource(this.model);\r\n\r\n this.dataSource.filterPredicate = (entity: EntityModel, filter: string): boolean => {\r\n return this.getStringEntityForFilter(entity).indexOf(filter) != -1;\r\n };\r\n\r\n this.dataSource.sortingDataAccessor = (data, sortHeaderId: string) => {\r\n return this.getPropertyByPath(data, sortHeaderId);\r\n };\r\n\r\n if (this.searchInput.value && this.searchInput.value != \"\") {\r\n this.dataSource.filter = this.searchInput.value.trim().toLowerCase();\r\n }\r\n\r\n this.dataSource.sort = this.sort;\r\n \r\n if (!environment.useServerPagination){\r\n this.dataSource.paginator = this.paginator;\r\n }\r\n\r\n this.selection.clear();\r\n this.selectionUpdate();\r\n this.renderComponent();\r\n }\r\n\r\n /* reducer method */\r\n getProperty (o, i) {\r\n if ( !o ) { return ''; }\r\n return o[i];\r\n }\r\n\r\n /* Retorna a propriedade definida pelo caminho */\r\n getPropertyByPath(item: Object, property: string){\r\n let value = property.split('.').reduce(this.getProperty, item);\r\n if (typeof value === 'string'){\r\n value = this.lowerAndTrimText(value);\r\n value = this.removeAccentsFromString(value);\r\n }\r\n return value ? value : '';\r\n }\r\n\r\n /**Remove accents/diacritics in a string */\r\n removeAccentsFromString(value : string){\r\n return value.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\");\r\n }\r\n\r\n /**\r\n * Retorna a entidade em formato string, contendo só os campos visualizados na interface, para filtro.\r\n * Implementação default para entidades simples. Deve ser sobrescrito para entidades mais complexas.\r\n */\r\n protected getStringEntityForFilter(data: EntityModel): string {\r\n return '';\r\n }\r\n\r\n /** Método utilitário para passar strings para caixa alta e remover espaços (se existirem) */\r\n protected lowerAndTrimText(text: string) {\r\n return (text) ? text.trim().toLowerCase() : '';\r\n }\r\n\r\n /** Método utilitário para formatar a apresentação das datas na lista */\r\n formatDate(date: number){\r\n if (!date || date == 0)\r\n return \"\";\r\n const startMoment = moment(date);\r\n return startMoment.format('DD/MM/YYYY HH:mm');\r\n }\r\n\r\n applySearch(filterValue: string) {\r\n this.dataSource.filter = filterValue.trim().toLowerCase();\r\n this.selection.clear();\r\n }\r\n\r\n onRemoveSearch(){\r\n this.searchInput.value = '';\r\n this.dataSource.filter = '';\r\n this.selection.clear();\r\n }\r\n\r\n onCreateClick() {\r\n const componentName = this.componentName + '-edit';\r\n this.glOpenContainer(componentName, {id: null});\r\n }\r\n\r\n onCopyClick(row: any) {\r\n const componentName = this.componentName + '-edit';\r\n this.glOpenContainer(componentName, {id: row.id, model: row, copy: true});\r\n }\r\n\r\n onEditClick(row: any, event: Event) {\r\n const componentName = this.componentName + '-edit';\r\n this.glOpenContainer(componentName, {id: row.id, model: row});\r\n }\r\n\r\n onDeleteManyClick(rows: EntityModel[], event?: any) {\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: 'Remover ' + rows.length + ' item(s) selecionado(s)?',\r\n title: 'Remover ' + this.modelName,\r\n okLabel: 'Remover',\r\n showIdentifier: false\r\n }\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.logger.debug('ListComponent.onDeleteManyClick()');\r\n this.deleteSelectedEntities(rows);\r\n this.postListDeleteProcess(rows);\r\n }\r\n },\r\n error => {\r\n this.logger.error(error)\r\n this.toastr.error(`Erro ao salvar ${this.modelName} ` + (error.error?.errorDetails ? error.error?.errorDetails: ''));\r\n });\r\n }\r\n\r\n /**\r\n * Abre containers de vários elementos da lista para edição encadeando várias chamadas\r\n */\r\n onEditManyClick(selectedEntities: EntityModel[]){\r\n selectedEntities.forEach( (selectedItem: EntityModel) => {\r\n setTimeout(() => {\r\n this.glOpenContainer(this.componentName+'-edit', {id: selectedItem.id, model: selectedItem});\r\n }, 500);\r\n });\r\n }\r\n\r\n /**\r\n * Remove vários elementos da lista encadeando várias chamadas\r\n */\r\n protected deleteSelectedEntities(selectedEntities: EntityModel[], extraParams?: Map){\r\n const observables: Observable[] = [];\r\n\r\n let successMessage : string = \"\";\r\n let errorMessage : string = \"\";\r\n\r\n if (!extraParams) extraParams = new Map();\r\n\r\n selectedEntities.forEach( (selectedItem: EntityModel) => {\r\n extraParams.set('id', selectedItem.id);\r\n \r\n observables.push(this.entityService.delete(selectedItem, extraParams).pipe(catchError(error => of(error))));\r\n });\r\n\r\n forkJoin(observables).pipe(first()).subscribe( entities => {\r\n // Será chamado uma única vez depois de todos os subscribes completarem\r\n let errorCount = 0;\r\n let successCount = 0;\r\n entities.forEach( (entity: any) => {\r\n if (entity instanceof HttpErrorResponse) {\r\n let error = entity as HttpErrorResponse;\r\n this.logger.error(error);\r\n errorMessage = errorMessage + error.error.message + \"\\n\\n\";\r\n errorCount++;\r\n }\r\n else {\r\n successCount++;\r\n this.removeFromListAndNotify(entity);\r\n }\r\n if (successCount == 1) {\r\n successMessage = \"Um item do tipo \" + this.modelName + \" foi removido com sucesso\\n\\n\";\r\n }\r\n else {\r\n successMessage = successCount + \" itens do tipo \" + this.modelName + \" foram removidos com sucesso\\n\\n\";\r\n }\r\n });\r\n this.buildDataSource();\r\n if (errorCount == 0) {\r\n if (entities.length == 1) {\r\n this.toastr.success(\"Um item do tipo \" + this.modelName + \" foi removido com sucesso\");\r\n }\r\n else {\r\n this.toastr.success(entities.length + \" itens do tipo \" + this.modelName + \" foram removidos com sucesso\");\r\n }\r\n }\r\n else {\r\n this.dialog.open(NotificationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: { successMessage: successMessage, errorMessage: errorMessage }\r\n });\r\n }\r\n },\r\n error => {\r\n this.logger.error(`Erro ao deletar vários itens da lista: ${JSON.stringify(error)}`);\r\n });\r\n }\r\n\r\n onDeleteClick(row: EntityModel, identifier: string, event: any, extraParams?: Map) {\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: 'Remover ' + this.modelName + '?',\r\n title: 'Remover ' + this.modelName,\r\n okLabel: 'Remover',\r\n identifier: identifier,\r\n showIdentifier: true\r\n }\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.logger.debug('ListComponent.onDeleteClick()');\r\n this.entityService.delete(row, extraParams).pipe(first()).subscribe((deletedRecord: any) => {\r\n this.logger.debug('Element deleted: ', deletedRecord.id);\r\n this.removeFromListAndNotify(deletedRecord);\r\n this.buildDataSource();\r\n this.postListDeleteProcess([row]);\r\n let name = \"\"\r\n if (deletedRecord.name) {\r\n name = deletedRecord.name;\r\n }\r\n else if (deletedRecord.plate) {\r\n name = deletedRecord.plate;\r\n }\r\n this.toastr.success(this.modelName + \" \" + name + \" foi removido(a) com sucesso\");\r\n },\r\n (error) => {\r\n this.logger.error(error);\r\n this.toastr.error(error.error.message);\r\n });\r\n }\r\n });\r\n }\r\n\r\n removeFromListAndNotify(deletedRecord){\r\n this.removeFromList(deletedRecord.id);\r\n\r\n // Aviso a edição que esse id foi removido (mas coloca um flag porque a própria list recebe essa notificação)\r\n this.glEmitEvent(DELETE_DATA_PREFIX + this.componentName + '-edit', {id: deletedRecord.id, fromList: true});\r\n }\r\n\r\n removeFromList(id){\r\n const index = this.model.findIndex(item => item.id == id);\r\n this.model.splice(index, 1);\r\n }\r\n\r\n onPageChanged(event){\r\n if (environment.useServerPagination) {\r\n const pageIndex = event.pageIndex;\r\n this.loadingOn();\r\n // Não usa loadListFromRestApi porque precisa ler o pageLength da paginação\r\n this.entityService.loadFromRestApi(pageIndex.toString(), this.pageSize, this.sortOptions).pipe(first()).subscribe( (result) => {\r\n this.updateDataSource(result);\r\n this.loadingOff();\r\n }, error => {\r\n this.logger.error(error);\r\n this.loadingOff();\r\n });\r\n }\r\n }\r\n\r\n postLoadProcess(){}\r\n\r\n postListDeleteProcess(rows: EntityModel[]){}\r\n\r\n openContextMenu(event: MouseEvent, row) {\r\n \r\n if(!this.viewContextMenu) return\r\n\r\n event.preventDefault();\r\n this.contextMenuSelectedItem = row;\r\n\r\n this.contextMenuPosition.x = event.clientX + 'px';\r\n this.contextMenuPosition.y = event.clientY + 'px';\r\n this.contextMenu.menu.focusFirstItem('mouse');\r\n this.contextMenu.openMenu();\r\n }\r\n\r\n getUserNameLoginTitle(user) {\r\n return UserModel.getUserTitle(user);\r\n }\r\n\r\n onRefreshClick(){\r\n this.loadRecordsFromServer();\r\n }\r\n\r\n //########################################################\r\n // GRID SELECTION CONTROL\r\n //########################################################\r\n\r\n /** Whether in a page the number of selected elements matches the total number of rows. */\r\n isAllSelected() {\r\n //Chamada diretamente no html, datasource pode não estar inicializado ainda.\r\n if(!this.dataSource) return false; \r\n \r\n return this.getPageData().every((row) => this.selection.isSelected(row));\r\n }\r\n\r\n /** Selects all rows of a page if they are not all selected; otherwise clear selection. */\r\n masterToggle() {\r\n if(this.isAllSelected())\r\n this.selection.deselect(...this.getPageData());\r\n else\r\n this.selection.select(...this.getPageData());\r\n\r\n this.selectionUpdate();\r\n }\r\n\r\n getPageData() {\r\n return this.dataSource._pageData(this.dataSource._orderData(this.dataSource.filteredData));\r\n }\r\n\r\n /** The tip for the checkbox on the passed row */\r\n checkboxTip(row?: EntityModel): string {\r\n if (!row) {\r\n return `${this.isAllSelected() ? 'Desmarcar' : 'Selecionar'} Todos`;\r\n }\r\n return `${this.selection.isSelected(row) ? 'Desmarcar' : 'Selecionar'} Item`;\r\n }\r\n\r\n protected getExportColValue(col, model):string[] {\r\n let colsValues: string[] = [];\r\n colsValues.push(model[col]);\r\n return colsValues;\r\n }\r\n\r\n private parseDataToArray(columnsTitles){\r\n let ws_data = [];\r\n let line = [];\r\n columnsTitles.forEach((col:string) => { line.push(col); });\r\n ws_data.push(line);\r\n\r\n if(this.selection.selected.length > 0) {\r\n this.selection.selected.forEach(model => {\r\n let line = [];\r\n this.displayedColumns.forEach(col => {\r\n if(col != 'select' && col != 'editDelete' && col != 'lastSync') {\r\n line = line.concat(this.getExportColValue(col, model));\r\n }\r\n });\r\n ws_data.push(line);\r\n });\r\n }\r\n else {\r\n this.dataSource.filteredData.forEach(model => {\r\n let line = [];\r\n this.displayedColumns.forEach(col => {\r\n if(col != 'select' && col != 'editDelete' && col != 'lastSync') {\r\n line = line.concat(this.getExportColValue(col, model));\r\n }\r\n });\r\n ws_data.push(line);\r\n })\r\n }\r\n return ws_data;\r\n }\r\n\r\n public exportXls(columnsTitles){\r\n const EXCEL_EXTENSION = '.xlsx';\r\n var ws_name = this.tabTitle;\r\n var wb = XLSX.utils.book_new();\r\n\r\n let exportDate = moment().format('DD-MM-yyyy HH-mm');\r\n\r\n /* make worksheet */\r\n var ws_data = this.parseDataToArray(columnsTitles);\r\n\r\n var ws = XLSX.utils.aoa_to_sheet(ws_data);\r\n\r\n /* Add the worksheet to the workbook */\r\n XLSX.utils.book_append_sheet(wb, ws, ws_name);\r\n XLSX.writeFile(wb, ws_name+' '+exportDate+EXCEL_EXTENSION);\r\n }\r\n\r\n // Trigger do click nos checkbox do grid que atualiza as propriedades do botão de arquivamento\r\n onCheckboxClick(row: EntityModel){\r\n this.selection.toggle(row);\r\n this.selectionUpdate();\r\n }\r\n\r\n protected checkPermissions(){}\r\n}\r\n","
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{environment.APP_TITLE}}\r\n Versão {{environment.APP_VERSION}} {{environment.development? '(DSV)': ''}}{{environment.hmg? ' [Hmg]': ''}}{{environment.production? '': ' [Local]'}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n person\r\n \r\n {{loggedUser?.login}}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n\r\n","import { Component, OnInit, ChangeDetectorRef, ViewChild, AfterViewInit, ElementRef, OnDestroy, HostListener, NgZone, Inject } from '@angular/core';\r\nimport { Router} from '@angular/router';\r\nimport { AuthenticationService } from './pages/login/login-services';\r\nimport { StorageService } from './service/storage-service';\r\nimport { environment } from '../environments/environment';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { of, Subscription, Subject } from 'rxjs';\r\nimport { AuthorizationService } from './service/authorization/authorization.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { SystemCheckDialogComponent } from './general/system-check/system-check-dialog.component';\r\nimport { GoldenLayoutComponent, IExtendedGoldenLayoutConfig } from 'ngx-golden-layout';\r\nimport { BaseGoldenPanel } from './pages/base-golden-panel/base-golden-panel';\r\nimport { PAGE_MAXIMIZED_PREFIX, MAP_PAGE, REGISTRATION_UPDATE_EVENT, PATROL_UPDATE_EVENT, VERIFICATION_UPDATE_EVENT } from './common/constants';\r\nimport { OperationType, Permission, RegistrationType, UserType } from './model/enums.enum';\r\nimport { Websocket } from './service/websocket/websocket';\r\nimport { Message } from '@stomp/stompjs';\r\nimport { MarkersService } from './service/model/markers.service';\r\nimport { ChannelService } from './service/model/channel.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { SingleDataCacheService } from './service/model/single.data.cache.service';\r\nimport { SingleDataService } from './service/model/single.data.service';\r\nimport { EntityCacheService } from './service/model/entity.cache.service';\r\nimport LanguageUtils from './service/util/language-utils';\r\nimport { EventMainActionModel } from 'src/app/model/event.main.action.model';\r\nimport { EventModel } from 'src/app/model/event.model';\r\nimport { FormModel } from 'src/app/model/form.model';\r\nimport { InspectionPointModel } from 'src/app/model/inspection.point.model';\r\nimport { ObservedAreaModel } from 'src/app/model/observed.area.model';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { PatrolModel } from 'src/app/model/patrol.model';\r\nimport { PatrolTeamModel } from 'src/app/model/patrolteam.model';\r\nimport { PlacementModel } from 'src/app/model/placement.model';\r\nimport { ProfileModel } from 'src/app/model/profile.model';\r\nimport { UserModel } from 'src/app/model/user.model';\r\nimport { VehicleModel } from 'src/app/model/vehicle.model';\r\nimport { VerificationModel } from 'src/app/model/verification.model';\r\nimport { CompanyModel } from 'src/app/model/company.model';\r\nimport { LoginAsComponent } from './general/login-as/login-as.component';\r\nimport { TrackingService } from './service/model/tracking.service';\r\nimport { OperationService } from './service/model/operation.service';\r\nimport { VerificationService } from './service/model/verification.service';\r\nimport { PatrolService } from './service/model/patrol.service';\r\nimport { AbstractSignalModel } from './model/abstract.signal.model';\r\nimport { filter, first, takeUntil } from 'rxjs/operators';\r\nimport { MsalGuardConfiguration, MsalService, MSAL_GUARD_CONFIG, MsalBroadcastService } from '@azure/msal-angular';\r\nimport { AuthenticationResult, InteractionStatus, InteractionType, PopupRequest, PublicClientApplication, RedirectRequest } from '@azure/msal-browser';\r\nimport { ConfirmationDialogComponent } from './general/confirmation-dialog/confirmation-dialog.component';\r\n\r\n\r\nconst INITIAL_LAYOUT: IExtendedGoldenLayoutConfig = {\r\n content: [{\r\n type: 'stack',\r\n id: 'stack_ccpd',\r\n isClosable: false,\r\n content: [{\r\n type: 'component',\r\n id: 'central-id',\r\n componentName: 'central',\r\n title: environment.CENTRAL_GROUP_LABEL,\r\n isClosable: false\r\n },\r\n {\r\n type: 'component',\r\n id: 'tracking-id',\r\n componentName: 'tracking',\r\n title: environment.TRACKING_GROUP_LABEL,\r\n isClosable: true\r\n },\r\n {\r\n type: 'component',\r\n id: 'channels-id',\r\n componentName: 'channels',\r\n title: environment.CHANNEL_GROUP_LABEL,\r\n isClosable: true\r\n }],\r\n }],\r\n settings: {\r\n maximiseAllItems: true, // Funcionalidade extra do ngx-goldenlayout (todos os tabs ficam na stack maximizada, mesmo os de stacks/colunas/linhas diferentes )\r\n hasHeaders: true,\r\n constrainDragToContainer: true,\r\n reorderEnabled: true,\r\n selectionEnabled: false,\r\n popoutWholeStack: false,\r\n blockedPopoutsThrowError: true,\r\n closePopoutsOnUnload: true,\r\n showPopoutIcon: true,\r\n showMaximiseIcon: true,\r\n showCloseIcon: false,\r\n },\r\n dimensions: {\r\n borderWidth: 1,\r\n minItemHeight: 60,\r\n minItemWidth: 60,\r\n headerHeight: 28,\r\n dragProxyWidth: 350,\r\n dragProxyHeight: 350\r\n },\r\n labels: {\r\n maximise: 'Maximizar/Restaurar', // para compensar o bug abaixo\r\n minimise: 'Restaurar',\r\n popout: 'Destacar',\r\n // popin: 'Restaurar' -- bug do GL, não tem o popin label no Labels, embora tenha no defaultConfig\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss']\r\n})\r\n\r\nexport class AppComponent implements OnInit, OnDestroy, AfterViewInit {\r\n loggedUser: UserModel;\r\n\r\n permission = Permission;\r\n notification: string;\r\n environment = environment;\r\n registeredDrag = false;\r\n\r\n public layout$ = of(INITIAL_LAYOUT);\r\n @ViewChild('comp', { static: true }) layout;\r\n\r\n @ViewChild('mainMenu', { static: false }) mainMenu: ElementRef;\r\n @ViewChild('adminMenu', { static: false }) adminMenu: ElementRef;\r\n @ViewChild('mapButton', { static: false }) mapButton: ElementRef;\r\n\r\n countClick = 0;\r\n baseGoldenPanel: BaseGoldenPanel;\r\n goldenLayoutComponent: GoldenLayoutComponent;\r\n\r\n isHiddenButtonListAlert: boolean;\r\n isHiddenButtonListTracking: boolean;\r\n isHiddenButtonTrackingTeam: boolean;\r\n isHiddenButtonListEvents: boolean;\r\n isHiddenButtonListVerification: boolean;\r\n isHiddenButtonListPatrols: boolean;\r\n isHiddenButtonListChannels: boolean;\r\n isHiddenButtonAdministration: boolean;\r\n isHiddenButtonRegistration: boolean;\r\n isHiddenButtonListPatrolTeam: boolean;\r\n isHiddenButtonListUsers: boolean;\r\n isHiddenButtonListProfiles: boolean;\r\n isHiddenButtonListVehicles: boolean;\r\n isHiddenButtonListCompany: boolean;\r\n isHiddenButtonListPlacement: boolean;\r\n isHiddenButtonMainEvents: boolean;\r\n isHiddenButtonObservedArea: boolean;\r\n isHiddenButtonForms: boolean;\r\n isHiddenButtonPoints: boolean;\r\n isHiddenButtonRegistrationGroup: boolean;\r\n hasUserProfile: boolean;\r\n\r\n private authenticationSubscription: Subscription;\r\n private inconsistentDataSubscription: Subscription;\r\n private notificationSubscription: Subscription;\r\n\r\n private websocketConnectSubscription: Subscription;\r\n\r\n private markersWebsocketSubscription: Subscription;\r\n private patrolUpdateWebsocketSubscription: Subscription;\r\n private verificationUpdateWebsocketSubscription: Subscription;\r\n private vehicleSignalsWebsocketSubscription: Subscription;\r\n private signalsWebsocketSubscription: Subscription;\r\n private registrationUpdateWebsocketSubscription: Subscription;\r\n private resetChannelWebsocketSubscription: Subscription;\r\n\r\n private markersWebsocket: Websocket;\r\n private patrolUpdateWebsocket: Websocket;\r\n private verificationUpdateWebsocket: Websocket;\r\n private vehicleSignalsWebsocket: Websocket;\r\n private signalsWebsocket: Websocket;\r\n private registrationUpdateWebsocket: Websocket;\r\n private resetChannelWebsocket: Websocket;\r\n\r\n\r\n isUserLogin = false;\r\n private readonly _destroying$ = new Subject();\r\n\r\n\r\n constructor ( public logger: NGXLogger,\r\n private ngZone: NgZone,\r\n private router: Router,\r\n private toastr: ToastrService,\r\n private changeDetector: ChangeDetectorRef,\r\n public dialog: MatDialog,\r\n private authenticationService: AuthenticationService,\r\n protected singleDataService: SingleDataService,\r\n protected singleDataCacheService: SingleDataCacheService,\r\n protected entityCacheService: EntityCacheService,\r\n private storageService: StorageService,\r\n private trackingService: TrackingService,\r\n private verificationService: VerificationService,\r\n private patrolService: PatrolService,\r\n protected authorizationService: AuthorizationService,\r\n private markerService: MarkersService,\r\n private channelService: ChannelService,\r\n @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration,\r\n private msalService: MsalService,\r\n private msalBroadcastService: MsalBroadcastService) {\r\n }\r\n\r\n showSettings() {\r\n const settings = environment.settings;\r\n this.logger.debug(' << Service URLs >>\\n',\r\n ` auth: ${settings.auth_address}\\n`,\r\n ` alerts: ${settings.alerts_address}\\n`,\r\n ` markers: ${settings.markers_address}\\n`,\r\n ` patrols: ${settings.patrols_address}\\n`,\r\n ` registrations: ${settings.registrations_address}\\n`,\r\n ` tracking: ${settings.tracking_address}\\n`,\r\n ` verifications: ${settings.event_verifications_address}\\n`,\r\n ` websocket: ${settings.websocket_address}\\n`);\r\n }\r\n\r\n ngOnInit() {\r\n this.logger.debug(\"AppComponent.ngOnInit()\"); // Chamado novamente quando um painel faz popout\r\n\r\n this.initLanguageUtils();\r\n\r\n this.showSettings();\r\n\r\n this.msalBroadcastService.inProgress$.pipe(\r\n filter((status: InteractionStatus) => status === InteractionStatus.None),\r\n takeUntil(this._destroying$)\r\n ).subscribe(() => {\r\n this.initLogin();\r\n });\r\n\r\n this.setIntervalToReloadToken();\r\n }\r\n\r\n private setIntervalToReloadToken(){\r\n setInterval(() => {\r\n this.authenticationService.reloadToken();\r\n }, 300000); // 5 minutos\r\n }\r\n\r\n private initLogin() {\r\n this.isUserLogin = this.msalService.instance.getAllAccounts().length > 0;\r\n if(!this.isUserLogin){\r\n this.login();\r\n }else{\r\n this.getAccessTokenByMsal();\r\n }\r\n }\r\n\r\n private getAccessTokenByMsal(){\r\n const account = this.msalService.instance.getAllAccounts()[0];\r\n const accessTokenRequest = {\r\n scopes: [\"user.read\"],\r\n account: account,\r\n };\r\n\r\n let msalInstance: PublicClientApplication = this.msalService.instance as PublicClientApplication;\r\n\r\n msalInstance.acquireTokenSilent(accessTokenRequest).then(accessTokenResponse => {\r\n // Acquire token silent success\r\n let accessToken = accessTokenResponse.accessToken;\r\n this.createUserSession(accessToken);\r\n })\r\n .catch(function (error) {\r\n //Acquire token silent failure\r\n this.logger.error(\"AppComponent.getAccessTokenByMsal()\", error);\r\n });\r\n }\r\n\r\n /**\r\n * Método que procura no localStorage o accesstoken\r\n */\r\n private getAccessTokenFromLocalStorage(){\r\n const account = this.msalService.instance.getAllAccounts()[0];\r\n if (account && account.homeAccountId){\r\n\r\n let storage = window[this.msalService.instance.getConfiguration().cache.cacheLocation];\r\n\r\n let result:any;\r\n Object.keys(storage).forEach((key,index)=>{\r\n const k = localStorage[key];\r\n if(key.includes('accesstoken')){\r\n result = k;\r\n return;\r\n }\r\n });\r\n\r\n let accessToken = null;\r\n if(result){\r\n let o = JSON.parse(result);\r\n accessToken = o?.secret;\r\n }\r\n\r\n if (accessToken) {\r\n this.createUserSession(accessToken);\r\n }else{\r\n this.logger.error(\"AppComponent.getAccessTokenFromLocalStorage() - token not found\");\r\n }\r\n }else{\r\n this.logger.error(\"AppComponent.getAccessTokenFromLocalStorage() - invalid account\");\r\n }\r\n }\r\n\r\n private showLoginError() {\r\n this.resetLayout(); // fecha as janelas de: alertas, mensagens e rastreamento\r\n this.baseGoldenPanel.glOpenContainer('login-error', null);\r\n }\r\n\r\n async createUserSession(accessToken){\r\n this.subscribeOnAuthenticatedStatus();\r\n this.subscribeInconsistentData();\r\n\r\n const existUser = await this.authenticationService.createSession(accessToken)\r\n if(!existUser){\r\n this.showLoginError();\r\n return;\r\n }\r\n }\r\n\r\n private login() {\r\n if (this.msalGuardConfig.interactionType === InteractionType.Popup) {\r\n if (this.msalGuardConfig.authRequest){\r\n this.msalService.loginPopup({...this.msalGuardConfig.authRequest} as PopupRequest)\r\n .subscribe((response: AuthenticationResult) => {\r\n this.msalService.instance.setActiveAccount(response.account);\r\n });\r\n } else {\r\n this.msalService.loginPopup()\r\n .subscribe((response: AuthenticationResult) => {\r\n this.msalService.instance.setActiveAccount(response.account);\r\n });\r\n }\r\n } else {\r\n if (this.msalGuardConfig.authRequest){\r\n this.msalService.loginRedirect({...this.msalGuardConfig.authRequest} as RedirectRequest);\r\n } else {\r\n this.msalService.loginRedirect();\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.authenticationSubscription?.unsubscribe();\r\n this.inconsistentDataSubscription?.unsubscribe();\r\n this.notificationSubscription?.unsubscribe();\r\n\r\n this.websocketConnectSubscription?.unsubscribe();\r\n\r\n this.markersWebsocketSubscription?.unsubscribe();\r\n this.registrationUpdateWebsocketSubscription?.unsubscribe();\r\n this.resetChannelWebsocketSubscription?.unsubscribe();\r\n this.patrolUpdateWebsocketSubscription?.unsubscribe();\r\n this.verificationUpdateWebsocketSubscription?.unsubscribe();\r\n this.vehicleSignalsWebsocketSubscription?.unsubscribe();\r\n this.signalsWebsocketSubscription?.unsubscribe();\r\n\r\n this.markersWebsocket?.destroy();\r\n this.markersWebsocket = null;\r\n this.registrationUpdateWebsocket?.destroy();\r\n this.registrationUpdateWebsocket = null;\r\n this.resetChannelWebsocket?.destroy();\r\n this.resetChannelWebsocket = null;\r\n this.patrolUpdateWebsocket?.destroy();\r\n this.patrolUpdateWebsocket = null;\r\n this.verificationUpdateWebsocket?.destroy();\r\n this.verificationUpdateWebsocket = null;\r\n this.vehicleSignalsWebsocket?.destroy();\r\n this.vehicleSignalsWebsocket = null;\r\n\r\n let goldenLayoutInstance = this.goldenLayoutComponent.getGoldenLayoutInstance();\r\n if (!goldenLayoutInstance.isSubWindow) {\r\n this.baseGoldenPanel.glUnSubscribeEvent('OPEN_CONTAINER');\r\n }\r\n this._destroying$.next(undefined);\r\n this._destroying$.complete();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.logger.debug(\"AppComponent.ngAfterViewInit()\"); // Chamado novamente quando um painel faz popout\r\n this.goldenLayoutComponent = this.layout as GoldenLayoutComponent;\r\n this.baseGoldenPanel = new BaseGoldenPanel(this.logger, this.goldenLayoutComponent, null);\r\n\r\n let goldenLayoutInstance = this.goldenLayoutComponent.getGoldenLayoutInstance();\r\n if (!goldenLayoutInstance.isSubWindow) {\r\n this.baseGoldenPanel.glSubscribeEvent('OPEN_CONTAINER', data => {\r\n this.logger.debug(\"AppComponent.OnOpenContainer()\");\r\n this.baseGoldenPanel.glOpenContainer(data.componentName, data.data);\r\n });\r\n }\r\n\r\n this.trackingService.setEventHub(goldenLayoutInstance.eventHub);\r\n }\r\n\r\n initLanguageUtils() {\r\n LanguageUtils.init();\r\n\r\n EventMainActionModel.addLanguageMap();\r\n PlacementModel.addLanguageMap();\r\n VehicleModel.addLanguageMap();\r\n CompanyModel.addLanguageMap();\r\n UserModel.addLanguageMap();\r\n PatrolTeamModel.addLanguageMap();\r\n FormModel.addLanguageMap();\r\n ProfileModel.addLanguageMap();\r\n PatrolModel.addLanguageMap();\r\n VerificationModel.addLanguageMap();\r\n ObservedAreaModel.addLanguageMap();\r\n EventModel.addLanguageMap();\r\n OperationModel.addLanguageMap();\r\n InspectionPointModel.addLanguageMap();\r\n }\r\n\r\n registerDragElements() {\r\n let goldenLayoutInstance = this.goldenLayoutComponent.getGoldenLayoutInstance();\r\n if (!this.registeredDrag && !goldenLayoutInstance.isSubWindow &&\r\n this.baseGoldenPanel && this.mainMenu && this.adminMenu && this.mapButton) {\r\n this.logger.debug(\"AppComponent.registerDragElements()\");\r\n this.baseGoldenPanel.glRegisterDragMainMenu(this.mainMenu.nativeElement);\r\n this.baseGoldenPanel.glRegisterDragMainMenu(this.adminMenu.nativeElement);\r\n this.baseGoldenPanel.glRegisterDragMainButton(this.mapButton.nativeElement.childNodes[0]);\r\n this.registeredDrag = true;\r\n }\r\n }\r\n\r\n glOpenContainerFromMainMenu(componentName) {\r\n this.baseGoldenPanel.glOpenContainerFromMainMenu(componentName);\r\n }\r\n\r\n @HostListener('window:beforeunload', ['$event'])\r\n onBeforeUnload(event: BeforeUnloadEvent) {\r\n if (!this.baseGoldenPanel.glResetLayout()) {\r\n // TODO scuri Supostamente event.returnValue poderia conter uma string para o diálogo. Mas não consegui fazer isso funcionar. Ficou o diálogo default mesmo.\r\n return false;\r\n }\r\n }\r\n\r\n resetLayout() {\r\n if (!this.baseGoldenPanel.glResetLayout()) {\r\n this.toastr.warning(\"Existem janelas de edição com modificações. Salve ou descarte as edições antes de fechar todas as janelas.\");\r\n }\r\n }\r\n\r\n renderComponent() {\r\n // aguarda um pouco para outras tarefas terminarem\r\n setTimeout(() => {\r\n this.changeDetector.detectChanges();\r\n }, 250);\r\n }\r\n\r\n private subscribeOnAuthenticatedStatus() {\r\n this.authenticationSubscription = this.authenticationService.authenticated$.subscribe(auth => {\r\n this.logger.debug('AppComponent.OnAuthenticatedStatus() - ' + auth); // Notificação enviada quando o processo de login e load do usuário/profile corrente terminou por completo\r\n if (auth) {\r\n this.loggedUser = this.storageService.getLocalUser();\r\n\r\n this.checkPermissions();\r\n\r\n this.router.navigate(['/']);\r\n\r\n this.trackingService.initialize();\r\n\r\n // TODO scuri Roda o websocket fora do Angular, com isso não gera ChangeDetect. Porque????\r\n this.ngZone.runOutsideAngular(() => {\r\n this.subscribeOnMarkerWebsocketConnected();\r\n this.subscribeOnMarkersWebsocket();\r\n this.subscribeToRegistrationUpdateWebsocket();\r\n this.subscribeToResetChannelWebsocket();\r\n this.subscribeToVerificationUpdateWebsocket();\r\n this.subscribeToPatrolUpdateWebsocket();\r\n this.subscribeToSignalsWebsocketStream();\r\n this.subscribeToVehicleSignalsWebsocketStream();\r\n });\r\n }\r\n });\r\n }\r\n\r\n private subscribeInconsistentData() {\r\n this.inconsistentDataSubscription = this.authenticationService.idata$.subscribe(i_data => {\r\n this.showLoginError();\r\n });\r\n }\r\n\r\n private subscribeToResetChannelWebsocket() {\r\n this.resetChannelWebsocket = Websocket.createResetChannelWebsocket();\r\n this.resetChannelWebsocketSubscription = this.resetChannelWebsocket.stream().subscribe((message: Message) => {\r\n const marker = JSON.parse(message.body);\r\n if (!marker) return;\r\n\r\n if (marker.channelId) {\r\n let unreadMessages = marker.unreadMessages.find(element => element.userId === this.loggedUser.id); // Esse array só vem pelo avro/kafka/websocket\r\n if (unreadMessages != null) {\r\n this.channelService.updateUserUnreadMessages(marker.channelId, unreadMessages); // Atualiza o contador de novas mensagens do canal em memória e notifica a lista de canais\r\n }\r\n }\r\n }, (error) => {\r\n const errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Erro no servidor';\r\n this.logger.error(`AppComponent.onResetChannelWebsocket: ${errMsg}`);\r\n });\r\n }\r\n\r\n private subscribeOnMarkersWebsocket() {\r\n this.markersWebsocketSubscription = this.markersWebsocket.stream().subscribe((message: Message) => {\r\n if (message) {\r\n const marker = JSON.parse(message.body);\r\n if (!marker) return;\r\n\r\n if (marker.channelId) {\r\n let unreadMessages = marker.unreadMessages.find(element => element.userId === this.loggedUser.id); // Esse array só vem pelo avro/kafka/websocket\r\n if (unreadMessages != null) {\r\n this.channelService.updateUserUnreadMessages(marker.channelId, unreadMessages); // Atualiza o contador de novas mensagens do canal em memória e notifica a lista de canais\r\n }\r\n }\r\n\r\n this.markerService.notifyNewMarkerReceived(marker); // Notifica nova mensagem recebida\r\n }\r\n }), (error: any) => {\r\n let errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';\r\n this.logger.error(`[app.component.ts] subscribeToMarkersWebsocket: ${errMsg}`);\r\n };\r\n }\r\n\r\n /**\r\n * Ao conectar com o websocket, notifica os observadores\r\n */\r\n private subscribeOnMarkerWebsocketConnected() {\r\n this.markersWebsocket = Websocket.createMarkersWebsocket();\r\n this.websocketConnectSubscription = this.markersWebsocket.onConnectCallback().subscribe(() => {\r\n this.logger.log('OnMarkerWebsocketConnected ***** Conexão com o websocket estabelecida.');\r\n this.markerService.notifyWebsocketConnected(true);\r\n }, (error: any) => this.logger.error(error));\r\n }\r\n\r\n private operationUpdateEvent(id, operationService: OperationService, operationType: string){\r\n this.logger.debug('AppComponent.operationUpdateEvent id:' + id);\r\n operationService.getRecord(id).pipe(first()).subscribe((operation: OperationModel) => {\r\n if (operation) { // Pode retornar null se a operação foi removida\r\n operation.type = operationType;\r\n this.trackingService.updateOperation(operation, false);\r\n }\r\n }, (error: any) => this.logger.error(error));\r\n }\r\n\r\n private subscribeToPatrolUpdateWebsocket() {\r\n this.patrolUpdateWebsocket = Websocket.createPatrolUpdateWebsocket();\r\n this.patrolUpdateWebsocketSubscription = this.patrolUpdateWebsocket.stream().subscribe((message: Message) => {\r\n const entity = JSON.parse(message.body);\r\n if (entity && entity.id) {\r\n this.baseGoldenPanel.glEmitEvent(PATROL_UPDATE_EVENT, { id: entity.id, type: entity.type, patrolTeamId: entity.patrolTeamId, status: entity.status });\r\n this.operationUpdateEvent(entity.id, this.patrolService, OperationType.PATROL);\r\n }\r\n }, (error) => {\r\n const errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';\r\n this.logger.error(`[tracking.component.ts] subscribeToChangePatrolWebsocket: ${errMsg}`);\r\n });\r\n }\r\n\r\n private subscribeToVerificationUpdateWebsocket() {\r\n this.verificationUpdateWebsocket = Websocket.createVerificationUpdateWebsocket();\r\n this.verificationUpdateWebsocketSubscription = this.verificationUpdateWebsocket.stream().subscribe((message: Message) => {\r\n const entity = JSON.parse(message.body);\r\n if (entity && entity.id) {\r\n this.baseGoldenPanel.glEmitEvent(VERIFICATION_UPDATE_EVENT, { id: entity.id, type: entity.type, patrolTeamId: entity.patrolTeamId, status: entity.status });\r\n this.operationUpdateEvent(entity.id, this.verificationService, OperationType.EVENT_VERIFICATION);\r\n }\r\n }, (error) => {\r\n const errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';\r\n this.logger.error(`[tracking.component.ts] subscribeToChangeVerificationStatusWebsocket: ${errMsg}`);\r\n });\r\n }\r\n\r\n /** Se inscreve para receber mensagens do websocket de sinais de veículos */\r\n private subscribeToVehicleSignalsWebsocketStream() {\r\n this.vehicleSignalsWebsocket = Websocket.createVehicleSignalsWebsocket();\r\n this.vehicleSignalsWebsocketSubscription = this.vehicleSignalsWebsocket.stream().subscribe( (message: Message) => {\r\n this.processReceivedSignal(message.body);\r\n },(error) => {\r\n const errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';\r\n this.logger.error(`[tracking.component.ts] subscribeToVehicleSignalsWebsocketStream: ${errMsg}`);\r\n });\r\n }\r\n\r\n /** Se inscreve para receber mensagens do websocket de sinais */\r\n private subscribeToSignalsWebsocketStream() {\r\n this.signalsWebsocket = Websocket.createSignalsWebsocket();\r\n this.signalsWebsocketSubscription = this.signalsWebsocket.stream().subscribe( (message: Message) => {\r\n this.processReceivedSignal(message.body);\r\n },(error) => {\r\n const errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';\r\n this.logger.error(`[tracking.component.ts] subscribeToSignalsWebsocketStream: ${errMsg}`);\r\n });\r\n }\r\n\r\n /** Processa um sinal recebido, inserindo ou atualizando a lista lateral e atualizando o mapa */\r\n processReceivedSignal(signalInJson: string) {\r\n // Atenção esse método vai ser chamado com alta frequencia\r\n // this.logger.trace(`Sinal recebido: ${signalInJson}`);\r\n let signal: AbstractSignalModel;\r\n\r\n try {\r\n signal = JSON.parse(signalInJson);\r\n }catch (e) {\r\n this.logger.error(`Signal could not be processed. Body received: ${signalInJson}`);\r\n return;\r\n }\r\n\r\n if(!signal) return;\r\n\r\n // Atualiza o rastreamento\r\n this.trackingService.updateTracking(signal, true);\r\n }\r\n\r\n logoutClick(event) {\r\n let logoutSSO = true;\r\n if (event.ctrlKey) logoutSSO = false;\r\n\r\n if (logoutSSO) {\r\n // Só funciona corretamente na produção\r\n // No Ambiente de desenvolvimento dá erro:\r\n // ClientAuthError: end_session_endpoint_not_supported: Provided authority does not support logout\r\n const user = this.msalService.instance.getAllAccounts()[0];\r\n this.msalService.instance.logoutRedirect({ account: user});\r\n }\r\n\r\n this.authenticationService.logout();\r\n }\r\n\r\n public onControlClick() {\r\n this.dialog.open(SystemCheckDialogComponent, {\r\n width: '800px',\r\n panelClass: 'sipd-modal'\r\n });\r\n }\r\n\r\n stateChanged() {\r\n this.logger.debug('AppComponent.stateChanged()');\r\n\r\n if (!this.registeredDrag)\r\n this.registerDragElements();\r\n\r\n // TODO scuri getSerializableState causa um warning quando um painel faz popout\r\n // Ocorreu um erro no cliente: Can't create config, layout not yet initialised\r\n // Can't create config, layout not yet initialised\r\n let serializable = this.goldenLayoutComponent.getSerializableState();\r\n if (serializable && serializable.maximisedItemId === MAP_PAGE + '-id')\r\n this.baseGoldenPanel.glEmitEvent(PAGE_MAXIMIZED_PREFIX + MAP_PAGE, null);\r\n }\r\n\r\n checkPermissions() {\r\n if (!this.authorizationService.getLoggedProfileName()) return;\r\n\r\n // Enable as opçoes do menu principal\r\n this.isHiddenButtonListAlert = !this.authorizationService.userHasPermission(this.permission.LIST_ALERTS);\r\n this.isHiddenButtonTrackingTeam = !this.authorizationService.userHasPermission(this.permission.VIEW_TRACKING_TEAM);\r\n this.isHiddenButtonListEvents = !this.authorizationService.userHasPermission(this.permission.LIST_EVENTS);\r\n this.isHiddenButtonListVerification = !this.authorizationService.userHasPermission(this.permission.LIST_VERIFICATIONS);\r\n this.isHiddenButtonListPatrols = !this.authorizationService.userHasPermission(this.permission.LIST_PATROLS);\r\n this.isHiddenButtonListChannels = !this.authorizationService.userHasPermission(this.permission.LIST_CHANELS);\r\n this.isHiddenButtonAdministration = this.authorizationService.isAdministrationGroupHidden();\r\n this.isHiddenButtonRegistration = this.authorizationService.isRegistrationGroupHidden();\r\n this.isHiddenButtonListPatrolTeam = !this.authorizationService.userHasPermission(this.permission.LIST_PATROL_TEAM_ADMINISTRATION);\r\n this.isHiddenButtonListUsers = !this.authorizationService.userHasPermission(this.permission.LIST_USERS_ADMINISTRATION);\r\n this.isHiddenButtonListProfiles = !this.authorizationService.userHasPermission(this.permission.LIST_PROFILE_ADMINISTRATION);\r\n this.isHiddenButtonListVehicles = !this.authorizationService.userHasPermission(this.permission.LIST_VEHICLE_ADMINISTRATION);\r\n this.isHiddenButtonListCompany = !this.authorizationService.userHasPermission(this.permission.LIST_COMPANY_ADMINISTRATION);\r\n this.isHiddenButtonListPlacement = !this.authorizationService.userHasPermission(this.permission.LIST_PLACEMENT_ADMINISTRATION);\r\n this.isHiddenButtonMainEvents = !this.authorizationService.userHasPermission(this.permission.LIST_MAIN_EVENT_ADMINISTRATION);\r\n this.isHiddenButtonObservedArea = !this.authorizationService.userHasPermission(this.permission.LIST_OBSERVED_AREA_ADMINISTRATION);\r\n this.isHiddenButtonForms = !this.authorizationService.userHasPermission(this.permission.LIST_FORMS_ADMINISTRATION);\r\n this.isHiddenButtonPoints = !this.authorizationService.userHasPermission(this.permission.LIST_POINTS_ADMINISTRATION);\r\n this.isHiddenButtonRegistrationGroup = !this.authorizationService.userHasPermission(this.permission.LIST_REGISTRATION_GROUP);\r\n\r\n this.hasUserProfile = true;\r\n }\r\n\r\n private subscribeToRegistrationUpdateWebsocket() {\r\n this.registrationUpdateWebsocket = Websocket.createRegistrationsUpdateWebsocket();\r\n this.registrationUpdateWebsocketSubscription = this.registrationUpdateWebsocket.stream().subscribe((message: Message) => {\r\n this.logger.debug(\"AppComponent.onRegistrationUpdateWebsocket()\", message.body);\r\n const entity = JSON.parse(message.body);\r\n if (!entity) {\r\n return;\r\n }\r\n if (entity.registrationType) {\r\n if (entity.registrationType == RegistrationType.PROFILE && entity.id == this.loggedUser.profileId) {\r\n this.openAlertLogoutDialog();\r\n return;\r\n }\r\n\r\n const dataInfo = this.singleDataService.getDataInfo(entity.registrationType); // SingleData envia no registrationType o nome da classe\r\n if (dataInfo) {\r\n this.singleDataCacheService.reloadValues(entity.registrationType);\r\n }\r\n else {\r\n this.entityCacheService.reloadObjects(entity.registrationType);\r\n }\r\n\r\n this.baseGoldenPanel.glEmitEvent(REGISTRATION_UPDATE_EVENT, { registrationType: entity.registrationType, id: entity.id });\r\n }\r\n }, (error) => {\r\n const errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Erro no servidor';\r\n this.logger.error(`AppComponent.onRegistrationUpdateWebsocket: ${errMsg}`);\r\n });\r\n }\r\n\r\n /**Método que apresenta o diálogo para logarse com outro usuário\r\n * Só disponível para administradores\r\n */\r\n onControlClickUser(){\r\n const userType = this.authorizationService.getLoggedUserType();\r\n if(!userType)\r\n return;\r\n\r\n if(userType != UserType.ADMINISTRATOR)\r\n return;\r\n\r\n const openLoginAsDialogSubscription = this.dialog.open(LoginAsComponent, {\r\n width: '500px',\r\n panelClass: 'sipd-modal'\r\n }).afterClosed().pipe(first()).subscribe((newUser: UserModel) => {\r\n if (newUser) {\r\n let newProfile = this.entityCacheService.getProfileById(newUser.profileId);\r\n if(newProfile){\r\n const permissionsMap = new Map(Object.entries(newProfile.permissions));\r\n if(newProfile.userType == UserType.ADMINISTRATOR || permissionsMap.has(Permission.ACCES_WEB)){\r\n newUser.token = this.loggedUser.token; // salva para o AuthInterceptor\r\n this.storageService.setLoginAsUser(newUser); //salva para o createSession\r\n this.storageService.setLocalUser(newUser); // salva para o AuthInterceptor\r\n this.storageService.setLocalProfile(newProfile);\r\n location.reload();\r\n }else{\r\n this.toastr.warning(\"Usuário sem acesso à Web, não é possivel mudar a sessão\");\r\n }\r\n }else{\r\n this.toastr.warning(\"Usuário sem perfil associado, não é possivel mudar a sessão\");\r\n return;\r\n }\r\n }\r\n },error => this.logger.error(error),\r\n () => openLoginAsDialogSubscription?.unsubscribe());\r\n }\r\n\r\n protected openAlertLogoutDialog() {\r\n const openConfirmationSubscription = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n disableClose: true,\r\n data:{\r\n msg: \"O seu perfil de usuário foi alterado!\\nLogout obrigatório\",\r\n title: 'Logout obrigatório',\r\n okLabel: 'Logout'\r\n }\r\n }).afterClosed().pipe(first()).subscribe( (result: boolean) => {\r\n if(result){\r\n // Não faz o logout completo\r\n this.authenticationService.logout();\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => openConfirmationSubscription?.unsubscribe());\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { FilterModel } from \"src/app/general/filter-component/filter.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\n export class FormFilterModel extends FilterModel {\r\n name: string;\r\n placement: string;\r\n inspectionType: string;\r\n }\r\n","import { PlacementModel } from './placement.model';\r\nimport { CompanyModel } from './company.model';\r\nimport { SimpleModel } from './simple.model';\r\nimport LanguageUtils from '../service/util/language-utils';\r\n\r\nexport class UserModel extends SimpleModel {\r\n login: string;\r\n cpf: string;\r\n mobilePhone: string;\r\n email: string; \r\n appAccess: boolean;\r\n patrolTeamId: string;\r\n company: CompanyModel;\r\n originPlacement: PlacementModel;\r\n placements: PlacementModel[];\r\n lastLogin: number;\r\n profileId: string;\r\n unique_name: string; // usado só para salvar o email da transpetro quando retorna do openId\r\n\r\n token: string; //usado para a comunicação com o auth\r\n password: string; // Usado somente na tela de login\r\n\r\n static getTitle(user: UserModel): string {\r\n if (!user) {\r\n return '';\r\n }\r\n\r\n let title = '';\r\n if (user.name) {\r\n title += user.name;\r\n }\r\n if (user.login) {\r\n title += ' (' + user.login + ')';\r\n }\r\n return title;\r\n }\r\n\r\n static getUserTitle(user) {\r\n if (!user) { return ''; }\r\n\r\n let title = '';\r\n if (user['name']) {\r\n title += user['name'];\r\n }\r\n\r\n if (user['login']) {\r\n title += ' (' + user['login'] + ')';\r\n }\r\n\r\n return title;\r\n } \r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['cpf'] = 'CPF';\r\n LanguageUtils.languageMap['mobilePhone'] = 'Celular';\r\n LanguageUtils.languageMap['profileId'] = 'Perfil';\r\n LanguageUtils.languageMap['profileName'] = 'Perfil';\r\n LanguageUtils.languageMap['appAccess'] = 'Acesso ao App';\r\n LanguageUtils.languageMap['originPlacement'] = 'Lotação de Origem';\r\n LanguageUtils.languageMap['placements'] = 'Outras Lotações Acessadas';\r\n LanguageUtils.languageMap['login'] = 'Login App';\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PatrolEditComponent } from './patrol-edit/patrol-edit.component';\r\nimport { PatrolListComponent } from './patrol-list/patrol-list.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { GeneralModule } from 'src/app/general/general.module';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { BooleanBRPipe } from 'src/app/general/boolean-br.pipe';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { PatrolFilterDialogComponent } from './patrol-filter-dialog/patrol-filter-dialog.component';\r\nimport { PatrolRepetitionDialogComponent } from './patrol-repetition-dialog/patrol-repetition-dialog.component';\r\nimport { PatrolRepetitionEditDialogComponent } from './patrol-repetition-edit-dialog/patrol-repetition-edit-dialog.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n PatrolEditComponent,\r\n PatrolListComponent,\r\n PatrolFilterDialogComponent,\r\n PatrolRepetitionDialogComponent,\r\n PatrolRepetitionEditDialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n FlexLayoutModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatDialogModule,\r\n MatTableModule,\r\n MatTabsModule,\r\n MatSortModule,\r\n MatButtonModule,\r\n MatRadioModule,\r\n MatPaginatorModule,\r\n MatTooltipModule,\r\n MatChipsModule,\r\n MatSelectModule,\r\n MatDividerModule,\r\n MatCheckboxModule,\r\n MatDatepickerModule,\r\n MatProgressSpinnerModule,\r\n MatToolbarModule,\r\n MatSlideToggleModule,\r\n MatCardModule,\r\n MatMenuModule,\r\n NgxMaskModule.forRoot(),\r\n GeneralModule\r\n ],\r\n providers: [\r\n BooleanBRPipe\r\n ]\r\n})\r\nexport class PatrolModule { }\r\n","export * from './authentication.service';\r\nexport * from './user-login.service';\r\n","import LanguageUtils from \"../service/util/language-utils\";\r\nimport { EntityModel } from \"./entity.model\";\r\n\r\nexport class ProfileModel extends EntityModel {\r\n name : string;\r\n userType: string; // TODO scuri Porque esse tipo não é UserType ???\r\n permissions: {};\r\n\r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['permissions'] = 'Permissões';\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {NGXLogger} from 'ngx-logger';\r\nimport {HttpClient, HttpErrorResponse, HttpParams} from '@angular/common/http';\r\nimport {EntityService} from './entity.service';\r\nimport {environment} from '../../../environments/environment';\r\n\r\nimport {EntityModel} from '../../model/entity.model';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { FilterModel } from '../../general/filter-component/filter.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChannelUsersService extends EntityService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.registrations_address}/channel-users`);\r\n }\r\n\r\n protected filteredLoadFromRestApi(pageIndex?: number, pageSize?: number, sort?: string, filter?: FilterModel): Observable {\r\n\r\n let params: HttpParams = new HttpParams();\r\n\r\n return super.loadFromRestApi(pageIndex, pageSize, sort, params);\r\n }\r\n\r\n protected handleError(error: HttpErrorResponse | any) { \r\n return throwError(error);\r\n }\r\n}\r\n","import { environment as defaultEnvironment } from './environment';\r\n\r\nexport const environmentLoader = new Promise((resolve, reject) => {\r\n var xmlhttp = new XMLHttpRequest(),\r\n method = 'GET',\r\n url = './assets/environments/environment.json';\r\n xmlhttp.open(method, url, true);\r\n xmlhttp.onload = function() {\r\n if (xmlhttp.status === 200) {\r\n resolve(JSON.parse(xmlhttp.responseText));\r\n } else {\r\n resolve(defaultEnvironment);\r\n }\r\n };\r\n xmlhttp.send();\r\n});\r\n","\r\nimport { UserModel } from './user.model';\r\nimport { GeoModel } from './geo.model';\r\nimport { ObservedAreaStatusDescription, ObservedAreaTypeDescription } from './enums.enum';\r\nimport * as moment from 'moment';\r\nimport LanguageUtils from '../service/util/language-utils';\r\n\r\nexport class ObservedAreaModel extends GeoModel {\r\n\r\n status: string;\r\n areaType: string;\r\n responsible: UserModel;\r\n creator: UserModel;\r\n createdAt: number;\r\n updatedAt: number;\r\n startDate: number;\r\n endDate: number;\r\n product: string;\r\n volume: string;\r\n volumeCheck: string;\r\n channel: string; // TODO scuri Deveria se chamar communicationChannel\r\n notes: string;\r\n band: string; // Nome da Faixa (não é id)\r\n duct: string;\r\n km: string;\r\n latLong: string;\r\n stretchStartKM: string;\r\n stretchEndKM: string;\r\n stretchStartLatLong: string;\r\n stretchEndLatLong: string;\r\n stretch: string;\r\n city: string;\r\n\r\n constructor(){\r\n super();\r\n this.type = 'ObservedArea';\r\n }\r\n\r\n public static getPopupContent(feature): string{\r\n const area = feature.properties;\r\n return `
    Área Observada
    \r\n
    ${ area.name }
    \r\n
    Status: ${ ObservedAreaStatusDescription[area.status] }
    \r\n
    Tipo: ${ ObservedAreaTypeDescription[area.areaType] }
    \r\n
    Responsável: ${ area.responsible?.name }
    \r\n
    Faixa: ${ area.band? area.band: '' }
    \r\n
    KM: ${ area.stretchStartKM && area.stretchEndKM? area.stretchStartKM + \" - \" + area.stretchEndKM : (area.km ? area.km : '') }
    \r\n
    Data de Início: ${moment( area.startDate ).format('DD/MM/YYYY HH:mm:ss') }
    \r\n
    Data de Fim: ${moment( area.endDate ).format('DD/MM/YYYY HH:mm:ss') }
    \r\n
    UF(s): ${ area.states }
    \r\n `;\r\n }\r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['creator'] = 'Cadastrador';\r\n LanguageUtils.languageMap['areaType'] = 'Tipo';\r\n LanguageUtils.languageMap['startDate'] = 'Data de Início';\r\n LanguageUtils.languageMap['endDate'] = 'Data de Fim';\r\n LanguageUtils.languageMap['responsible'] = 'Responsável';\r\n LanguageUtils.languageMap['product'] = 'Produto';\r\n LanguageUtils.languageMap['volume'] = 'Volume (m³)';\r\n LanguageUtils.languageMap['band'] = 'Faixa';\r\n LanguageUtils.languageMap['duct'] = 'Duto';\r\n LanguageUtils.languageMap['stretchStartKM'] = 'Início Trecho (KM)';\r\n LanguageUtils.languageMap['stretchEndKM'] = 'Fim Trecho (KM)';\r\n LanguageUtils.languageMap['stretchStartLatLong'] = 'Início Trecho (Lat, Long)';\r\n LanguageUtils.languageMap['stretchEndLatLong'] = 'Fim Trecho (Lat, Long)';\r\n LanguageUtils.languageMap['stretch'] = 'Trecho';\r\n LanguageUtils.languageMap['km'] = 'KM';\r\n LanguageUtils.languageMap['latLong'] = 'KM (Lat, Long)';\r\n LanguageUtils.languageMap['city'] = 'Cidade';\r\n LanguageUtils.languageMap['volumeCheck'] = 'Data Verificação de Volume';\r\n LanguageUtils.languageMap['channel'] = 'Canal de Comunicação';\r\n LanguageUtils.languageMap['notes'] = 'Notas';\r\n }\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { PlacementModel } from 'src/app/model/placement.model';\r\nimport { PlacementService } from 'src/app/service/model/placement.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EditComponent } from '../../../edit-component';\r\nimport { StorageService } from '../../../../service/storage-service';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { Permission } from 'src/app/model/enums.enum';\r\n\r\n@Component({\r\n selector: 'app-placement-edit',\r\n templateUrl: './placement-edit.component.html',\r\n styleUrls: ['../../../../app.component.scss', './placement-edit.component.scss']\r\n})\r\nexport class PlacementEditComponent extends EditComponent {\r\n\r\n constructor(logger: NGXLogger,\r\n placementService: PlacementService,\r\n dialog: MatDialog,\r\n toastr: ToastrService,\r\n protected storageService: StorageService,\r\n authorizationService: AuthorizationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, placementService, dialog, environment.PLACEMENT_MODEL_LABEL, environment.PLACEMENT_TITLE_LABEL, storageService,\r\n 'placements-edit', environment.PLACEMENT_GROUP_LABEL, toastr, authorizationService, goldenLayout, container);\r\n this.logger.debug('PlacementditComponent.constructor()');\r\n }\r\n\r\n createData(options?) {\r\n this.logger.debug('PlacementditComponent.createData()');\r\n\r\n this.model = new PlacementModel();\r\n this.view = {};\r\n\r\n this.glUpdateTabTitle(this.modelName + ': [NOVA]');\r\n }\r\n\r\n mapModelToView() {\r\n super.mapModelToView();\r\n\r\n if (this.view['name']) {\r\n this.glUpdateTabTitle(this.modelName + ': \"' + this.view['name'] + '\"');\r\n }\r\n }\r\n\r\n isRequiredFieldFilled(): boolean{\r\n if (!this.view['gs']) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n canEdit(): boolean {\r\n if (!this.model) return false;\r\n\r\n if (!this.authorizationService.userHasPermission(Permission.CREATE_EDIT_PLACEMENT)){\r\n return false\r\n }\r\n\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['gs']) names.push('Gerência');\r\n return names;\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n this.model['name'] = null;\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n {{modelName + (isCreating()? ': [NOVA]':'')}}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Gerência\r\n \r\n Campo Obrigatório\r\n \r\n \r\n Regional\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n\r\n
    ","/**\r\n * Arquivo para guardar dados constantes para a aplicação\r\n */\r\n\r\n// String default para users sem profile Id\r\nexport const NO_PROFILE_ID = \"No_profileId\";\r\n\r\n// Endpoint of api version\r\nexport const API_VERSION_ENDPOINT = 'api-version';\r\n\r\n// Endpoint get last signals\r\nexport const LAST_SIGNALS = 'last-signals';\r\nexport const LAST_OPERATION_SIGNALS = 'last-operation-signals';\r\nexport const LAST_VEHICLE_SIGNALS = 'vehicle/last-signals';\r\n\r\n// Registrations Service\r\nexport const DEFAULT_PAGE_INDEX = 0;\r\nexport const DEFAULT_SORT = 'createdAt,DESC';\r\nexport const MARKERS_PAGE_SIZE = 20;\r\nexport const CHANNEL_PAGE_SIZE = 30;\r\nexport const MEMBERS_PAGE_SIZE = 30;\r\nexport const LARGE_PAGE_SIZE = 20000; // Para quando queremos pegar todos os itens mas o backend default tem paginação\r\nexport const SORT_NAME_ASC = 'name,ASC';\r\nexport const SORT_PLATE_ASC = 'plate,ASC';\r\nexport const SORT_OPS_ASC = 'opsNumber,ASC';\r\nexport const SORT_TIMESTAMP_DESC = 'timestamp,DESC';\r\nexport const SORT_TIMESTAMP_ASC = 'timestamp,ASC';\r\nexport const SORT_RECEIVED_SERVER_TIMESTAMP_DESC = 'receivedServerTimestamp,DESC';\r\n\r\n// Usado nos filtros das páginas\r\nexport const FILTER_OPTION_ALL = 'ALL';\r\n\r\n// Usado para Upload Anexos, máximo 2MB\r\nexport const MAX_FILE_SIZE = 2097152;\r\n\r\nexport const USER_NOT_FOUND = 'Usuário Não Enc.'; // Sinal de App com usuário que foi removido, não temos como mapear o UserId em um nome/login\r\nexport const TEAM_NOT_FOUND = 'Equipe Não Enc.';\r\nexport const APP_SIGNAL_INVALID = 'Sinal de App sem Usuário';\r\n\r\n//Usado para separar cada campo de uma clase para evitar criar novas palavras ao concatenar antes das buscas\r\nexport const ESP = \"|\";\r\n\r\n// Usado para validar o tempo máximo na consulta de rastros no mapa\r\n// 360 => 24horas*15dias\r\nexport const MAX_TIME_OF_TRACE = 360;\r\n\r\n// Icons (todos esses são quadrados)\r\nexport const Icons = {\r\n ICON_URL_BASE : 'assets/icons/base.png',\r\n ICON_URL_BASE_VERIFICATION : 'assets/icons/base_verification.png',\r\n ICON_URL_CRITICAL_POINT : 'assets/icons/criticalpoint.png',\r\n ICON_URL_PROFESSIONAL : 'assets/icons/professional.png',\r\n ICON_URL_PROFESSIONAL_OFFLINE : 'assets/icons/professional_offline.png',\r\n ICON_URL_PROFESSIONAL_PATROL : 'assets/icons/professional_patrol.png',\r\n ICON_URL_PROFESSIONAL_PATROL_OFFLINE : 'assets/icons/professional_patrol_offline.png',\r\n ICON_URL_PROFESSIONAL_VERIFICATION : 'assets/icons/professional_verification.png',\r\n ICON_URL_PROFESSIONAL_VERIFICATION_OFFLINE : 'assets/icons/professional_verification_offline.png',\r\n ICON_URL_VEHICLE : 'assets/icons/vehicle.png',\r\n ICON_URL_VEHICLE_OFFLINE : 'assets/icons/vehicle_offline.png',\r\n ICON_URL_VEHICLE_PATROL : 'assets/icons/vehicle_patrol.png',\r\n ICON_URL_VEHICLE_PATROL_OFFLINE : 'assets/icons/vehicle_patrol_offline.png',\r\n ICON_URL_VEHICLE_VERIFICATION : 'assets/icons/vehicle_verification.png',\r\n ICON_URL_VEHICLE_VERIFICATION_OFFLINE : 'assets/icons/vehicle_verification_offline.png',\r\n ICON_URL_MARKER : 'assets/icons/marker.png',\r\n ICON_URL_STATE_MARKER : 'assets/icons/state_marker.png',\r\n ICON_URL_ALERT : 'assets/icons/alert.png',\r\n ICON_URL_POINT : 'assets/icons/point.png',\r\n ICON_URL_EVENT : 'assets/icons/event.png',\r\n};\r\n\r\n// Map\r\nexport const MapInfo = {\r\n // As cores das linhas foram escolhidas de forma a contrastarem entre si\r\n // e funcionarem bem em modo Ruas e Hibrido.\r\n // Existe uma indicação do cliente na escolha das cores\r\n BAND_COLOR: '#00C8FF', // Ciano um pouco mais escuro\r\n OILDUCT_COLOR: '#00B91A', // Verde um pouco mais escuro\r\n GASDUCT_COLOR: '#DF0202', // Vermelho um pouco mais escuro\r\n SIMF_COLOR: '#6d32a8', \r\n DUCT_WEIGHT: 5,\r\n LAYERS_ICON_SIZE: 32,\r\n\r\n PLANNED_ROUTE_LINE_COLOR: '#0505F7BF', // Roxo com transparencia\r\n PLANNED_ROUTE_LINE_WEIGHT: 8,\r\n\r\n TRACKING_LINE_COLOR: '#ff0000BF', // Vermelho com transparencia\r\n TRACKING_LINE_WEIGHT: 4, // pixels\r\n TRACKING_LINE_STYLE: '3 6',\r\n\r\n AUTO_ROUTE_LINE_COLOR: '#1E90FF', // Azul Claro\r\n AUTO_ROUTE_LINE_WEIGHT: 4,\r\n\r\n DRAW_LINE_COLOR: '#0000FF', // Azul\r\n DRAW_LINE_WEIGHT: 5,\r\n\r\n OBSERVED_AREA_LINE_COLOR: '#F9FF41', // Amarelo com transparencia\r\n OBSERVED_AREA_LINE_WEIGHT: 4,\r\n OBSERVED_AREA_LINE_STYLE: '6 12',\r\n\r\n HIGHLIGHT_LINE_WEIGHT: 32,\r\n HIGHLIGHT_LINE_COLOR: '#ff9500',\r\n HIGHLIGHT_FILL_COLOR: '#ff9500',\r\n HIGHLIGHT_CIRCLE_RADIUS: 200,\r\n HIGHLIGHT_OPACITY: 0.7,\r\n\r\n ROUTE_ICON_SIZE: 32,\r\n TRACKING_ICON_SIZE: 48,\r\n ICON_SIZE: 48,\r\n MARKER_ICON_SIZE: 52,\r\n\r\n DEFAULT_LATITUDE: -22.70562,\r\n DEFAULT_LONGITUDE: -43.26366,\r\n DEFAULT_ZOOM: 5,\r\n FIT_ZOOM: 16,\r\n\r\n BOUNDS_PAD_RATIO: 0.05, // Aumenta em 5% - note que pad não muda o bounds atual, retorna um novo bounds\r\n GLASS_PANEL_OPACITY: 0.5,\r\n GLASS_OBJECT_OPACITY: 0.4,\r\n \r\n REAL_TIME_SIGNALS_REFRESH_INTERVAL: 5000, // milliseconds (5 seconds)\r\n\r\n POPUP_MIN_WIDTH: 350,\r\n\r\n MAX_DISTANCE_KM: 0.5, // 500 metros de distância para dividir o desenho do rastro\r\n\r\n TIME_MARKER_DISTANCE: 0.05, // 50 metros - distância minima entre marcadores temporais\r\n\r\n // na documentação não explica muito esse parametro\r\n // 1 equivale a uma única reta estre os pontos\r\n // quando menor, menos simplifica\r\n // por exemplo 0.01 simplificação alta\r\n // por exemplo 0.001 simplificação média\r\n // por exemplo 0.0001 simplificação baixa\r\n SIMPLIFY_POLYLINE_TOL: 0.0003, // tolerância para simplificação de rota automatizada\r\n\r\n MAX_LAYER_RESULT: 2000, // Número máximo de resultados na busca de camadas\r\n\r\n ARCGIS_TOKEN: \"AAPKdf2b6c7b89af454399f8c0d31198b3b7R7JzNYwwf7-g0k000NMIjziT_VPhMSMnRwUZ2BSWe21Sk9Rprdm6Bj_64VkCdNH2\"\r\n};\r\n\r\n// Storage\r\nexport const LOCAL_USER_KEY = 'localUser';\r\nexport const LOGIN_AS_USER_KEY = 'localLoginAsUser'\r\nexport const POPOUT_DATA_KEY = 'popoutData';\r\nexport const PROFILE_USER_KEY = 'localProfile';\r\nexport const SPECIFICS_PLACEMENTS = 'specificPlacements';\r\n\r\n// Tracking\r\nexport const LOST_SIGNAL_LIMIT = 60; // seconds\r\nexport const SIGNAL_ICON_UPDATE_INTERVAL = 30000; // milliseconds (30 seconds)\r\nexport const LAST_SIGNALS_TRACKING_LIMIT = 90; // minutos (1 hora e meia)\r\n\r\n// PATROL\r\nexport const SHIFT_DURATION = 12; // Hours\r\n\r\nexport enum HttpError {\r\n UNAUTHORIZED = 401,\r\n FORBIDDEN = 403,\r\n NOT_FOUND = 404\r\n}\r\n\r\n// Mouse Enter time to show toastr for disabled button\r\nexport const MOUSE_ENTER_TIME = 800; // milliseconds\r\n\r\n// Golden Layout Events\r\nexport const PAGE_READY_PREFIX = 'pageReady-'; // Emitida no ngAfterViewInit para avisar que página já pode receber dados\r\nexport const FILL_DATA_PREFIX = 'fillData-'; // Emitida para preencher dados em uma página\r\nexport const PAGE_MAXIMIZED_PREFIX = 'pageMaximized-'; // Emitida pelo AppComp para forçar um calculo de resize no Mapa\r\nexport const LOCATION_UPDATE_PREFIX = 'locationUpdate-'; // Emitido pelo modo de edição de operação no mapa, para a edição da operação\r\n\r\n// TODO scuri remover no futuro e tratar diretamente of *_UPDATED_EVENT pelas edições e mapa\r\nexport const UPDATE_DATA_PREFIX = 'updateData-'; // Emitido pela lista para as edições e mapa, quando um item é atualizado pelo backend\r\n\r\n// Essa atualizações são redundantes em relação aos *_UPDATE_EVENT. Mas funcionam localmente independente do retorno do backend\r\nexport const SAVE_DATA_PREFIX = 'saveData-'; // Emitido pela edição para as listas e mapa quando um objeto é salvo\r\nexport const LIST_UPDATE_PREFIX = 'listUpdate-'; // Emitido pela lista, para outras listas se atualizarem\r\nexport const DELETE_DATA_PREFIX = 'deleteData-'; // Emitido pela edição ou lista para notificar listas ou edições que o item foi removido\r\n\r\nexport const ASSOCIATED_EVENT_UPDATE_PREFIX = 'associatedEventUpdate-'; // Emitido pela lista de eventos, para avisar a edição do evento associado\r\n\r\n// Essas acionam updateModelItem, que chama findAndUpdateModel, que emite UPDATE_DATA_PREFIX\r\nexport const REGISTRATION_UPDATE_EVENT = 'registrationUpdateEvent'; // Emitido pelo AppComp. quando chega uma atualização de cadastro do backend, escutado pelas listas\r\nexport const PATROL_UPDATE_EVENT = 'patrolUpdateEvent'; // Emitido pelo AppComp. quando chega uma atualização de ronda do backend, escutado pelas listas\r\nexport const VERIFICATION_UPDATE_EVENT = 'verificationUpdateEvent'; // Emitido pelo AppComp quando chega uma atualização de verificação do backend, escutado pelas listas\r\n// Eventos escutam diretamente a atualização do backend e acionam updateModelItem\r\n\r\nexport const MAP_PAGE = 'map';\r\nexport const MESSAGE_PAGE = 'message';\r\nexport const TRACKING_PAGE = 'tracking';\r\n\r\nexport const MAX_TAB_TITLE = 30;\r\n\r\nexport const LatLongPattern = {\r\n 'M': { pattern: new RegExp('[+-]') },\r\n '0': { pattern: new RegExp('-|[0-9]') },\r\n '9': { pattern: new RegExp('[0-9]') },\r\n 'V': { pattern: new RegExp('[,]') }\r\n};\r\n\r\n// Máscara para lat,long na América do Sul\r\n// Obrigatório inicio com '+' ou '-'. Obrigatório 6 casas decimais.\r\nexport const LatLongMask = \"M99.999999,-99.999999\";\r\n\r\n/** Constantes para pontos */\r\nexport const PointSourceValues = [\r\n 'Web'\r\n //'App' opcão pendente: quando implementarmos a AMO-1, haverá outra opção \"App\"\r\n];\r\n\r\nexport const AccessArrangementValues = [\r\n 'Cruzando',\r\n 'Paralelo (até 100m)',\r\n 'Paralelo (sobre a faixa ou colado)'\r\n];\r\n\r\nexport const AccessTypeValues = [\r\n 'Privado aberto',\r\n 'Privado com bloqueio',\r\n 'Privado com bloqueio noturno',\r\n 'Público'\r\n];\r\n\r\nexport const BlockTypeValues = [\r\n 'Porteira com cadeado aberto durante o dia',\r\n 'Porteira com cadeado fechado',\r\n 'Porteira com cadeado Transpetro',\r\n 'Tronqueira aberta',\r\n 'Tronqueira com cadeado aberto durante o dia',\r\n 'Tronqueira com cadeado fechado'\r\n];\r\n\r\nexport const RoadConditionValues = [\r\n 'Precário',\r\n 'Razoável'\r\n];\r\n\r\nexport const NumberOfOutputsValues = [\r\n 'Acesso sem saída',\r\n 'Com entrada e saída',\r\n 'Sem saída, mas com manobra'\r\n];\r\n\r\nexport const TrafficVolumeValues = [\r\n 'Pequeno',\r\n 'Médio',\r\n 'Alto',\r\n 'Apenas Moradores'\r\n];\r\n\r\nexport const TrafficPossibilityValues = [\r\n 'Carreta Bi-trem',\r\n 'Caminhão Toco',\r\n 'Caminhão Truck'\r\n];\r\n\r\nexport const ResidencesValues = [\r\n 'Até 2',\r\n 'De 2 a 10',\r\n 'Mais de 10',\r\n 'Nenhuma',\r\n];\r\n\r\nexport const VideoMonitoringValues = [\r\n 'Sinal telefônico',\r\n 'Energia',\r\n 'Iluminação pública'\r\n];\r\n\r\nexport const EvaluationValues = [\r\n 'Positivo',\r\n 'Negativo',\r\n 'Indefinido'\r\n];\r\n\r\nexport const AreaUnderControlValues = [\r\n 'Estado',\r\n 'Facções criminosas',\r\n 'Paramilitares'\r\n];\r\n\r\nexport const VulnerabilityViewValues = [\r\n 'Alta',\r\n 'Baixa',\r\n 'Moderada'\r\n];\r\nexport const CategoryValues = [\r\n 'Acesso',\r\n 'Corpos hídricos',\r\n 'Pontos vulneráveis'\r\n];\r\n\r\nexport const AccessCriticalityValues = [\r\n 'Alta',\r\n 'Baixa',\r\n 'Moderada'\r\n];\r\n\r\n/** Constantes para formulários */\r\nexport const InspectionTypeValues = [\r\n 'Suspeita Furto',\r\n 'Conservação da Faixa',\r\n 'Área de Válvula',\r\n 'Inspeção Canina',\r\n 'Levantamento de Campo',\r\n 'Levantamento de Corpo Hídrico',\r\n 'Derivação Clandestina'\r\n];\r\n\r\n","import FieldUtils from '../service/util/field-utils';\r\nimport { SingleDataModel } from './singleData.model';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nexport class GeoModel extends SingleDataModel{\r\n // GeoEntity\r\n identifier: string;\r\n description: string;\r\n geometry: any; // {coordinates: [number, number] | [number, number][] | [], type: string}; // types: 'Point' (único ponto) | 'LineString'/'Polygon'/'MultiPoint' (array de pontos) | 'GeometryCollection' (array de geometry)\r\n\r\n // StatesGeoEntity\r\n states: string[];\r\n\r\n // LatLongGeoEntity - DC, DeliveryPoint, Refinary, Terminal, Valve, KilometerMarkModel\r\n latLong: string;\r\n\r\n simple:boolean = true;\r\n\r\n public static getLatLong(geo){\r\n let latLong: string;\r\n if (geo.latLong){\r\n latLong = FieldUtils.parseLatLong(geo.latLong);\r\n }\r\n else if (geo.lat && geo.lng){\r\n latLong = FieldUtils.coordToString(geo.lat) + ',' + FieldUtils.coordToString(geo.lng);\r\n }\r\n else {\r\n latLong = '';\r\n }\r\n return latLong;\r\n }\r\n\r\n public static getPopupContent(feature, search: boolean = false): string{\r\n if (feature && feature.properties){\r\n const geo = feature.properties as GeoModel;\r\n \r\n let typeValues = {Refinary: \"Refinaria\", DeliveryPoint: \"Ponto de Entrega ou Estação\", Terminal: \"Terminal\"};\r\n let states: string = geo.states ? geo.states.toString() : '';\r\n let band: string = (geo as any).band;\r\n let latLong: string = GeoModel.getLatLong(geo);\r\n let contents: string = `
    ${ typeValues[geo.type] }
    \r\n
    ${ geo.name }
    \r\n ${band? '
    Faixa:' + band + '
    ': ''}\r\n
    UF(s): ${states}
    \r\n
    Lat, Long: ${!search? latLong: ''}
    \r\n `;\r\n if (!environment.showPopupLayerTables || geo.description == null || geo.description === \"\") { \r\n return contents;\r\n }\r\n else {\r\n return contents + \"
    \" + geo.description\r\n }\r\n }\r\n\r\n return `
    Sem Dados
    `;\r\n }\r\n\r\n public isSimple() {\r\n return this.simple;\r\n }\r\n}\r\n","import { RegistrationType, UserType, UserTypeDescription } from 'src/app/model/enums.enum';\r\nimport { Component, Inject, OnInit, OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { UserService } from 'src/app/service/model/user.service';\r\nimport { UserModel } from '../../../../model/user.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ConfirmationDialogComponent } from 'src/app/general/confirmation-dialog/confirmation-dialog.component';\r\nimport { PatrolTeamService } from 'src/app/service/model/patrol.team.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorizationService } from '../../../../service/authorization/authorization.service';\r\nimport { StorageService } from '../../../../service/storage-service';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { EntityModel } from '../../../../model/entity.model';\r\nimport { PatrolService } from '../../../../service/model/patrol.service';\r\nimport { PatrolFilterModel } from '../../../patrol/patrol-filter-dialog/patrol.filter.model';\r\nimport { PatrolModel } from 'src/app/model/patrol.model';\r\nimport { VerificationFilterModel } from 'src/app/pages/verification/verification-filter-dialog/verification.filter.model';\r\nimport { VerificationService } from 'src/app/service/model/verification.service';\r\nimport { VerificationModel } from 'src/app/model/verification.model';\r\nimport { PlacementModel } from 'src/app/model/placement.model';\r\nimport { DEFAULT_PAGE_INDEX, ESP, LARGE_PAGE_SIZE, MAP_PAGE, SORT_NAME_ASC } from 'src/app/common/constants';\r\nimport { ProfileModel } from 'src/app/model/profile.model';\r\nimport { RegistrationListComponent } from '../../registration-list-component';\r\nimport { first } from 'rxjs/operators';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SAVE_DATA_PREFIX, DELETE_DATA_PREFIX } from '../../../../common/constants';\r\nimport { PatrolTeamModel } from '../../../../model/patrolteam.model';\r\nimport { MarkersService } from 'src/app/service/model/markers.service';\r\n\r\n@Component({\r\n selector: 'app-user-list',\r\n templateUrl: './user-list.component.html',\r\n styleUrls: ['../../../../app.component.scss', '../../../list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class UserListComponent extends RegistrationListComponent implements OnInit, OnDestroy {\r\n\r\n userTypeDescription = UserTypeDescription;\r\n profileMap: Map = new Map();\r\n patrolTeamMap: Map = new Map();\r\n\r\n private reloadProfilesSubscription: Subscription;\r\n private reloadPatrolTeamsSubscription: Subscription;\r\n \r\n constructor(logger: NGXLogger,\r\n protected userService: UserService,\r\n dialog: MatDialog,\r\n protected patrolTeamService: PatrolTeamService,\r\n private patrolService: PatrolService,\r\n private verificationService: VerificationService,\r\n private markerService: MarkersService,\r\n public entityCacheService: EntityCacheService,\r\n protected changeDetector: ChangeDetectorRef,\r\n protected toastr: ToastrService,\r\n public authorizationService: AuthorizationService,\r\n protected storageService: StorageService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, userService, dialog, 'users', environment.USERS_GROUP_LABEL, environment.USERS_TITLE_LABEL,\r\n environment.USERS_MODEL_LABEL, storageService, changeDetector, toastr, goldenLayout, container);\r\n logger.debug('UserListComponent.constructor()');\r\n this.subscribeToSavePlacementsData();\r\n this.subscribeToDeletePlacementsData();\r\n this.subscribeToSaveCompaniesData();\r\n this.registrationType = RegistrationType.USER;\r\n this.sortOptions = SORT_NAME_ASC;\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.logger.debug('UserListComponent.ngOnInit()');\r\n\r\n this.loadProfilesFromServer();\r\n\r\n this.loadPatrolTeamsFromServer();\r\n\r\n this.displayedColumns = ['select',\r\n 'name',\r\n 'originPlacement',\r\n 'company.name',\r\n 'email',\r\n 'login',\r\n 'cpf',\r\n 'profileId',\r\n 'mobilePhone',\r\n 'appAccess',\r\n 'patrolTeamId'];\r\n\r\n this.loadRecordsFromServer();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this.reloadProfilesSubscription?.unsubscribe();\r\n this.reloadPatrolTeamsSubscription?.unsubscribe();\r\n }\r\n\r\n loadRecordsFromServer(): void {\r\n this.logger.debug('UserListComponent.loadRecordsFromServer()');\r\n\r\n // Carrega para todas as lotações, filtra a lista depois\r\n this.filterModel.placements = [];\r\n \r\n super.loadRecordsFromServer();\r\n }\r\n\r\n loadProfilesFromServer(){\r\n let _this = this; // Necessário por causa do contexto das callacks\r\n const onProfilesLoad = function() {\r\n _this.profileMap.clear();\r\n _this.entityCacheService.getAllProfiles().forEach(profile => {\r\n _this.profileMap.set(profile.id, profile);\r\n });\r\n };\r\n this.entityCacheService.loadProfiles(this.loadingListService, onProfilesLoad);\r\n this.reloadProfilesSubscription = this.entityCacheService.onProfilesReload().subscribe(onProfilesLoad);\r\n }\r\n\r\n loadPatrolTeamsFromServer(){\r\n let _this = this; // Necessário por causa do contexto das callacks\r\n const onPatrolTeamsLoad = function() {\r\n _this.patrolTeamMap.clear();\r\n _this.entityCacheService.getPatrolTeams().forEach(team => {\r\n _this.patrolTeamMap.set(team.id, team);\r\n });\r\n };\r\n this.entityCacheService.loadPatrolTeams(this.loadingListService, onPatrolTeamsLoad);\r\n this.reloadPatrolTeamsSubscription = this.entityCacheService.onUsersReload().subscribe(onPatrolTeamsLoad);\r\n }\r\n\r\n public subscribeToSavePlacementsData() {\r\n // A lista escuta a edição correspondente para saber se algo foi modificado\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + 'placements-edit', (data) => {\r\n this.loadRecordsFromServer();\r\n });\r\n }\r\n\r\n public subscribeToDeletePlacementsData() {\r\n // A lista escuta a edição correspondente para saber se algo foi modificado\r\n this.glSubscribeEvent(DELETE_DATA_PREFIX + 'placements-edit', (data) => {\r\n this.loadRecordsFromServer();\r\n });\r\n }\r\n\r\n public subscribeToSaveCompaniesData() {\r\n // A lista escuta a edição correspondente para saber se algo foi modificado\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + 'companies-edit', (data) => {\r\n this.loadRecordsFromServer();\r\n });\r\n }\r\n\r\n postLoadProcess(): void {\r\n // Somente administradores podem ver outros administradores\r\n if (!this.authorizationService.isAdmin()) {\r\n this.model = this.model.filter(user => !this.entityCacheService.isAdminProfile(user['profileId']));\r\n }\r\n\r\n this.model.forEach((user: UserModel) => {\r\n if (this.entityCacheService.isAdminProfile(user['profileId'])) {\r\n // Administradores acessam todas as lotações\r\n user.placements = this.entityCacheService.getPlacements();\r\n }\r\n\r\n if (!user.originPlacement && user.placements && user.placements.length == 1) {\r\n user.originPlacement = user.placements[0];\r\n }\r\n });\r\n \r\n let specificPlacementsIds: string[] = this.storageService.getSpecificPlacementIds();\r\n if(specificPlacementsIds.length > 0){\r\n this.model = this.model.filter((user: UserModel) => specificPlacementsIds.includes(user.originPlacement?.id));\r\n }\r\n\r\n this.pageLength = this.model.length;\r\n }\r\n\r\n /**\r\n * Indica se o botão de envio de senha deve ou não ser escondido para aquele usuário a ser editado,\r\n * dependendo do perfil do usuário logado.\r\n */\r\n isSendPasswordButtonDisabledForUser(userToBeEdited: EntityModel): boolean {\r\n return !userToBeEdited\r\n || (!this.getAppAccess(userToBeEdited as UserModel)\r\n || !(userToBeEdited as UserModel).email\r\n || (userToBeEdited as UserModel).email === '');\r\n }\r\n\r\n isSendPasswordButtonHiddenForUser(): boolean {\r\n return !this.authorizationService.isSendingPasswordToUserAllowed();\r\n }\r\n\r\n /**\r\n * Método sobrescrito da classe pai para chamar a mesma lógica de deleção em massa\r\n * @param row UserModel\r\n * @param identifier Identificador do usuário\r\n * @param event Evento\r\n */\r\n onDeleteClick(row: EntityModel, identifier: string, event: any) {\r\n this.onDeleteManyClick([row]);\r\n }\r\n\r\n /**\r\n * Ação para remover vários usuários.\r\n */\r\n onDeleteManyClick(rows: EntityModel[]) {\r\n if (!rows?.length) {\r\n return;\r\n }\r\n\r\n let usersToDelete: EntityModel[] = [];\r\n rows.forEach(row => {\r\n if (this.canDelete(row)) {\r\n usersToDelete.push(row);\r\n }\r\n });\r\n\r\n if (usersToDelete.length == 0){\r\n this.toastr.warning(\"Nenhum usuário pode ser removido, perfil não permite.\");\r\n return;\r\n }\r\n if (usersToDelete.length < rows.length){\r\n this.toastr.warning(\"Alguns usuários não podem ser removidos, perfil não permite.\");\r\n return;\r\n }\r\n\r\n const questionMsg = usersToDelete.length > 1 ?\r\n `Tem certeza que deseja remover o(s) ${usersToDelete.length} usuário(s)?` :\r\n `Tem certeza que deseja remover ${this.getUserNameLoginTitle(usersToDelete[0])}?`;\r\n\r\n // Cópia do list-component.onDeleteClick\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: questionMsg,\r\n title: 'Confirmação',\r\n okLabel: 'Remover',\r\n identifier: null,\r\n showIdentifier: false\r\n }\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.reloadUsersAndDeleteUsers(usersToDelete);\r\n this.postListDeleteProcess(usersToDelete);\r\n }\r\n });\r\n }\r\n\r\n private reloadUsersAndDeleteUsers(userListToDelete: EntityModel[]) {\r\n const ids = userListToDelete.map(u => u.id);\r\n // Passo 1: Recuperar a versão mais atual dos usuários a serem removidos no banco\r\n this.loadingOn();\r\n this.userService.loadUsersByIds(ids).pipe(first()).subscribe((resultList: UserModel[]) => {\r\n // Verificar se os usuários têm equipe\r\n const usersInTeams = resultList.filter(u => !!u.patrolTeamId && u.profileId === this.getProfessionalProfileId());\r\n\r\n if (usersInTeams?.length) {\r\n this.checkTeamListInPatrolsAndDeleteUsers(resultList);\r\n }else{\r\n this.deleteSelectedEntities(resultList);\r\n }\r\n },\r\n error => {\r\n this.logger.error(`Erro ao obter a última versão dos usuários ${ids}: ${JSON.stringify(error)}`);\r\n this.toastr.error('Erro ao obter a última versão dos usuários', 'Erro');\r\n },\r\n () => {\r\n this.loadingOff();\r\n });\r\n }\r\n\r\n private checkTeamListInPatrolsAndDeleteUsers(userList: UserModel[]) {\r\n if (!userList?.length) {\r\n return;\r\n }\r\n const filter: PatrolFilterModel = new PatrolFilterModel();\r\n const patrolTeamIdList = userList.map(u => u.patrolTeamId);\r\n filter.patrolTeams = patrolTeamIdList;\r\n filter.status = this.patrolService.listActiveStatus();\r\n\r\n this.loadingOn();\r\n this.patrolService.loadFilteredListFromRestApi(DEFAULT_PAGE_INDEX, LARGE_PAGE_SIZE, null, filter).pipe(first()).subscribe((patrolList: PatrolModel[]) => {\r\n if (patrolList?.length) {\r\n const questionMsg = patrolList.length > 1 ?\r\n `Não é possivel remover os usuários, pois suas equipes estão em rondas não concluídas.` :\r\n `Não é possivel remover o usuário, pois sua equipe está em ronda não concluída.`;\r\n\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: questionMsg ,\r\n title: 'Atenção!',\r\n hideOkButton: true,\r\n cancelLabel: 'Fechar'\r\n }\r\n });\r\n } else {\r\n // A equipe do usuário não está em nenhuma ronda, portanto verificar se está em uma verificação e seguir\r\n this.checkTeamListInVerificationsAndDeleteUsers(userList);\r\n }\r\n },\r\n error => {\r\n this.logger.error(`Erro ao verificar se os usuários estão em uma equipe com ronda não concluída: ${JSON.stringify(error)}`);\r\n this.toastr.error('Erro ao verificar rondas da equipe do(s) usuário(s)', 'Erro');\r\n },\r\n () => {\r\n this.loadingOff();\r\n });\r\n }\r\n\r\n public postListDeleteProcess(rows: EntityModel[]): void {\r\n rows.forEach( row => {\r\n const user = row as UserModel;\r\n if (user.patrolTeamId) {\r\n this.markerService.sendTeamInfoMessage(this.loggedUser, user.patrolTeamId, \"Usuário \\\"\" + user.name + \"\\\" removido da Equipe pois foi removido.\");\r\n }\r\n });\r\n }\r\n\r\n private checkTeamListInVerificationsAndDeleteUsers(userList: UserModel[]) {\r\n if (!userList?.length) {\r\n return;\r\n }\r\n const filter: VerificationFilterModel = new VerificationFilterModel();\r\n const patrolTeamIdList = userList.map(u => u.patrolTeamId);\r\n filter.patrolTeams = patrolTeamIdList;\r\n filter.status = this.verificationService.listActiveStatus();\r\n\r\n this.loadingOn();\r\n this.verificationService.loadFilteredListFromRestApi(DEFAULT_PAGE_INDEX, LARGE_PAGE_SIZE, null, filter).pipe(first()).subscribe((verificationList: VerificationModel[]) => {\r\n if (verificationList?.length) {\r\n const questionMsg = verificationList.length > 1 ?\r\n `Não é possivel remover os usuários, pois suas equipes estão em verificações não concluídas.` :\r\n `Não é possivel remover o usuário, pois sua equipe está em verificação não concluída.`;\r\n\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: questionMsg ,\r\n title: 'Atenção!',\r\n hideOkButton: true,\r\n cancelLabel: 'Fechar'\r\n }\r\n });\r\n } else {\r\n // A equipe do usuário não está em nenhuma verificação, portanto o usuário pode ser removido da sua equipe.\r\n this.deleteSelectedEntities(userList);\r\n }\r\n },\r\n error => {\r\n this.logger.error(`Erro ao verificar se os usuários estão em uma equipe com verificação não concluída: ${JSON.stringify(error)}`);\r\n this.toastr.error('Erro ao verificar as verificações da(s) equipe(s) do(s) usuário(s)', 'Erro');\r\n },\r\n () => {\r\n this.loadingOff();\r\n });\r\n }\r\n\r\n onPasswordSendClick(row: EntityModel) {\r\n if (!(row as UserModel).email) {\r\n this.toastr.warning('Não foi possível enviar o email. Verifique se o usuário tem email válido cadastrado.', 'Atenção!');\r\n return;\r\n }\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: 'Enviar a senha por email deste usuário?',\r\n title: 'Enviar Senha',\r\n okLabel: 'Enviar',\r\n identifier: (row as UserModel).login + ' - ' + (row as UserModel).email,\r\n showIdentifier: true\r\n }\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.logger.debug('ListComponent.onPasswordSendClick()');\r\n this.userService.sendEmailWithPassword((row as UserModel)).pipe(first()).subscribe( (user: UserModel) => {\r\n if(user!=null){\r\n this.logger.debug(`Email enviado para : ${user.email}`);\r\n this.toastr.success('Senha enviada com sucesso para o usuário: ' + user.login);\r\n }else{\r\n this.toastr.error('Não foi possível enviar o email. Verifique se o usuário tem email válido cadastrado.');\r\n }\r\n }, error => {\r\n this.toastr.warning('Não foi possível enviar o email. Verifique se o usuário tem email válido cadastrado.');\r\n this.logger.error(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Retorna a entidade em formato string, contendo só os campos visualizados na interface, para filtro.\r\n */\r\n protected getStringEntityForFilter(user: UserModel): string {\r\n const userName = super.lowerAndTrimText(user.name);\r\n const company = user.company? super.lowerAndTrimText(user.company.name): '';\r\n const login = super.lowerAndTrimText(user.login);\r\n const cpf = super.lowerAndTrimText(user.cpf);\r\n const mobile = super.lowerAndTrimText(user.mobilePhone);\r\n const email = super.lowerAndTrimText(user.email);\r\n const userProfile = super.lowerAndTrimText(this.getProfileName(user.profileId));\r\n const originPlacement = (user.originPlacement) ? super.lowerAndTrimText(user.originPlacement.name) : '';\r\n const team = this.getTeam(user.patrolTeamId);\r\n return userName + ESP + company + ESP + login + ESP + cpf + ESP + mobile + ESP + email + ESP + userProfile + ESP + originPlacement + team;\r\n }\r\n\r\n protected getAppAccess(user: UserModel): boolean {\r\n return user.appAccess;\r\n }\r\n\r\n getPropertyByPath(item: Object, property: string){\r\n switch (property) {\r\n case 'appAccess':\r\n {\r\n return item['appAccess'] ? 'Sim' : 'Não';\r\n }\r\n case 'patrolTeamId':\r\n {\r\n return this.lowerAndTrimText(this.getTeam(item['patrolTeamId']));\r\n }\r\n case 'profileId':\r\n {\r\n return this.lowerAndTrimText(this.getProfileName(item['profileId']));\r\n }\r\n case 'originPlacement':\r\n {\r\n return item['originPlacement'] ? this.lowerAndTrimText(item['originPlacement']['name']) : '';\r\n }\r\n default: return super.getPropertyByPath(item, property);\r\n }\r\n }\r\n\r\n /**\r\n * Verifica se o usuário possui apenas permiso para editar \"alguns perfis\".\r\n * Em caso positivo, os botões para editar usuário são desabilitados para usuários que não tiverem o mesmo perfil do usuário e,\r\n * não estiverem marcados na seleção de perfis que o usuário pode alterar\r\n */\r\n canCopy(user : any){\r\n if(user && this.authorizationService.canEditUser((user as UserModel).profileId))\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n/**\r\n * Verifica se o usuário possui apenas permissão para editar \"alguns profiles\".\r\n * Em caso positivo, os botão para remover usuário é desabilitados para usuários que não tiverem o mesmo perfil do usuário e,\r\n * não estiverem marcados na seleção de perfis que o usuário pode alterar\r\n */\r\n canDelete(user : any){\r\n if(user && this.authorizationService.canDeleteUser((user as UserModel).profileId))\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n getProfileName(profileId):string {\r\n let profile = this.profileMap.get(profileId);\r\n if (profile) return profile.name;\r\n return null;\r\n }\r\n\r\n getProfessionalProfileId():string{\r\n let profileId;\r\n this.profileMap.forEach((profile) => {\r\n if (profile.userType === UserType.PROFESSIONAL)\r\n profileId = profile.id;\r\n });\r\n return profileId;\r\n }\r\n\r\n onHistoricalTrackingClick(user: UserModel ) {\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingUser: user});\r\n }\r\n\r\n onHistoricalTrackingManyClick(){\r\n let historicalTrackingUserList = [];\r\n this.selection.selected.forEach( (user: UserModel) => {\r\n historicalTrackingUserList.push(user);\r\n });\r\n\r\n // Note que depois de abrir o mapa pode descobrir que não tem sinais\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingUserList: historicalTrackingUserList});\r\n }\r\n\r\n getTeam(patrolTeamId: string) {\r\n if (patrolTeamId){\r\n let team: PatrolTeamModel = this.patrolTeamMap.get(patrolTeamId);\r\n return team ? team.name : \"não encontrada\";\r\n }\r\n else return \"\";\r\n }\r\n}\r\n","
    \r\n
    \r\n
    {{title}}
    [ {{getListCount()}} ]\r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Nome {{element?.name}} Lotação de Origem {{element?.originPlacement?.name}} Empresa {{element?.company?.name}} E-mail {{element?.email}} Chave / Login {{element?.login}} CPF {{element?.cpf}} Perfil {{ getProfileName(element?.profileId) }} Celular {{element?.mobilePhone}} Acesso ao App {{ getAppAccess(element)? 'Sim': 'Não' }} Equipe {{ getTeam(element?.patrolTeamId) }}
    \r\n\r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n","import { Component, Inject } from '@angular/core';\r\nimport { EditComponent } from '../../../edit-component';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { CompanyService } from 'src/app/service/model/company.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { environment } from 'src/environments/environment';\r\nimport { CompanyModel } from 'src/app/model/company.model';\r\nimport { StorageService } from '../../../../service/storage-service';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { Permission } from 'src/app/model/enums.enum';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\n\r\n@Component({\r\n selector: 'app-company-edit',\r\n templateUrl: './company-edit.component.html',\r\n styleUrls: ['../../../../app.component.scss', './company-edit.component.scss']\r\n})\r\nexport class CompanyEditComponent extends EditComponent {\r\n\r\n constructor(logger: NGXLogger,\r\n companyService: CompanyService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n dialog: MatDialog,\r\n toastr: ToastrService,\r\n public entityCacheService: EntityCacheService,\r\n protected storageService: StorageService,\r\n authorizationService: AuthorizationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, companyService, dialog, environment.COMPANY_MODEL_LABEL, environment.COMPANY_TITLE_LABEL, storageService,\r\n 'companies-edit', environment.COMPANY_GROUP_LABEL, toastr, authorizationService, goldenLayout, container);\r\n this.logger.debug('CompanyEditComponent.constructor()');\r\n }\r\n\r\n createData(options?) {\r\n this.logger.debug('CompanyEditComponent.createData()');\r\n\r\n this.model = new CompanyModel();\r\n this.view = {};\r\n\r\n this.glUpdateTabTitle(this.modelName + ': [NOVA]');\r\n }\r\n\r\n loadFormOptionsData(): void {\r\n this.logger.debug('CompanyEditComponent.loadFormOptionsData()');\r\n this.entityCacheService.loadPlacements(this.loadingListService);\r\n\r\n const metadatas: string[] = [\r\n \"State\"];\r\n\r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n\r\n canEdit(): boolean {\r\n if (!this.model) return false;\r\n\r\n if (!this.authorizationService.userHasPermission(Permission.CREATE_EDIT_COMPANY)){\r\n return false\r\n }\r\n\r\n return true;\r\n }\r\n\r\n isRequiredFieldFilled(): boolean{\r\n if (!this.view['name'] ||\r\n !this.view['placement']) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['name']) names.push('Nome');\r\n if (!this.view['placement']) names.push('Lotação');\r\n return names;\r\n }\r\n\r\n mapModelToView() {\r\n super.mapModelToView();\r\n\r\n if (this.view['name']) {\r\n this.glUpdateTabTitle(this.modelName + ': \"' + this.view['name'] + '\"');\r\n }\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n this.model['name'] = null;\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n {{modelName + (isCreating()? ': [NOVA]':'')}}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Nome\r\n \r\n Campo Obrigatório\r\n \r\n \r\n Endereço\r\n \r\n \r\n \r\n Telefone\r\n \r\n Entre apenas com números, espaço ou hífen\r\n \r\n \r\n E-mail\r\n \r\n Formato de e-mail inválido\r\n \r\n \r\n Website\r\n \r\n \r\n \r\n CNPJ\r\n \r\n Entre apenas com números, ponto, barra e hífen\r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Observações\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n","import { Component, Inject, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { VehicleService } from 'src/app/service/model/vehicle.service';\r\nimport { VehicleModel } from 'src/app/model/vehicle.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { EditComponent } from '../../../edit-component';\r\nimport { environment } from 'src/environments/environment';\r\nimport { StorageService } from '../../../../service/storage-service';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { Permission } from 'src/app/model/enums.enum';\r\nimport { EntityCacheService } from '../../../../service/model/entity.cache.service';\r\nimport { MAP_PAGE } from 'src/app/common/constants';\r\n\r\n@Component({\r\n selector: 'app-vehicle-edit',\r\n templateUrl: './vehicle-edit.component.html',\r\n styleUrls: ['../../../../app.component.scss', './vehicle-edit.component.scss']\r\n})\r\nexport class VehicleEditComponent extends EditComponent implements OnInit {\r\n \r\n \r\n constructor(logger: NGXLogger,\r\n vehicleService: VehicleService,\r\n dialog: MatDialog,\r\n toastr: ToastrService,\r\n protected storageService: StorageService,\r\n public entityCacheService: EntityCacheService,\r\n authorizationService: AuthorizationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, vehicleService, dialog, environment.VEHICLES_MODEL_LABEL, environment.VEHICLES_TITLE_LABEL, storageService,\r\n 'vehicles-edit', environment.VEHICLES_GROUP_LABEL, toastr, authorizationService, goldenLayout, container);\r\n this.logger.debug('VehicleEditComponent.constructor()');\r\n }\r\n\r\n createData(options?) {\r\n this.logger.debug('VehicleEditComponent.createData()');\r\n\r\n this.model = new VehicleModel();\r\n this.view = {};\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n this.model['plate'] = null;\r\n }\r\n\r\n loadFormOptionsData() {\r\n this.logger.debug('VehicleEditComponent.loadFormOptionsData()');\r\n this.entityCacheService.loadCompanies(this.loadingListService);\r\n }\r\n\r\n mapModelToView() {\r\n super.mapModelToView();\r\n\r\n if (this.view['plate']) {\r\n this.glUpdateTabTitle(this.modelName + ': ' + this.view['plate']);\r\n }\r\n }\r\n\r\n canEdit(): boolean {\r\n if (!this.model) return false;\r\n\r\n if (!this.authorizationService.userHasPermission(Permission.CREATE_EDIT_VEHICLE)){\r\n return false\r\n }\r\n\r\n return true;\r\n }\r\n\r\n isRequiredFieldFilled(): boolean{\r\n if (!this.view['plate'] ||\r\n !this.view['company']) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['plate']) names.push('Placa');\r\n if (!this.view['company']) names.push('Empresa');\r\n return names;\r\n }\r\n\r\n onHistoricalTrackingClick() {\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingVehicle: this.model});\r\n }\r\n}\r\n","
    \r\n
    \r\n\r\n
    \r\n {{modelName + (isCreating()? ': [NOVO]':'')}}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Placa\r\n \r\n Campo Obrigatório\r\n \r\n \r\n Carro\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Observações\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { environment } from '../../../../environments/environment';\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\nimport { UserModel } from 'src/app/model/user.model';\r\n\r\n@Injectable({ \r\n providedIn: 'root' \r\n})\r\nexport class UserLoginService {\r\n private _user: BehaviorSubject;\r\n public readonly user$: Observable;\r\n\r\n constructor(private http: HttpClient) {\r\n this._user = new BehaviorSubject({} as UserModel);\r\n this.user$ = this._user.asObservable();\r\n }\r\n\r\n setUsuario(loggedUser: UserModel) {\r\n this._user.next(loggedUser);\r\n }\r\n\r\n getById(id: number) {\r\n return this.http.get(`${environment.settings.auth_address}/login-users/${id}`);\r\n }\r\n\r\n update(loggedUser: UserModel) {\r\n return this.http.put(`${environment.settings.auth_address}/login-users/${loggedUser.id}`, loggedUser);\r\n }\r\n\r\n delete(id: number) {\r\n return this.http.delete(`${environment.settings.auth_address}/login-users/${id}`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { API_VERSION_ENDPOINT } from '../../common/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RegistrationService {\r\n protected readonly apiUrl: string = `${environment.settings.registrations_address}/registrations`;\r\n\r\n constructor(private httpClient: HttpClient) {\r\n }\r\n\r\n /**\r\n * Obtem a versão do projeto registrations\r\n */\r\n public getServiceVersion(): Observable {\r\n return this.httpClient.get(`${this.apiUrl}/${API_VERSION_ENDPOINT}`,\r\n { responseType: 'text' }\r\n );\r\n }\r\n}\r\n","import { MatPaginatorIntlBr } from './general/internationalization/mat-paginator-intl-br';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgModule, ErrorHandler, ApplicationRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { LoggerModule, NgxLoggerLevel } from 'ngx-logger';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { AuthInterceptor } from './interceptors/auth-interceptor';\r\nimport { InvalidTokenApiService } from './interceptors/invalid-token-api-service';\r\nimport { MAT_MOMENT_DATE_FORMATS, MomentDateAdapter, MAT_MOMENT_DATE_ADAPTER_OPTIONS } from '@angular/material-moment-adapter';\r\nimport { DateAdapter, MAT_DATE_FORMATS, MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { HammerModule } from '@angular/platform-browser';\r\nimport { AppComponent } from './app.component';\r\nimport { GlobalErrorHandlerService } from './error/global-error-handler.service';\r\nimport { LayerService } from './service/model/layer.service';\r\nimport { RouteGeographicalService } from './service/model/route-geographical-service';\r\nimport { StorageService } from './service/storage-service';\r\nimport { TestDataGeneratorService } from './general/test-data-generator/test-data-generator.service';\r\nimport { CtrlClickDirective } from './directives/ctrl-click.directive';\r\nimport { EventModule } from './pages/event/event.module';\r\nimport { RegistrationsModule } from './pages/registrations/registrations.module';\r\nimport { PatrolModule } from './pages/patrol/patrol.module';\r\nimport { GeneralModule } from './general/general.module';\r\nimport { VerificationModule } from './pages/verification/verification.module';\r\nimport { TrackingModule } from './pages/tracking/tracking.module';\r\nimport { LoginModule } from './pages/login/login.module';\r\nimport { CentralModule } from './pages/central/central.module';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\n\r\nimport { TrackingComponent } from './pages/tracking/tracking.component';\r\nimport { EventListComponent } from './pages/event/event-list/event-list.component';\r\nimport {\r\n GoldenLayoutModule,\r\n ComponentType\r\n} from 'ngx-golden-layout';\r\n\r\nimport * as $ from 'jquery';\r\nimport { EventEditComponent } from './pages/event/event-edit/event-edit.component';\r\nimport { PatrolEditComponent } from './pages/patrol/patrol-edit/patrol-edit.component';\r\nimport { PatrolListComponent } from './pages/patrol/patrol-list/patrol-list.component';\r\nimport { CompanyEditComponent } from './pages/registrations/company/company-edit/company-edit.component';\r\nimport { CompanyListComponent } from './pages/registrations/company/company-list/company-list.component';\r\nimport { PatrolTeamEditComponent } from './pages/registrations/patrolTeam/patrol-team-edit/patrol-team-edit.component';\r\nimport { PatrolTeamListComponent } from './pages/registrations/patrolTeam/patrol-team-list/patrol-team-list.component';\r\nimport { PlacementEditComponent } from './pages/registrations/placement/placement-edit/placement-edit.component';\r\nimport { PlacementListComponent } from './pages/registrations/placement/placement-list/placement-list.component';\r\nimport { UserEditComponent } from './pages/registrations/user/user-edit/user-edit.component';\r\nimport { UserListComponent } from './pages/registrations/user/user-list/user-list.component';\r\nimport { VehicleEditComponent } from './pages/registrations/vehicle/vehicle-edit/vehicle-edit.component';\r\nimport { VehicleListComponent } from './pages/registrations/vehicle/vehicle-list/vehicle-list.component';\r\nimport { VerificationEditComponent } from './pages/verification/verification-edit/verification-edit.component';\r\nimport { VerificationListComponent } from './pages/verification/verification-list/verification-list.component';\r\nimport { CentralComponent } from './pages/central/central.component';\r\nimport { EventMainActionsListComponent } from './pages/registrations/event-main-actions/event-main-actions-list/event-main-actions-list.component';\r\nimport { EventMainActionsEditComponent } from './pages/registrations/event-main-actions/event-main-actions-edit/event-main-actions-edit.component';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MapComponent } from './pages/map/map.component';\r\nimport { MapModule } from './pages/map/map.module';\r\nimport { TRACKING_PAGE, MAP_PAGE, MESSAGE_PAGE } from './common/constants';\r\nimport { PointListComponent } from './pages/registrations/point/point-list/point-list.component';\r\nimport { PointEditComponent } from './pages/registrations/point/point-edit/point-edit.component';\r\nimport { FormEditComponent } from './pages/registrations/form/form-edit/form-edit.component';\r\nimport { FormListComponent } from './pages/registrations/form/form-list/form-list.component';\r\nimport { ObservedAreaEditComponent } from './pages/registrations/observed-area/observed-area-edit/observed-area-edit.component';\r\nimport { ObservedAreaListComponent } from './pages/registrations/observed-area/observed-area-list/observed-area-list.component';\r\nimport { ChannelListComponent } from './pages/channel/channel-list/channel-list.component';\r\nimport { ChannelModule } from './pages/channel/channel.module';\r\nimport { ProfileListComponent } from './pages/registrations/profile/profile-list/profile-list.component';\r\nimport { ProfileEditComponent } from './pages/registrations/profile/profile-edit/profile-edit.component';\r\nimport { MessagePageComponent } from './pages/message-page/message-page.component';\r\nimport { MessagePageModule } from './pages/message-page/message-page.module';\r\nimport { SingleDataListComponent } from './general/single-data-list/single-data-list.component';\r\nimport { SingleDataEditComponent } from './general/single-data-edit/single-data-edit.component';\r\nimport { IPublicClientApplication, PublicClientApplication, InteractionType } from '@azure/msal-browser';\r\nimport { MsalGuard, MsalBroadcastService, MsalModule, MsalService, MSAL_GUARD_CONFIG, MSAL_INSTANCE, MsalGuardConfiguration } from '@azure/msal-angular';\r\nimport { environment } from 'src/environments/environment';\r\nimport { LogLevel, Configuration, BrowserCacheLocation, ProtocolMode } from '@azure/msal-browser';\r\nimport { LoginErrorComponent } from './general/login-error/login-error.component';\r\n\r\nconst isIE = window.navigator.userAgent.indexOf(\"MSIE \") > -1 || window.navigator.userAgent.indexOf(\"Trident/\") > -1;\r\n\r\n/**\r\n * Configuration object to be passed to MSAL instance on creation.\r\n * For a full list of MSAL.js configuration parameters, visit:\r\n * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md\r\n */\r\n const msalConfig: Configuration = {\r\n auth: {\r\n clientId: 'd865034b-a9c5-4e4a-8c7f-b55e1c8dd810',//'9854c99b-8a76-4760-8b90-8c48c409b592', // This is the ONLY mandatory field that you need to supply.\r\n authority: 'https://login.microsoftonline.com/46f6a780-86e1-4570-9459-bb97b7d99f9d', // Defaults to \"https://login.microsoftonline.com/common\"\r\n redirectUri: window.location.origin, //app.component.html. You must register this URI on Azure portal/App Registration.\r\n postLogoutRedirectUri: '/', // Indicates the page to navigate after logout.\r\n navigateToLoginRequestUrl: true, // If \"true\", will navigate back to the original request location before processing the auth code response.\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.SessionStorage, // Configures cache location. \"sessionStorage\" is more secure, but \"localStorage\" gives you SSO between tabs.\r\n storeAuthStateInCookie: isIE, // Set this to \"true\" if you are having issues on IE11 or Edge\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback(logLevel: LogLevel, message: string) {\r\n console.log(message);\r\n },\r\n logLevel: LogLevel.Verbose,\r\n piiLoggingEnabled: false\r\n }\r\n }\r\n }\r\n\r\n\r\n/**\r\n * Here we pass the configuration parameters to create an MSAL instance.\r\n * For more info, visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md\r\n */\r\nexport function MSALInstanceFactory(): IPublicClientApplication {\r\n\r\n if (environment.development){\r\n msalConfig.auth.clientId = 'd865034b-a9c5-4e4a-8c7f-b55e1c8dd810';\r\n }\r\n else {\r\n if (environment.hmg) { // Homologação\r\n msalConfig.auth.clientId = '9854c99b-8a76-4760-8b90-8c48c409b592';\r\n }\r\n else { // Produção\r\n msalConfig.auth.clientId = '3a21b411-083a-4853-8372-d5939f0fa00c';\r\n }\r\n }\r\n\r\n console.log(\"redirectUri = \" + msalConfig.auth.redirectUri)\r\n return new PublicClientApplication(msalConfig);\r\n}\r\n\r\n/**\r\n * Set your default interaction type for MSALGuard here. If you have any\r\n * additional scopes you want the user to consent upon login, add them here as well.\r\n */\r\nexport function MSALGuardConfigFactory(): MsalGuardConfiguration {\r\n return {\r\n interactionType: InteractionType.Redirect,\r\n };\r\n}\r\n\r\nwindow['$'] = $;\r\n\r\n// Define all component types known at compile time to the golden-layout binding.\r\n// It's possible to modify these at runtime using the `ComponentRegistryService`\r\n\r\nexport const componentTypes: ComponentType[] = [\r\n {\r\n name: MAP_PAGE,\r\n type: MapComponent\r\n },\r\n {\r\n name: MESSAGE_PAGE,\r\n type: MessagePageComponent\r\n },\r\n {\r\n name: 'event-main-actions',\r\n type: EventMainActionsListComponent\r\n },\r\n {\r\n name: 'event-main-actions-edit',\r\n type: EventMainActionsEditComponent\r\n },\r\n {\r\n name: TRACKING_PAGE,\r\n type: TrackingComponent\r\n },\r\n {\r\n name: 'central',\r\n type: CentralComponent\r\n },\r\n {\r\n name: 'events',\r\n type: EventListComponent\r\n },\r\n {\r\n name: 'events-edit',\r\n type: EventEditComponent\r\n },\r\n {\r\n name: 'patrols-edit',\r\n type: PatrolEditComponent\r\n },\r\n {\r\n name: 'patrols',\r\n type: PatrolListComponent\r\n },\r\n {\r\n name: 'verifications-edit',\r\n type: VerificationEditComponent\r\n },\r\n {\r\n name: 'verifications',\r\n type: VerificationListComponent\r\n },\r\n {\r\n name: 'patrol-teams-edit',\r\n type: PatrolTeamEditComponent\r\n },\r\n {\r\n name: 'patrol-teams',\r\n type: PatrolTeamListComponent\r\n },\r\n {\r\n name: 'users-edit',\r\n type: UserEditComponent\r\n },\r\n {\r\n name: 'users',\r\n type: UserListComponent\r\n },\r\n {\r\n name: 'profiles-edit',\r\n type: ProfileEditComponent\r\n },\r\n {\r\n name: 'profiles',\r\n type: ProfileListComponent\r\n },\r\n {\r\n name: 'Band',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'Band-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'GasDuct',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'GasDuct-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'OilDuct',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'OilDuct-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'Simf',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'Simf-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'Dc',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'Dc-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'KilometerMark',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'KilometerMark-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'DeliveryPoint',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'DeliveryPoint-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'Refinary',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'Refinary-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'Terminal',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'Terminal-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'Valve',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'Valve-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'PipeStretch',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'PipeStretch-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'CommunicationChannel',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'CommunicationChannel-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'ReportSource',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'ReportSource-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'Category168',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'Category168-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'Subcategory168',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'Subcategory168-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'City',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'City-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'OpticalProcessingSystem',\r\n type: SingleDataListComponent\r\n },\r\n\r\n {\r\n name: 'OpticalProcessingSystem-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'Product',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'Product-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'State',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'State-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'InspectionType',\r\n type: SingleDataListComponent\r\n },\r\n {\r\n name: 'InspectionType-edit',\r\n type: SingleDataEditComponent\r\n },\r\n {\r\n name: 'companies-edit',\r\n type: CompanyEditComponent\r\n },\r\n {\r\n name: 'companies',\r\n type: CompanyListComponent\r\n },\r\n {\r\n name: 'placements-edit',\r\n type: PlacementEditComponent\r\n },\r\n {\r\n name: 'placements',\r\n type: PlacementListComponent\r\n },\r\n {\r\n name: 'vehicles-edit',\r\n type: VehicleEditComponent\r\n },\r\n {\r\n name: 'vehicles',\r\n type: VehicleListComponent\r\n },\r\n {\r\n name: 'points-edit',\r\n type: PointEditComponent\r\n },\r\n {\r\n name: 'points',\r\n type: PointListComponent\r\n },\r\n {\r\n name: 'forms-edit',\r\n type: FormEditComponent\r\n },\r\n {\r\n name: 'forms',\r\n type: FormListComponent\r\n },\r\n {\r\n name: 'observed-areas-edit',\r\n type: ObservedAreaEditComponent\r\n },\r\n {\r\n name: 'observed-areas',\r\n type: ObservedAreaListComponent\r\n },\r\n {\r\n name: 'channels',\r\n type: ChannelListComponent\r\n },\r\n {\r\n name: 'login-error',\r\n type: LoginErrorComponent\r\n }\r\n\r\n];\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n CtrlClickDirective\r\n ],\r\n imports: [\r\n ToastrModule.forRoot({ preventDuplicates: true, enableHtml: true }),\r\n HammerModule,\r\n CommonModule,\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatNativeDateModule,\r\n MatToolbarModule,\r\n MatMenuModule,\r\n MatSidenavModule,\r\n MatTooltipModule,\r\n MatDividerModule,\r\n FlexLayoutModule,\r\n AppRoutingModule,\r\n LoggerModule.forRoot({\r\n // serverLoggingUrl: '/api/logs',\r\n level: NgxLoggerLevel.DEBUG,\r\n // @ts-ignore\r\n timestampFormat: 'HH:mm:ss.SSS',\r\n serverLogLevel: NgxLoggerLevel.ERROR\r\n }),\r\n HttpClientModule,\r\n EventModule,\r\n RegistrationsModule,\r\n PatrolModule,\r\n VerificationModule,\r\n TrackingModule,\r\n CentralModule,\r\n LoginModule,\r\n GeneralModule,\r\n MapModule,\r\n MessagePageModule,\r\n ChannelModule,\r\n GoldenLayoutModule.forRoot(componentTypes),\r\n MsalModule\r\n ],\r\n providers: [\r\n LayerService,\r\n RouteGeographicalService,\r\n CookieService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthInterceptor,\r\n multi: true\r\n },\r\n { provide: HTTP_INTERCEPTORS,\r\n useClass: InvalidTokenApiService,\r\n multi: true\r\n },\r\n { provide: ErrorHandler,\r\n useClass:\r\n GlobalErrorHandlerService\r\n },\r\n {\r\n provide: MSAL_INSTANCE,\r\n useFactory: MSALInstanceFactory\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useFactory: MSALGuardConfigFactory\r\n },\r\n MsalService,\r\n MsalGuard,\r\n MsalBroadcastService,\r\n StorageService,\r\n {provide: MatPaginatorIntl, useClass: MatPaginatorIntlBr},\r\n TestDataGeneratorService,\r\n {provide: MAT_DATE_LOCALE, useValue: 'pt'},\r\n {provide: DateAdapter, useClass: MomentDateAdapter, deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS]},\r\n {provide: MAT_DATE_FORMATS, useValue: MAT_MOMENT_DATE_FORMATS}\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\n\r\nexport class AppModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { UserService } from 'src/app/service/model/user.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\n\r\n@Component({\r\n selector: 'app-login-as',\r\n templateUrl: './login-as.component.html',\r\n styleUrls: ['./login-as.component.scss']\r\n})\r\nexport class LoginAsComponent implements OnInit {\r\n\r\n login:string;\r\n\r\n constructor(public dialogRef: MatDialogRef,\r\n public userService: UserService,\r\n protected toastr: ToastrService,\r\n public entityCacheService: EntityCacheService,\r\n protected logger: NGXLogger) {}\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n loginAs(){\r\n if(!this.login || !this.login.trim())\r\n return;\r\n \r\n const user = this.entityCacheService.getUsers().find((user) => { return user.login === this.login.trim()});\r\n if(!user){\r\n this.toastr.error(\"Usuário não encontrado\");\r\n return;\r\n }\r\n\r\n this.dialogRef.close(user);\r\n }\r\n}\r\n","
    \r\n Logar como ...\r\n \r\n
    \r\n\r\n
    \r\n\r\n \r\n login\r\n \r\n \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n","import { OnDestroy, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { Subscription } from 'rxjs';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { PointService } from 'src/app/service/model/point.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { PointFilterDialogComponent } from '../point-filter-dialog/point-filter-dialog.component';\r\nimport { PointStatusDescription, InspectionBooleanDescription, RegistrationType} from '../../../../model/enums.enum';\r\nimport { PointFilterModel } from '../point-filter-dialog/point.filter.model';\r\nimport { InspectionPointModel } from 'src/app/model/inspection.point.model';\r\nimport { ESP, MAP_PAGE } from 'src/app/common/constants';\r\nimport FieldUtils from '../../../../service/util/field-utils';\r\nimport { ImportPointsXlsDialogComponent } from '../../../../general/operation/import-points-xls-dialog/import-points-xls-dialog.component';\r\nimport { UserService } from '../../../../service/model/user.service';\r\nimport { RegistrationListComponent } from '../../registration-list-component';\r\nimport { first } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-point-list',\r\n templateUrl: './point-list.component.html',\r\n styleUrls: ['./point-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PointListComponent extends RegistrationListComponent implements OnInit, OnDestroy {\r\n\r\n pointStatusDescription = PointStatusDescription;\r\n inspectionBooleanDescription = InspectionBooleanDescription;\r\n\r\n pointUpdateSubscription: Subscription;\r\n usersSubscription: Subscription;\r\n\r\n kmIntToString = FieldUtils.kmIntToString;\r\n\r\n constructor(logger: NGXLogger,\r\n protected pointService: PointService,\r\n public toastr: ToastrService,\r\n protected changeDetector: ChangeDetectorRef,\r\n dialog: MatDialog,\r\n public userService: UserService,\r\n public authorizationService: AuthorizationService,\r\n protected storageService: StorageService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, pointService, dialog, 'points', environment.POINT_GROUP_LABEL, environment.POINT_TITLE_LABEL,\r\n environment.POINT_MODEL_LABEL, storageService, changeDetector, toastr, goldenLayout, container);\r\n logger.debug('PointListComponent.constructor()');\r\n this.registrationType = RegistrationType.INSPECTION_POINT;\r\n this.sortOptions = 'identifier,ASC';\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.logger.debug('PointListComponent.ngOnInit()');\r\n\r\n this.displayedColumns = ['select',\r\n 'identifier',\r\n 'status',\r\n 'source',\r\n 'creationDate',\r\n 'band',\r\n 'stretch',\r\n 'km',\r\n 'dc',\r\n 'accessType',\r\n 'category',\r\n 'vulnerabilityView',\r\n 'city',\r\n 'uf',\r\n 'reference'];\r\n }\r\n\r\n protected getDefaultSortColumn(): string {\r\n return \"identifier\";\r\n }\r\n\r\n protected newFilterModel() {\r\n return new PointFilterModel();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n this.pointUpdateSubscription?.unsubscribe();\r\n this.usersSubscription?.unsubscribe();\r\n }\r\n\r\n openFilterDialog(): void {\r\n const dialogRef = this.dialog.open(PointFilterDialogComponent, {\r\n width: '800px',\r\n data: this.filterModel,\r\n panelClass: 'sipd-modal'\r\n\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.loadRecordsFromServer();\r\n }\r\n });\r\n }\r\n\r\n onImportPointsClick(){\r\n const importPointsXlsDialogComponent = this.dialog.open(ImportPointsXlsDialogComponent, {\r\n width: '800px',\r\n panelClass: 'sipd-modal',\r\n data: this.loggedUser\r\n }).afterClosed().pipe(first()).subscribe( (result: boolean) => {\r\n if (result) {\r\n this.loadRecordsFromServer();\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => importPointsXlsDialogComponent?.unsubscribe());\r\n }\r\n\r\n onLocationManyClick(){\r\n let inspectionPointList = [];\r\n this.selection.selected.forEach( (inspectionPoint: InspectionPointModel) => {\r\n if (this.hasLocation(inspectionPoint))\r\n inspectionPointList.push(inspectionPoint);\r\n });\r\n\r\n if (inspectionPointList.length > 0)\r\n this.glOpenContainer(MAP_PAGE, {inspectionPointList: inspectionPointList});\r\n else\r\n this.toastr.warning(\"Nenhum ponto selecionado possui (Lat, Long) definido.\");\r\n }\r\n\r\n onLocationClick(row: InspectionPointModel){\r\n this.glOpenContainer(MAP_PAGE, {inspectionPoint: row});\r\n }\r\n\r\n hasLocation(row: InspectionPointModel){\r\n if (row && row.latLong)\r\n return true;\r\n return false;\r\n }\r\n \r\n protected getStringEntityForFilter(point: InspectionPointModel): string {\r\n const identifier = super.lowerAndTrimText(point.identifier);\r\n const status = point.status ? super.lowerAndTrimText(this.pointStatusDescription[point.status]) : '';\r\n const source = super.lowerAndTrimText(point.source);\r\n const creationDate = super.formatDate(point.creationDate);\r\n const band = super.lowerAndTrimText(point.band);\r\n const stretch = this.lowerAndTrimText(point.stretch);\r\n const km = FieldUtils.kmIntToString(point.km);\r\n const dc = point.dc ? super.lowerAndTrimText(this.inspectionBooleanDescription[point.dc]): '';\r\n const accessType = super.lowerAndTrimText(point.accessType);\r\n const category = super.lowerAndTrimText(point.category);\r\n const vulnerabilityView = super.lowerAndTrimText(point.vulnerabilityView);\r\n const city = super.lowerAndTrimText(point.city);\r\n const uf = super.lowerAndTrimText(point.uf);\r\n const reference = super.lowerAndTrimText(point.reference); \r\n\r\n return identifier + ESP + status + ESP + source + ESP + creationDate + ESP + band + ESP + stretch + ESP + km + ESP + dc + ESP + accessType + ESP + category + ESP + vulnerabilityView + ESP + city + ESP + uf + ESP + reference;\r\n }\r\n\r\n glOnPopout() {\r\n this.setListPopoutData({filterModel: this.filterModel});\r\n }\r\n\r\n glOnPopin() {\r\n this.setListPopoutData({filterModel: this.filterModel});\r\n }\r\n\r\n}\r\n","
    \r\n \r\n
    \r\n \r\n {{title}}[ {{getListCount()}} ]\r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n ID {{element?.identifier}} Status {{pointStatusDescription[element?.status] || \"Sem status\"}} \r\n Origem {{element?.source}} \r\n Data/Hora de Criação {{element?.creationDate | date:'dd/MM/yyyy HH:mm'}} Faixa {{element?.band}} Trecho {{element?.stretch}} KM {{kmIntToString(element?.km)}} DC {{inspectionBooleanDescription[element?.dc] || \" \"}} Tipo de acesso {{element?.accessType}} Categoria {{element?.category}} Vulnerabilidade {{element?.vulnerabilityView}} Cidade {{element?.city}} UF {{element?.uf}} Referência {{element?.reference}}
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EntityService } from './entity.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PlacementService extends EntityService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.registrations_address}/placements`);\r\n }\r\n}\r\n","import { Subject, Observable, Subscription } from 'rxjs';\r\n\r\n// NOTA: Não estamos usando o LoadingListService injetado para que cada tela tenha o seu feedback.\r\n// Se o controle do feedback for comum, ao abrir telas lado a lado, todas as telas mostram o feedback quando uma está carregando.\r\n// TODO scuri Falta melhorar o feedback dos componentes de filtros\r\n\r\nexport class LoadingListService {\r\n private loadingSubscription:Subscription;\r\n private loadingSubject = new Subject();\r\n private loading$: Observable = this.loadingSubject.asObservable();\r\n private showSpinner: boolean = false;\r\n private spinnerCount: number = 0;\r\n\r\n constructor(){\r\n this.subscribeToLoading();\r\n console.log(\"LoadingListService.constructor\", this.spinnerCount);\r\n }\r\n\r\n // Para cada \"new LoadingListService();\" deve ter uma chamada para destroy\r\n destroy() {\r\n console.log(\"LoadingListService.destroy\");\r\n this.loadingSubscription?.unsubscribe();\r\n }\r\n\r\n private subscribeToLoading(){\r\n // Fazemos isso dentro de um subscribe para evitar problema de concorrencia\r\n this.loadingSubscription = this.loading$.subscribe((loading: boolean)=>{\r\n if (loading) \r\n this.spinnerCount++;\r\n else \r\n this.spinnerCount--;\r\n\r\n // TODO scuri Essa chamada ao console faz essa função ficar um pouco mais lenta e com isso ela funciona melhor \r\n // quando várias chamadas ao loading são feitas em um intervalo de tempo curto\r\n console.log(\"LoadingListService.subscribeToLoading spinnerCount=\", +this.spinnerCount);\r\n\r\n if (this.spinnerCount > 0)\r\n this.showSpinner = true;\r\n else\r\n this.showSpinner = false;\r\n });\r\n }\r\n\r\n getShowSpinner(): boolean {\r\n return this.showSpinner;\r\n }\r\n\r\n // Deve ser chamado antes de inciar um carregamento\r\n loadingOn() {\r\n this.loadingSubject.next(true);\r\n }\r\n\r\n // Deve ser chamado depois de um carregamento terminar\r\n loadingOff() {\r\n this.loadingSubject.next(false);\r\n }\r\n \r\n public getSpinnerCount(){\r\n return this.spinnerCount;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { FILTER_OPTION_ALL } from \"src/app/common/constants\";\r\nimport { FilterModel } from 'src/app/general/filter-component/filter.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ObservedAreaFilterModel extends FilterModel{\r\n\r\n areaStatus: string;\r\n types: string[];\r\n responsibles: string[];\r\n bands: string[];\r\n cities: string[];\r\n states: string[];\r\n years: string[];\r\n\r\n constructor(){\r\n super();\r\n this.areaStatus = FILTER_OPTION_ALL;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { UserModel } from '../user.model';\r\n/*\r\n * Exibe o valor de um userModel formatado para componentes visuais como combos, listas, etc\r\n * Usa apenas o userModel como parâmetro\r\n * Uso:\r\n * user | toView\r\n * Example:\r\n * {{ user | toView }}\r\n * formats to: Username ( login )\r\n*/\r\n@Pipe({name: 'toView'})\r\nexport class ToViewPipe implements PipeTransform {\r\n transform(user: UserModel): String {\r\n return UserModel.getTitle(user);\r\n }\r\n}\r\n","import { GeoModel } from './geo.model';\r\nimport { environment } from '../../environments/environment';\r\nimport FieldUtils from '../service/util/field-utils';\r\n\r\nexport class KilometerMarkModel extends GeoModel {\r\n stretch: string; // Nome do trecho\r\n band: string; // Nome da faixa\r\n bandId: string; // Id da faixa\r\n km: string;\r\n\r\n public static getPopupContent(feature, search: boolean = false): string{\r\n if (feature && feature.properties){\r\n \r\n const kmMark = feature.properties as KilometerMarkModel;\r\n \r\n let name = kmMark.name;\r\n if (!name) {\r\n let stretchName: string = kmMark.stretch ? kmMark.stretch : '';\r\n let bandName: string = kmMark.band ? kmMark.band : '';\r\n name = bandName + ' - ' + stretchName;\r\n }\r\n let km: string = kmMark.km ? kmMark.km : '';\r\n let latLong: string = GeoModel.getLatLong(kmMark);\r\n let states: string = kmMark.states ? kmMark.states.toString() : '';\r\n let contents: string = `
    Marco Quilométrico
    \r\n
    ${ name }
    \r\n
    KM: ${km}
    \r\n
    Faixa: ${kmMark.band? kmMark.band: ''}
    \r\n
    Trecho: ${kmMark.stretch? kmMark.stretch: ''}
    \r\n
    UF(s): ${states}
    \r\n
    Lat, Long: ${!search? latLong: ''}
    \r\n `;\r\n if (!environment.showPopupLayerTables || kmMark.description == null || kmMark.description === \"\") { \r\n return contents;\r\n }\r\n else {\r\n return contents + \"

    \" + kmMark.description\r\n }\r\n }\r\n\r\n return `
    Sem Dados
    `;\r\n }\r\n\r\n public static getTooltipContent(feature): string{\r\n const kmMark = feature.properties;\r\n return `
    ${ kmMark.name }
    \r\n
    ${FieldUtils.coordToString(kmMark.lat)},${FieldUtils.coordToString(kmMark.lng)}
    \r\n `;\r\n }\r\n}\r\n","import {UserModel} from './user.model';\r\nimport { OperationModel } from './operation.model';\r\nimport { OperationType, OperationStatus } from './enums.enum';\r\nimport LanguageUtils from '../service/util/language-utils';\r\n\r\nexport class VerificationModel extends OperationModel {\r\n analyst: UserModel;\r\n bandRelease: string; \r\n eventId: string; // TODO: Trocar nome para eventIdentifier (não é event.id)\r\n sentDate: number;\r\n createdAt: number;\r\n \r\n // Resultados\r\n startDateMovement : number; // Data/Hora Inicio de Percurso\r\n startDateInspection : number; // Data/Hora Inicio de Inspeção\r\n endDateInspection : number; //Data/Hora fim de Inspeção \r\n evaluation: string; \r\n kmPlanned : number; \r\n kmExecuted : number;\r\n endDateVerification : number; // Data/Hora fim da Verificação\r\n receivedDateApp : number; // Data/Hora App recebida\r\n eventCreatedAt : number; // Data/hora do evento (eventId)\r\n resultObservations: string;\r\n managementReport: string;\r\n midia : string; \r\n dateManagementReport : number;\r\n dateSendEndVerification: number; // data/hora fim da verificação no aplicativo\r\n \r\n // usados apenas no front-end: \r\n taccpd :string; // sentDate - eventCreatedAt\r\n tacs : string; // sentDate - createdAt\r\n tapd : string; // dateSendEndVerification - sentDate\r\n tta : string; // dateSendEndVerification - eventCreatedAt\r\n terf : string; // dateSendEndVerification - dateManagementReport\r\n tvi : string; // endDateInspection - startDateInspection\r\n tsi : string; // startDateInspection - sentDate\r\n trivi : string; // startDateMovement - sentDate\r\n\r\n pointsDescription: string; // usado somente na exportação de eventos\r\n requestedPoints; number; // usado somente na exportação de eventos\r\n visitedPoints: number; // usado somente na exportação de eventos\r\n pointsDiff: number; // usado somente na exportação de eventos\r\n noAccesVerificationPoints: number; //usado somente na exportação de eventos \r\n\r\n constructor() {\r\n super();\r\n this.type = OperationType.EVENT_VERIFICATION;\r\n this.status = OperationStatus.PLANNED;\r\n }\r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['analyst'] = 'Analista CCPD';\r\n LanguageUtils.languageMap['eventId'] = 'Evento Associado';\r\n LanguageUtils.languageMap['sentDate'] = 'Data de Envio';\r\n LanguageUtils.languageMap['bandRelease'] = 'Liberação de Faixa';\r\n LanguageUtils.languageMap['evaluation'] = 'Avaliação';\r\n LanguageUtils.languageMap['resultObservations'] = 'Notas';\r\n LanguageUtils.languageMap['managementReport'] = 'Informe Gerencial';\r\n LanguageUtils.languageMap['evaluation'] = 'Avaliação';\r\n }\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { RouteGeographicalService } from '../../../service/model/route-geographical-service';\r\nimport { InspectionModel } from '../../../model/inspection.model';\r\n\r\n@Component({\r\n selector: 'app-import-points-kml-dialog',\r\n templateUrl: './import-points-kml-dialog.component.html',\r\n styleUrls: ['./import-points-kml-dialog.component.scss']\r\n})\r\nexport class ImportPointsKmlDialogComponent implements OnInit {\r\n\r\n filename: string;\r\n kmlFile: File;\r\n\r\n constructor(private logger: NGXLogger,\r\n public dialogRef: MatDialogRef,\r\n public toastr: ToastrService,\r\n private routeGeographicalObjectService: RouteGeographicalService,\r\n @Inject(MAT_DIALOG_DATA) public points: InspectionModel[]){}\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n selectFile(file: File) {\r\n if (file) { // Usuário selecionou um arquivo\r\n this.kmlFile = file;\r\n this.filename = file.name;\r\n } \r\n else { // Usuário pressionou Remover\r\n this.kmlFile = undefined;\r\n this.filename = undefined;\r\n }\r\n }\r\n\r\n select() {\r\n this.logger.debug('ImportPointsKmlDialogComponent.select()');\r\n\r\n this.routeGeographicalObjectService.importPointsKml(this.kmlFile).then((geoPoints) => {\r\n geoPoints.on('ready', () => {\r\n const layers = geoPoints._layers;\r\n\r\n const old_length = this.points.length;\r\n\r\n for (const id in layers) {\r\n let layer = layers[id];\r\n if (layer.feature.geometry.type !== 'Point') {\r\n continue;\r\n }\r\n \r\n let inspection = new InspectionModel();\r\n inspection.activities = [];\r\n\r\n inspection.location.latitude = layer.feature.geometry.coordinates[1]; // Note que é invertido em geometry.coordinates (longitude, latitude)\r\n inspection.location.longitude = layer.feature.geometry.coordinates[0];\r\n inspection.type = layer.feature.properties.type;\r\n inspection.name = layer.feature.properties.name;\r\n inspection.band = inspection.name;\r\n\r\n for (let i=0; i {\r\n const title = 'KML Inválido!';\r\n const message = 'Erro no arquivo KML de Pontos';\r\n this.toastr.error(message, title);\r\n });\r\n });\r\n }\r\n}\r\n","
    \r\n Importar KML\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n \r\n \r\n\r\n","import { Component, Input, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { ProgressSpinnerMode } from '@angular/material/progress-spinner';\r\n\r\n@Component({\r\n selector: 'app-global-spinner',\r\n templateUrl: './global-spinner.component.html',\r\n styleUrls: ['./global-spinner.component.scss']\r\n})\r\nexport class GlobalSpinnerComponent implements OnInit {\r\n\r\n @Input() color?: ThemePalette = \"primary\";\r\n @Input() diameter?: number = 150;\r\n @Input() mode?: ProgressSpinnerMode = \"indeterminate\";\r\n @Input() strokeWidth?: number = 20;\r\n @Input() value?: number;\r\n @Input() showSpinner: boolean;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() : void{\r\n\r\n }\r\n}\r\n","
    \r\n \r\n \r\n
    \r\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport * as moment from 'moment';\r\nimport { OperationStatusDescription, OperationType, OperationTypeDescription, SourceType } from 'src/app/model/enums.enum';\r\nimport FieldUtils from 'src/app/service/util/field-utils';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { environment } from 'src/environments/environment';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { AbstractSignalModel } from 'src/app/model/abstract.signal.model';\r\nimport { VehicleSignalModel } from 'src/app/model/vehicle.signal.model';\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\nimport * as XLSX from 'xlsx';\r\nimport { PatrolService } from 'src/app/service/model/patrol.service';\r\nimport { VerificationService } from 'src/app/service/model/verification.service';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { ESP } from 'src/app/common/constants';\r\nimport * as turf from '@turf/turf'\r\n\r\n@Component({\r\n selector: 'app-track-points-dialog',\r\n templateUrl: './track-points-dialog.component.html',\r\n styleUrls: ['./track-points-dialog.component.scss']\r\n})\r\nexport class TrackPointsDialogComponent implements OnInit {\r\n\r\n displayedColumns: string[];\r\n\r\n dataSource: MatTableDataSource= new MatTableDataSource();\r\n\r\n @ViewChild(MatInput, { static: true }) searchInput: MatInput;\r\n @ViewChild(MatSort, { static: true }) sort: MatSort;\r\n\r\n /** The MatPaginator bound to the grid to show data */\r\n @ViewChild(MatPaginator, { static: true }) paginator: MatPaginator;\r\n\r\n // pagination\r\n pageSize = environment.defaultPageSize;\r\n pageLength = undefined;\r\n\r\n // Enum\r\n operationStatusDescription = OperationStatusDescription;\r\n operationTypeDescription = OperationTypeDescription;\r\n\r\n constructor(public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public data: {\r\n signals: AbstractSignalModel[],\r\n title: string,\r\n isVehicle: boolean,\r\n showOperation: boolean,\r\n companyName: string},\r\n private patrolService: PatrolService,\r\n private verificationService: VerificationService,\r\n protected dialog: MatDialog) {\r\n if (data.signals[0].sourceType == SourceType.MOBILE_APP) {\r\n this.data.isVehicle = false;\r\n }\r\n else {\r\n this.data.isVehicle = true;\r\n }\r\n\r\n this.pageLength = data.signals.length;\r\n\r\n if (this.data.showOperation) this.loadOperations();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.data.isVehicle) {\r\n this.displayedColumns = [\r\n 'timestamp',\r\n 'receivedTimestamp',\r\n 'latLong',\r\n 'motor',\r\n 'movimento',\r\n 'velocidade',\r\n 'gps',\r\n 'precisao',\r\n 'direcao'];\r\n }\r\n else {\r\n this.displayedColumns = [\r\n 'timestamp',\r\n 'receivedTimestamp',\r\n 'latLong'];\r\n }\r\n\r\n if (this.data.showOperation){\r\n this.displayedColumns.push('OperationIdentifier');\r\n this.displayedColumns.push('OperationStatus');\r\n }\r\n\r\n this.sort.sort({id: \"timestamp\", start: 'asc', disableClear: false});\r\n this.buildDataSource();\r\n }\r\n\r\n buildDataSource(){\r\n this.dataSource.data = this.data.signals;\r\n this.dataSource.paginator = this.paginator;\r\n\r\n this.dataSource.filterPredicate = (entity: AbstractSignalModel, filter: string): boolean => {\r\n return this.getStringEntityForFilter(entity).indexOf(filter) != -1;\r\n };\r\n\r\n this.dataSource.sortingDataAccessor = (data, sortHeaderId: string) => {\r\n return this.getPropertyByPath(data, sortHeaderId);\r\n };\r\n\r\n this.dataSource.sort = this.sort;\r\n }\r\n\r\n /* reducer method */\r\n getProperty (o, i) {\r\n if ( !o ) { return ''; }\r\n return o[i];\r\n }\r\n\r\n getPropertyByPathDefault(item: Object, property: string){\r\n let value = property.split('.').reduce(this.getProperty, item);\r\n if (typeof value === 'string'){\r\n value = this.lowerAndTrimText(value);\r\n }\r\n return value ? value : '';\r\n }\r\n\r\n getPropertyByPath(item: Object, property: string){\r\n switch (property) {\r\n case 'latLong':\r\n return this.getLatLong(item as AbstractSignalModel);\r\n case 'timestamp':\r\n return this.getTimestamp(item['timestamp']);\r\n case 'receivedTimestamp':\r\n return this.getTimestamp(item['receivedTimestamp']);\r\n case 'OperationStatus':\r\n return item['operationStatus']? OperationStatusDescription[item['operationStatus']]: '';\r\n case 'OperationIdentifier':\r\n return (item['operationType'] && item['operationId'])? OperationTypeDescription[item['operationType']] + ' - ' + item['operationIdentifier']: '';\r\n default: return this.getPropertyByPathDefault(item, property);\r\n }\r\n }\r\n\r\n protected lowerAndTrimText(text: string) {\r\n return (text) ? text.trim().toLowerCase() : '';\r\n }\r\n\r\n getLatLong(signal: AbstractSignalModel){\r\n if(!signal) return \"\";\r\n return FieldUtils.coordToString(signal.latitude) + ',' + FieldUtils.coordToString(signal.longitude);\r\n }\r\n\r\n getTimestamp(timestamp: number){\r\n return DateUtils.timestampToStringInSeconds(timestamp);\r\n }\r\n\r\n protected getStringEntityForFilter(signal: AbstractSignalModel): string {\r\n const timestamp = this.getTimestamp(signal.timestamp);\r\n const receivedTimestamp = this.getTimestamp(signal.receivedTimestamp);\r\n const latLong = this.getLatLong(signal);\r\n\r\n let str = timestamp + ESP + receivedTimestamp + ESP + latLong;\r\n\r\n if (this.data.showOperation){\r\n str += (signal.operationType && signal.operationId)? OperationTypeDescription[signal.operationType] + ' - ' + (signal as any).operationIdentifier: '';\r\n str += signal.operationStatus? OperationStatusDescription[signal.operationStatus]: '';\r\n }\r\n\r\n if (this.data.isVehicle) {\r\n const motor = this.lowerAndTrimText((signal).motor);\r\n const movimento = this.lowerAndTrimText((signal).movimento);\r\n const velocidade = this.lowerAndTrimText((signal).velocidade);\r\n const gps = this.lowerAndTrimText((signal).gps);\r\n const precisao = this.lowerAndTrimText((signal).precisao);\r\n const direcao = this.lowerAndTrimText((signal).direcao);\r\n\r\n str += ESP + motor + ESP + movimento + ESP + velocidade + ESP + gps + ESP + precisao + ESP + direcao;\r\n }\r\n\r\n return str;\r\n }\r\n\r\n applySearch(filterValue: string) {\r\n this.dataSource.filter = filterValue.trim().toLowerCase();\r\n }\r\n\r\n onRemoveSearch(){\r\n this.searchInput.value = '';\r\n this.dataSource.filter = '';\r\n }\r\n\r\n onPageChanged(event){\r\n }\r\n\r\n protected getExportColValue(col, model):string[] {\r\n let colsValues: string[] = [];\r\n if (col == 'timestamp'){\r\n colsValues.push(this.getTimestamp(model['timestamp']));\r\n }\r\n else if (col == 'receivedTimestamp'){\r\n colsValues.push(this.getTimestamp(model['receivedTimestamp']));\r\n }\r\n else if (col == 'latLong'){\r\n colsValues.push(this.getLatLong(model));\r\n }\r\n else if (col == 'OperationIdentifier'){\r\n colsValues.push((model.operationType && model.operationIdentifier)? OperationTypeDescription[model.operationType] + ' - ' + model.operationIdentifier: '');\r\n }\r\n else if (col == 'OperationStatus'){\r\n colsValues.push(model.operationStatus? OperationStatusDescription[model.operationStatus]: '');\r\n }\r\n else {\r\n colsValues.push(model[col]);\r\n }\r\n return colsValues;\r\n }\r\n\r\n private pushTitle(ws_data){\r\n let line = [];\r\n line.push(\"Rastro de:\"); line.push(this.data.title);\r\n ws_data.push(line);\r\n line = [];\r\n line.push(\"Empresa:\"); line.push(this.data.companyName);\r\n ws_data.push(line);\r\n ws_data.push([]); // linha vazia\r\n return ws_data;\r\n }\r\n\r\n private latLngToTurfPoint(data: AbstractSignalModel): turf.Coord{\r\n return turf.point([data.longitude, data.latitude]); // Note que é invertido (longitude, latitude)\r\n }\r\n\r\n private updateExtraData(){\r\n const data = this.dataSource.filteredData; \r\n let distance = 0;\r\n let time = 0;\r\n let prevLatLng = this.latLngToTurfPoint(data[0]);\r\n \r\n for(var i=0; i { line.push(col); });\r\n ws_data.push(line);\r\n\r\n this.updateExtraData();\r\n\r\n this.dataSource.filteredData.forEach(model => {\r\n let line = [];\r\n this.displayedColumns.forEach(col => {\r\n line = line.concat(this.getExportColValue(col, model));\r\n });\r\n line = line.concat(this.getExportColValue('distance', model));\r\n line = line.concat(this.getExportColValue('time', model));\r\n line = line.concat(this.getExportColValue('deltaDistance', model));\r\n line = line.concat(this.getExportColValue('deltaTime', model));\r\n ws_data.push(line);\r\n })\r\n\r\n return ws_data;\r\n }\r\n\r\n public exportXls(columnsTitles){\r\n const EXCEL_EXTENSION = '.xlsx';\r\n var ws_name = this.data.title.substring(0, 30); // Aba não pode ter mais de 30 characteres\r\n var wb = XLSX.utils.book_new();\r\n\r\n const startTimestamp = this.data.signals[0].timestamp;\r\n const endTimestamp = this.data.signals[this.data.signals.length-1].timestamp;\r\n\r\n let startDate = moment(startTimestamp).format('DD-MM-yyyy HH-mm');\r\n let endDate = moment(endTimestamp).format('DD-MM-yyyy HH-mm');\r\n\r\n let ws_data = [];\r\n\r\n ws_data = this.pushTitle(ws_data);\r\n\r\n /* make worksheet */\r\n ws_data = this.parseDataToArray(columnsTitles, ws_data);\r\n\r\n var ws = XLSX.utils.aoa_to_sheet(ws_data);\r\n\r\n /* Add the worksheet to the workbook */\r\n XLSX.utils.book_append_sheet(wb, ws, ws_name);\r\n XLSX.writeFile(wb, ws_name+' ['+startDate+', '+endDate+']'+EXCEL_EXTENSION);\r\n }\r\n\r\n onExportClick(){\r\n let columnsTitles = [\r\n 'Data/Hora',\r\n 'Data/Hora Recebido',\r\n 'Lat, Long'];\r\n if (this.data.isVehicle) {\r\n columnsTitles.push(\r\n 'Motor',\r\n 'Movimento',\r\n 'Velocidade',\r\n 'GPS',\r\n 'Precisão',\r\n 'Direção');\r\n }\r\n if (this.data.showOperation){\r\n columnsTitles.push('Operação');\r\n columnsTitles.push('Status');\r\n }\r\n columnsTitles.push(\r\n 'Distância (Km)',\r\n 'Tempo',\r\n 'Δd (m)',\r\n 'Δt (s)',\r\n );\r\n\r\n this.exportXls(columnsTitles);\r\n }\r\n\r\n private updateOperation(operationId: string, operationType: string, op: OperationModel){\r\n this.data.signals.forEach(signal => {\r\n if (signal.operationId == operationId && signal.operationType == operationType) {\r\n signal['operationIdentifier'] = op.identifier;\r\n }\r\n }); \r\n }\r\n\r\n private loadOperation(operationId: string, operationType: string) {\r\n if (!operationId) return null;\r\n\r\n switch (operationType) {\r\n case (OperationType.PATROL): \r\n this.patrolService.loadById(operationId).toPromise().then (op => {\r\n op.type = operationType;\r\n this.updateOperation(operationId, operationType, op);\r\n });\r\n break;\r\n case (OperationType.EVENT_VERIFICATION): \r\n this.verificationService.loadById(operationId).toPromise().then (op => {\r\n op.type = operationType;\r\n this.updateOperation(operationId, operationType, op);\r\n });\r\n break;\r\n }\r\n return null;\r\n }\r\n\r\n private loadOperations() {\r\n let ops: Map = new Map();\r\n\r\n this.data.signals.forEach(signal => {\r\n if (!ops.get(signal.operationId + signal.operationType)) {\r\n ops.set(signal.operationId + signal.operationType, {operationId: signal.operationId, operationType: signal.operationType});\r\n }\r\n });\r\n\r\n ops.forEach(op => {\r\n this.loadOperation(op.operationId, op.operationType);\r\n });\r\n }\r\n}\r\n","\r\n
    \r\n Dados do Rastro\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n Rastro de \"{{ data.title }}\"\r\n \r\n search\r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    Data/Hora {{getTimestamp(element?.timestamp)}} Data/Hora Recebido {{getTimestamp(element?.receivedTimestamp)}} Lat, Long {{getLatLong(element)}} Operação {{ element.operationType ? operationTypeDescription[element.operationType]: '' }} - {{element?.operationIdentifier}} Status {{operationStatusDescription[element?.operationStatus]}} Motor {{element?.motor}} Movimento {{element?.movimento}} Velocidade {{element?.velocidade}} GPS {{element?.gps}} Precisão {{element?.precisao }} Direção {{element?.direcao}}
    \r\n
    \r\n\r\n\r\n\r\n \r\n \r\n\r\n","import {EntityModel} from './entity.model';\r\nimport {UserModel} from './user.model';\r\nimport {VehicleModel} from './vehicle.model';\r\nimport { CompanyModel } from './company.model';\r\nimport { ServiceTypeDescription } from 'src/app/model/enums.enum';\r\nimport LanguageUtils from '../service/util/language-utils';\r\n\r\nexport class PatrolTeamModel extends EntityModel {\r\n name: string; // The name of the Patrol Team. (mandatory)\r\n vehicle: VehicleModel; // (mandatory)\r\n shift: string;\r\n users: Array; // professional1, professional2,... (mandatory)\r\n patrolCoordinator: UserModel;\r\n company: CompanyModel; // (mandatory)\r\n serviceType: string;\r\n\r\n static getPopupContent(patrolTeam: PatrolTeamModel, search: boolean = false): string {\r\n return patrolTeam ?\r\n `
    Equipe: ${patrolTeam.name}
    \r\n ${patrolTeam.users.length > 0 ? `
    Profissional 1: ${!search? UserModel.getTitle(patrolTeam.users[0]): patrolTeam.users[0].name}
    ` : ``}\r\n ${patrolTeam.users.length > 1 ? `
    Profissional 2: ${!search? UserModel.getTitle(patrolTeam.users[1]): patrolTeam.users[1].name}
    ` : ``}\r\n ${patrolTeam.users.length > 2 ? `
    Profissional 3: ${!search? UserModel.getTitle(patrolTeam.users[2]): patrolTeam.users[2].name}
    ` : ``}\r\n
    Placa do Veículo: ${patrolTeam.vehicle ? patrolTeam.vehicle.plate : ``}
    \r\n
    Empresa: ${patrolTeam.company ? patrolTeam.company.name : ``}
    \r\n
    Telefone da Empresa: ${(patrolTeam.company && patrolTeam.company.phone) ? patrolTeam.company.phone : ''}
    \r\n
    Coordenador: ${patrolTeam.patrolCoordinator ? patrolTeam.patrolCoordinator.name : ``}
    \r\n
    Tipo de Serviço: ${patrolTeam.serviceType ? ServiceTypeDescription[patrolTeam.serviceType] : ''}
    \r\n `\r\n : 'sem equipe';\r\n }\r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['vehicle'] = 'Veículo';\r\n LanguageUtils.languageMap['shift'] = 'Turno';\r\n LanguageUtils.languageMap['serviceType'] = 'Tipo de Serviço';\r\n LanguageUtils.languageMap['users'] = 'Profissionais';\r\n LanguageUtils.languageMap['patrolCoordinator'] = 'Coordenador';\r\n }\r\n}\r\n","import DateUtils from \"src/app/service/util/date-utils\";\r\nimport { Injectable } from '@angular/core';\r\nimport { SourceType } from '../../../model/enums.enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CentralFilterModel {\r\n\r\n current: boolean;\r\n startDate: number;\r\n endDate: number;\r\n priorities: string[];\r\n operationTypes: string[];\r\n serviceTypes: string[];\r\n patrolTeams: string[];\r\n vehicles: string[];\r\n types: string[];\r\n sourceTypes: string[];\r\n simfAlertTypes: string[];\r\n placements: string[] = []; // PlacementIds\r\n operationId: string; // usado para rondas/verificações\r\n startScalePoint: string; // Kpoint inicial\r\n endScalePoint: string; // Kpoint final\r\n cpsNumber : number[]; //OPS\r\n startChannel : number;\r\n endChannel : number;\r\n\r\n constructor() {\r\n this.current = true;\r\n this.startDate = DateUtils.getTodayStartDate();\r\n this.endDate = DateUtils.getTodayEndDate();\r\n this.sourceTypes = [SourceType.MOBILE_APP];\r\n }\r\n}\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"crnd\";","import {EntityModel} from './entity.model';\r\n\r\nexport class AttachmentModel extends EntityModel {\r\n name: string;\r\n extension: string;\r\n type: string;\r\n }","import { Injectable, ErrorHandler, Injector } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { IndividualConfig, ToastrService } from 'ngx-toastr';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { NgZone } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class GlobalErrorHandlerService implements ErrorHandler {\r\n\r\n private toastr: ToastrService\r\n config: Partial;\r\n\r\n constructor(private _injector: Injector, private logger: NGXLogger, private ngZone: NgZone) {\r\n this.config = { \r\n positionClass: 'toast-top-right', // Já é o default (fica como exemplo)\r\n timeOut: 20000 // Default é 5000\r\n };\r\n }\r\n\r\n handleError(error: Error) {\r\n if (!this.toastr) {\r\n this.toastr = this._injector.get(ToastrService);\r\n }\r\n\r\n if (error && error.message && error.message.startsWith(\"ExpressionChangedAfterItHasBeenCheckedError\"))\r\n return;\r\n\r\n let errorMessage: string;\r\n if (error instanceof HttpErrorResponse) { // Erro de resposta do servidor\r\n if (!navigator.onLine) { // Erro de conexão\r\n errorMessage = 'Não foi possível a comunicação com o servidor.\\nPor favor, verifique sua conexão.';\r\n } else if (error.error && error.error.exceptionName && error.error.exceptionName.endsWith(\"DuplicateFieldException\")) {\r\n errorMessage = `Operação Inválida - ${error.error.message} já foi registrado no banco!`;\r\n } else { // Erro interno do servidor\r\n errorMessage = `Erro Interno: ${(error.error && error.error.errorDetails) ? error.error.errorDetails : 'Ocorreu um erro inesperado.'}`;\r\n }\r\n } else { // Erro do cliente\r\n errorMessage = `Ocorreu um erro no cliente: ${error.message}`;\r\n }\r\n\r\n this.ngZone.run(() => {\r\n this.toastr.error(errorMessage, 'Erro!', this.config);\r\n });\r\n this.logger.error(errorMessage, error);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n HttpInterceptor,\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpErrorResponse\r\n} from '@angular/common/http';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { AuthenticationService } from '../pages/login/login-services';\r\nimport { NGXLogger } from 'ngx-logger';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InvalidTokenApiService implements HttpInterceptor {\r\n constructor(private logger: NGXLogger, private authenticationService: AuthenticationService) { }\r\n\r\n intercept(\r\n req: HttpRequest,\r\n next: HttpHandler\r\n ): Observable> {\r\n return next.handle(req).pipe(\r\n catchError((errorResponse: HttpErrorResponse) => {\r\n // Se o auth retornar erro no token, temos que fazer logout\r\n // Unauthorized ou Forbidden\r\n if (errorResponse.status === 401 || errorResponse.status === 403) {\r\n // Comentado para que apenas apareca a mensagem de erro\r\n // this.authenticationService.logout()\r\n this.logger.error('Token Inválido na chamada ' + errorResponse.status);\r\n this.authenticationService.reloadToken();\r\n }\r\n return throwError(errorResponse);\r\n })\r\n );\r\n }\r\n}\r\n","import { BehaviorSubject, Observable } from 'rxjs';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { EntityService } from '../service/model/entity.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmationDialogComponent } from '../general/confirmation-dialog/confirmation-dialog.component';\r\nimport { EntityModel } from '../model/entity.model';\r\nimport { AfterViewInit, OnDestroy, OnInit, Directive, Inject, ViewChild } from '@angular/core';\r\nimport { UserModel } from '../model/user.model';\r\nimport { StorageService } from '../service/storage-service';\r\nimport { KeyValue } from '@angular/common';\r\nimport { PAGE_READY_PREFIX, FILL_DATA_PREFIX, SAVE_DATA_PREFIX, DELETE_DATA_PREFIX, MOUSE_ENTER_TIME, MAP_PAGE, UPDATE_DATA_PREFIX } from 'src/app/common/constants';\r\n\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { BaseGoldenPanel } from './base-golden-panel/base-golden-panel';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorizationService } from '../service/authorization/authorization.service';\r\n\r\nimport * as diff from 'deep-diff';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { MapEvents, Permission } from '../model/enums.enum';\r\nimport { first } from 'rxjs/operators';\r\nimport { LoadingListService } from '../service/loading/loading-list.service';\r\nimport { ProfileModel } from '../model/profile.model';\r\nimport { ProfileClassToConsole } from '../common/profile-class.decorator';\r\nimport { AttachmentModel } from '../model/attachment.model';\r\nimport { saveAs } from 'file-saver/dist/FileSaver';\r\nimport LanguageUtils from '../service/util/language-utils';\r\nimport DateUtils from '../service/util/date-utils';\r\n\r\n@ProfileClassToConsole()\r\n@Directive()\r\nexport abstract class EditComponent extends BaseGoldenPanel implements OnDestroy, OnInit, AfterViewInit {\r\n\r\n loggedUser: UserModel;\r\n loggedUserProfile :ProfileModel; \r\n\r\n /** Identificador (ObjectId) do objeto sendo criado/editado nessa instância de componente.\r\n * Esse atributo se faz necessário porque na construção da tela o identificador é passado\r\n * para então o modelo ser carregado do serviço (vide ngOnInit dessa directive).\r\n */\r\n id: string = '';\r\n model: EntityModel;\r\n backupModel: EntityModel; // Usado para backup ao salvar\r\n view = {};\r\n initialView = {};\r\n /* Booleano para indicar que a tela esta aguardando a resposta do servidor impedindo que a ação de salvar seja pedida em duplicidade */\r\n isSaving: boolean = false;\r\n timeOutCanSave;\r\n public isBusySaveConfirm: boolean = false;\r\n permission = Permission;\r\n /**booleano para indicar se esta sendo feito copia de um modelo */\r\n copy : boolean = false;\r\n updatingModel: boolean = false;\r\n \r\n readOnly: boolean = true; \r\n\r\n // Context Menu\r\n @ViewChild('contextMenuTrigger', { read: MatMenuTrigger, static: true }) contextMenu: MatMenuTrigger;\r\n contextMenuPosition = { x: '0px', y: '0px' };\r\n contextMenuSelectedItem; // Leave t as any, for now\r\n\r\n mapEvents = MapEvents;\r\n\r\n loadingListService: LoadingListService = new LoadingListService();\r\n\r\n private _saveFinished: BehaviorSubject;\r\n public readonly saveFinished$: Observable;\r\n\r\n constructor(public logger: NGXLogger,\r\n protected entityService: EntityService,\r\n protected dialog: MatDialog,\r\n public modelName: string,\r\n public title: string,\r\n protected storageService: StorageService,\r\n public componentName: string,\r\n public tabTitle: string,\r\n public toastr: ToastrService,\r\n public authorizationService: AuthorizationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, goldenLayout, container);\r\n this.loggedUser = this.storageService.getLocalUser();\r\n this.loggedUserProfile = this.storageService.getLocalProfile();\r\n\r\n this._saveFinished = new BehaviorSubject(false);\r\n this.saveFinished$ = this._saveFinished.asObservable();\r\n logger.debug('EditComponent.constructor()');\r\n }\r\n\r\n ngOnInit() {\r\n this.logger.debug('EditComponent.ngOnInit()');\r\n\r\n this.glUpdateTabTitle(this.modelName);\r\n\r\n this.subscribeToDataEvents();\r\n\r\n if (this.hasEditPopoutData()) {\r\n this.logger.debug(\"EditComponent-hasEditPopoutData\");\r\n const popout = this.getEditPopoutData();\r\n // Don't clear popout data just yet, we still need it to restore the view\r\n this.openModel(popout.id, null, false, null);\r\n }\r\n\r\n this.checkPermissions();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.logger.debug('EditComponent.ngOnDestroy()');\r\n this.id = null;\r\n\r\n this.glUnSubscribeEvent(FILL_DATA_PREFIX + this.componentName, this.fillDataCallback);\r\n this.glUnSubscribeEvent(DELETE_DATA_PREFIX + this.componentName, this.onDeleteData);\r\n this.glUnSubscribeEvent(UPDATE_DATA_PREFIX + this.componentName, this.onModelUpdate);\r\n\r\n this.loadingListService.destroy();\r\n }\r\n\r\n glUpdateTabTitle(tabTitle: string) {\r\n this.tabTitle = tabTitle;\r\n super.glUpdateTabTitle(tabTitle);\r\n }\r\n\r\n subscribeToDataEvents(){\r\n this.glSubscribeEvent(FILL_DATA_PREFIX + this.componentName, this.fillDataCallback);\r\n this.glSubscribeEvent(UPDATE_DATA_PREFIX + this.componentName, this.onModelUpdate);\r\n this.glSubscribeEvent(DELETE_DATA_PREFIX + this.componentName, this.onDeleteData);\r\n }\r\n\r\n fillDataCallback(data){\r\n // Painel não existia, e foi criado vazio\r\n // Preencher os dados do painel por dados novos baseados em modelId\r\n // Podem ser dados existentes ou novos\r\n\r\n // Quando a mensagem de filldata-xxx-edit é enviada para o componente xxx, todos os paineis desse componente recebem a mensagem\r\n // Então temos que garantir que apenas o painel certo processe a mensagem\r\n\r\n // Se for criação não tem o id no painel, tem um texto genérico que termina com '-edit-id'\r\n // Se não for criação, é edição, e o painel já possui o id nele\r\n let id = this.goldenLayoutContainer.parent.id;\r\n if((data.id == id && !data.copy) || data.creation_id == id) {\r\n this.logger.debug(\"EditComponent-OnFillData data.id=\" + data.id);\r\n this.openModel(data.id, data.model, data.copy, data.options);\r\n }\r\n }\r\n\r\n onDeleteData(data){\r\n if (data.id == this.id) {\r\n this.logger.debug('EditComponent.onDeleteData() id:', this.id);\r\n this.restoreInitialView();\r\n this.glContainerClose();\r\n }\r\n }\r\n\r\n private getObjectName(value): string{\r\n if (value.name) return value.name;\r\n if (value.plate) return value.plate; // Veículos\r\n if (value.label) return value.label; // Perguntas e respostas de formulários\r\n if (value.identifier) return value.identifier; // Operações e Eventos\r\n return value.constructor? 'objeto do tipo ' + value.constructor.name: 'objeto sem nome';\r\n }\r\n\r\n private getDiffStr(key, value, index?): string {\r\n if (!value) value = '';\r\n if (key == 'profileId') return ''\r\n if (LanguageUtils.languageMap[key]) key = LanguageUtils.languageMap[key];\r\n if (typeof value == 'object') value = this.getObjectName(value);\r\n else {\r\n if (LanguageUtils.languageMap[value]) value = LanguageUtils.languageMap[value];\r\n else if (DateUtils.isTimestamp(value)) value = DateUtils.timestampToStringInMinutes(value);\r\n }\r\n \r\n if (index) return key + \"[\" + index + \"]\" + \": \" + value + \"\\n\";\r\n else return key + \": \" + value + \"\\n\";\r\n }\r\n\r\n private getModelChangesMsg(originalModel, updatedModel): string{\r\n var differences = diff.diff(originalModel, updatedModel);\r\n if (!differences) return;\r\n\r\n let changes: string = '--- Dados Novos ---\\n';\r\n\r\n let pathChecked = {};\r\n\r\n differences.forEach( diff => {\r\n let key = diff.path[0];\r\n\r\n if (diff.path.length > 1) {\r\n if (pathChecked[key]) return;\r\n pathChecked[key] = true;\r\n }\r\n\r\n switch(diff.kind){\r\n case 'N':{\r\n changes += this.getDiffStr(key, updatedModel[key]);\r\n break;\r\n }\r\n case 'D':{\r\n changes += this.getDiffStr(key, null);\r\n break;\r\n }\r\n case 'E':{\r\n changes += this.getDiffStr(key, updatedModel[key]);\r\n break;\r\n }\r\n default:{ // 'A'\r\n let item = diff.item;\r\n switch (item.kind){\r\n case 'N':{\r\n changes += this.getDiffStr(key, item.rhs, diff.index);\r\n break;\r\n }\r\n case 'D':{\r\n changes += this.getDiffStr(key, null, diff.index);\r\n break;\r\n }\r\n case 'E':{\r\n changes += this.getDiffStr(key, item.rhs, diff.index);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n return changes;\r\n }\r\n\r\n replaceModelViewDateData(data, key){\r\n this.model[key] = data[key];\r\n\r\n if (this.model[key]) {\r\n this.view[key] = DateUtils.timestampToStringInMinutes(this.model[key]);\r\n }\r\n else {\r\n this.view[key] = this.model[key];\r\n }\r\n\r\n this.updateInitialView(key);\r\n }\r\n\r\n replaceModelViewData(data, key){\r\n this.model[key] = data[key];\r\n this.view[key] = data[key];\r\n this.updateInitialView(key);\r\n }\r\n\r\n // Para ser sobrescrita\r\n replaceRunTimeData(data){\r\n // Substitui mudanças dinamicas, que independem da edição do usuário.\r\n // Vai modificar pontualmente model, view e initialView\r\n // Necessário para evitar que viewIsChanged detecte mudanças que não afeta a edição\r\n }\r\n\r\n onModelUpdate(data, checkUpdate: boolean = true){\r\n // Emitido quando o modelo foi atualizado do backend, a lista ouve e repassa para a edição\r\n if (data.id == this.id) {\r\n this.logger.debug(\"EditComponent.OnModelUpdate-\" + this.componentName);\r\n\r\n if (this.updatingModel) {\r\n if (checkUpdate) {\r\n setTimeout(() => {\r\n this.onModelUpdate(data, false);\r\n }, 3000); // 3s\r\n return;\r\n }\r\n else {\r\n return; // Depois de uma tentativa aborta a atualização\r\n }\r\n }\r\n\r\n this.updatingModel = true;\r\n\r\n this.replaceRunTimeData(data);\r\n\r\n if (this.viewIsChanged()) {\r\n // Se tem campos modificados, verifica se tem algo modificado no modelo\r\n let diffMsg = this.getModelChangesMsg(this.model, data);\r\n if (!diffMsg){\r\n // Nenhuma mudança detectada. Foram apenas mudanças em Run Time, não precisa atualizar o resto.\r\n this.updatingModel = false;\r\n return;\r\n }\r\n\r\n let dlg = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n disableClose: true,\r\n data:{\r\n msg: \"Dados novos de \" + this.tabTitle + \" foram recebidos. Desfazer modificações atuais e substituir?\",\r\n title: \"Atenção\",\r\n okLabel: \"Substituir\",\r\n cancelLabel: \"Ignorar\",\r\n cancelTooltip: \"Ignora novos dados e mantém modificações atuais. Dados novos serão perdidos ao salvar.\",\r\n okTooltip: \"Substui dados modificados pelos dados novos. Modificações serão perdidas.\",\r\n linesMsg: diffMsg\r\n }\r\n });\r\n\r\n dlg.afterClosed().pipe(first()).subscribe((result) => {\r\n if (result) {\r\n this.setModel(data, false, null);\r\n }\r\n });\r\n }\r\n else {\r\n this.setModel(data, false, null);\r\n }\r\n }\r\n \r\n this.updatingModel = false;\r\n }\r\n\r\n private updateViewFromPopout() {\r\n if (this.hasEditPopoutData()) {\r\n const popout = this.getEditPopoutData();\r\n this.view = popout.view;\r\n this.setEditPopoutData(null);\r\n }\r\n }\r\n\r\n // Durante a criação, inicializa model e view com alguns valores default, depende de cada modelo\r\n protected abstract createData(options?);\r\n \r\n private openModel(modelId: string, entity: EntityModel, copy: boolean, options: any) {\r\n if (modelId) { /* Edição */\r\n this.glUpdateTabTitle(this.modelName + (copy?': [NOVO]': ''));\r\n if (entity) {\r\n this.setModel(entity, copy, options);\r\n }\r\n else {\r\n this.id = modelId;\r\n this.loadData(copy, options);\r\n }\r\n } else { /* Criação */\r\n this.clearPreviousData(); // Se o modelo é re-carregado em uma edição que já estava aberta (acho que não faz sentido aqui)\r\n\r\n this.glUpdateTabTitle(this.modelName + ': [NOVO]');\r\n this.id = null;\r\n this.readOnly = false;\r\n\r\n // Inicialização da View (criação)\r\n this.createData(options); // Durante a criação, inicializa model e view com alguns valores default, depende de cada modelo\r\n this.updateViewFromPopout();\r\n this.backupInitialView();\r\n\r\n this.loadFormOptionsData();\r\n }\r\n }\r\n\r\n copyModel(src) {\r\n if (!src) return src;\r\n return JSON.parse(JSON.stringify(src));\r\n }\r\n \r\n /**\r\n * Copia todas as propriedades presente em *view* para *model*\r\n */\r\n protected mapViewToModel() {\r\n this.logger.debug(`EditComponent.mapViewToModel() - ${this.modelName}`);\r\n this.model = this.copyModel(this.view);\r\n }\r\n\r\n /**\r\n * Copia todas as propriedades presente em *model* para *view*\r\n */\r\n protected mapModelToView() {\r\n this.logger.debug('EditComponent.mapModelToView() - ' + this.modelName);\r\n\r\n this.view = {};\r\n\r\n if (!this.model) {\r\n return;\r\n }\r\n\r\n this.view = this.copyModel(this.model);\r\n }\r\n\r\n // Inicializa campos do HTML para evitar erros quando o modelo ainda está vazio\r\n // Chamado na ngOnInit e na createData\r\n protected initializeFields(){\r\n }\r\n\r\n public onRevertClick(){\r\n let dlg = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: \"Desfazer modificações e restaurar dados?\",\r\n title: \"Atenção\",\r\n okLabel: \"Desfazer\",\r\n }\r\n });\r\n\r\n dlg.afterClosed().pipe(first()).subscribe((result) => {\r\n if (result) {\r\n if(this.isCreating()){\r\n this.initializeFields();\r\n }else{\r\n this.mapModelToView();\r\n this.restoreFiles();\r\n }\r\n this.backupInitialView();\r\n }\r\n });\r\n }\r\n \r\n // restaura os arquivos salvos do modelo na edição\r\n protected restoreFiles(){\r\n\r\n }\r\n\r\n canRevert(): boolean {\r\n return this.viewIsChanged();\r\n }\r\n\r\n // Cria uma copia da View para ser comparada posteriormente e identificar edições do usuário\r\n protected backupInitialView() {\r\n this.initialView = this.copyModel(this.view);\r\n }\r\n\r\n protected updateInitialView(key) {\r\n this.initialView[key] = this.copyModel(this.view[key]);\r\n }\r\n\r\n /**\r\n * Por referência, voltar(utilizar o backup) o estado da view para a initialView.\r\n */\r\n private restoreInitialView() {\r\n this.view = this.initialView;\r\n }\r\n\r\n /* diff.diff\r\n https://github.com/flitbit/diff/\r\n\r\n kind - indicates the kind of change; will be one of the following:\r\n N - indicates a newly added property/element\r\n D - indicates a property/element was deleted\r\n E - indicates a property/element was edited\r\n A - indicates a change occurred within an array\r\n path - the property path (from the left-hand-side root)\r\n lhs - the value on the left-hand-side of the comparison (undefined if kind === 'N')\r\n rhs - the value on the right-hand-side of the comparison (undefined if kind === 'D')\r\n index - when kind === 'A', indicates the array index where the change occurred\r\n item - when kind === 'A', contains a nested change record indicating the change that occurred at the array index \r\n\r\n Para o caso abaixo:\r\n left = initialView (antigo)\r\n right = view (novo)\r\n */\r\n public viewIsChanged():boolean {\r\n var differences = diff.diff(this.initialView, this.view);\r\n if(!differences) return false;\r\n\r\n let changed = false;\r\n\r\n // DEBUG Útil para debugar campos não tratados corretamente\r\n //this.logger.debug(\"viewIsChanged()\", differences);\r\n\r\n differences.forEach( diff => {\r\n switch(diff.kind){\r\n case 'N':{\r\n if(diff.rhs && diff.rhs != ''){\r\n changed = true;\r\n }\r\n break;\r\n }\r\n case 'D':{\r\n if(diff.lhs && diff.lhs != ''){\r\n changed = true;\r\n }\r\n break;\r\n }\r\n case 'E':{ //Edit - one of the two must contain some changes\r\n if((diff.lhs && diff.lhs != '') || (diff.rhs && diff.rhs != '')){\r\n changed = true;\r\n }\r\n break;\r\n }\r\n default:{\r\n changed = true;\r\n }\r\n }\r\n });\r\n\r\n return changed;\r\n }\r\n \r\n protected getRecord(id: string, extraParams?: Map, options?: any) {\r\n return this.entityService.getRecord(id, this.getExtraParams());\r\n }\r\n\r\n canEdit(): boolean {\r\n return true;\r\n }\r\n\r\n onEnableEditClick() {\r\n if (this.canEdit()) {\r\n this.readOnly = false;\r\n }\r\n }\r\n\r\n onCopyClick() {\r\n this.glOpenContainer(this.componentName, {id: this.id, model: this.model, copy: true});\r\n }\r\n \r\n onDeleteClick() {\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: 'Remover ' + this.modelName + '?',\r\n title: 'Remover ' + this.modelName,\r\n okLabel: 'Remover',\r\n identifier: this.model['plate']? this.model['plate']: (this.model['identifier']? this.model['identifier']: this.model['name']),\r\n showIdentifier: true\r\n }\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.logger.debug('EditComponent.onDeleteClick()');\r\n this.entityService.delete(this.model, this.getExtraParams()).pipe(first()).subscribe((deletedRecord: any) => {\r\n this.logger.debug('EditComponent.onDeleteClick - Element deleted: ', deletedRecord.id);\r\n let name = \"\"\r\n if (deletedRecord.name) {\r\n name = deletedRecord.name;\r\n }\r\n else if (deletedRecord.plate) {\r\n name = deletedRecord.plate;\r\n }\r\n this.postEntityDeleteProcess(this.model);\r\n this.toastr.success(this.modelName + \" \" + name + \" foi removido(a) com sucesso\");\r\n this.glEmitEvent(DELETE_DATA_PREFIX + this.componentName, {id: deletedRecord.id});\r\n },\r\n (error) => {\r\n this.logger.error(error)\r\n this.toastr.error(\"Não foi possível remover \" + this.modelName + \":\" + \"\\n\" + error.error.message);\r\n });\r\n }\r\n });\r\n }\r\n\r\n postEntityDeleteProcess(entity: EntityModel) {}\r\n\r\n // Chamada depois de carregar o modelo existente (load ou copy ou open)\r\n private setModel(entity: EntityModel, copy: boolean, options: any) {\r\n // Se o modelo é re-carregado em uma edição que já estava aberta\r\n // Serve para remover valores de dados externos ao modelo que podem não estar inicializados no modelo novo\r\n this.clearPreviousData();\r\n\r\n this.model = this.copyModel(entity);\r\n this.id = entity.id;\r\n \r\n if (!this.model) {\r\n this.logger.error('Não foi possível carregar o ' + this.modelName);\r\n this.openAlertDialog('Erro, não foi possível carregar o objeto ' + this.modelName);\r\n return;\r\n }\r\n\r\n if (copy) {\r\n this.clearCopyData(); // Limpa dados do model, depois de load/copy, que não devem ser copiados\r\n this.copy = true;\r\n this.readOnly = false;\r\n }\r\n\r\n if (!this.canEdit()){\r\n this.readOnly = true;\r\n }\r\n\r\n // Chamada depois que o model foi carregado, mas antes da view ser inicializada\r\n // Serve para reforçar certos campos do model\r\n this.afterLoadData(options);\r\n\r\n // Inicialização da View (load/copy)\r\n this.mapModelToView();\r\n this.updateViewFromPopout();\r\n this.backupInitialView();\r\n\r\n this.loadFormOptionsData();\r\n }\r\n\r\n /**\r\n * @description Loads the current object being created/edited attributes on the screen components!!\r\n */\r\n protected loadData(copy: boolean, options: any) {\r\n this.logger.debug('EditComponent.loadData() - ' + this.modelName);\r\n\r\n this.getRecord(this.id, this.getExtraParams(), options).pipe(first()).subscribe((entity: EntityModel) => {\r\n this.setModel(entity, copy, options);\r\n });\r\n }\r\n\r\n protected getExtraParams() {\r\n return null;\r\n }\r\n\r\n // Chamada depois que o model foi carregado, mas antes da view ser inicializada\r\n // Serve para reforçar certos campos do model\r\n protected afterLoadData(options){}\r\n\r\n // Se o modelo é re-carregado em uma edição que já estava aberta\r\n // Serve para remover valores de dados externos ao modelo que podem não estar inicializados no modelo novo\r\n protected clearPreviousData(){\r\n }\r\n\r\n // Limpa dados do model, depois de load/copy, que não devem ser copiados\r\n protected clearCopyData(){\r\n this.id = null;\r\n this.model['id'] = null;\r\n }\r\n\r\n /**\r\n * @description Ação executada quando o usuário clica em Salvar\r\n * @param saveClickEvent O clickEvent do botão salvar\r\n */\r\n onSaveClick(saveClickEvent?) {\r\n this.logger.debug(`EditComponent.onSaveClick() - ${this.modelName}`);\r\n\r\n this.isSaving = true;\r\n this.backupModel = this.copyModel(this.model);\r\n this.mapViewToModel();\r\n\r\n // Se o entity está sendo criado\r\n if (this.isCreating()) {\r\n return this.saveCreatedModel();\r\n }else { // Else, o entity está sendo editado\r\n return this.saveEditedModel();\r\n }\r\n }\r\n\r\n entitySaved(entity: EntityModel){\r\n this.model = entity;\r\n this.mapModelToView();\r\n this.backupInitialView();\r\n\r\n let message = `${this.modelName} salvo(a) com sucesso.`;\r\n\r\n this.toastr.info(message);\r\n this.logger.debug(message);\r\n\r\n this.glEmitEvent(SAVE_DATA_PREFIX + this.componentName, {entity: this.model});\r\n\r\n this.isSaving = false;\r\n this.backupModel = null;\r\n this._saveFinished?.next(true);\r\n }\r\n\r\n entitySaveError(error: any){\r\n // Ao terminar a edição o botão salvar deve ser liberado\r\n this.isSaving = false;\r\n this.model = this.copyModel(this.backupModel); // Restaura o modelo de depois de erro ao salvar\r\n this.backupModel = null;\r\n this._saveFinished?.next(true);\r\n\r\n if (error.error && error.error.exceptionName && error.error.exceptionName.endsWith(\"DuplicateFieldException\"))\r\n throw(error);\r\n else if(error.error && error.error.message != null){ \r\n this.toastr.error(`Erro ao salvar ${this.modelName}: ` + error.error.message);\r\n }\r\n else\r\n this.toastr.error(`Erro ao salvar ${this.modelName}: ` + (error.error?.errorDetails ? error.error?.errorDetails: ''));\r\n\r\n this.logger.error(`Erro ao salvar ${this.modelName} de id ${this.model.id}`, error);\r\n }\r\n\r\n saveEditedModel(){\r\n this.logger.debug('EditComponent.saveEditedModel');\r\n this.entityService.editRecord(this.model, this.getExtraParams()).pipe(first()).subscribe((entity: EntityModel) => {\r\n this.entitySaved(entity);\r\n },\r\n error => this.entitySaveError(error));\r\n }\r\n\r\n saveCreatedModel(){\r\n this.logger.debug('EditComponent.saveCreatedModel');\r\n\r\n this.entityService.createRecord(this.model, this.getExtraParams()).pipe(first()).subscribe(( entity: EntityModel ) => {\r\n // Atualizando o ID dos componentes criados.\r\n // Com isso a próxima ação de salvar será reconhecida como uma edição\r\n this.id = entity.id;\r\n this.glUpdateCreateId(this.id);\r\n\r\n this.entitySaved(entity);\r\n },\r\n error => {\r\n this.entitySaveError(error)\r\n });\r\n }\r\n\r\n /**\r\n * Verifica se a tela esta operando uma ação de edição (PUT) ou de criação (POST) de um entity.\r\n */\r\n public isCreating(): boolean {\r\n return !this.id;\r\n }\r\n\r\n // Usado para carregar valores para combos\r\n // chamada depois de carregar/copiar o modelo ou criar um novo\r\n protected loadFormOptionsData() {}\r\n\r\n protected openAlertDialog(message: string) {\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: message,\r\n title: this.title,\r\n hideOkButton: true,\r\n cancelLabel: 'Fechar'\r\n }\r\n });\r\n }\r\n\r\n protected openSimpleConfirmDialog(message: string) {\r\n return this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: message,\r\n title: \"Atenção\",\r\n hideOkButton: true,\r\n showDiscardButton: true\r\n }\r\n });\r\n }\r\n\r\n protected openConfirmDialog(message: string){\r\n return this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: message,\r\n title: \"Atenção\",\r\n okLabel: \"Salvar\",\r\n showDiscardButton: true\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @description Called when the user clicks the Cancel button. It cancels the create/edit operation and returns to the main panel.\r\n */\r\n onCancelClick(event?) {\r\n this.logger.debug('EditComponent.onCancelClick() - ' + this.modelName);\r\n this.restoreInitialView();\r\n this.glContainerClose();\r\n }\r\n\r\n /** @description Returns a dummy UserModel derived from the loggedUser with only name and login copied.\r\n * Used to set the Author in PatrolEdit and\r\n * Used to set the Analyst in EventEdit.\r\n */\r\n public getCurrentUser(): UserModel {\r\n const currentUser = new UserModel(); \r\n currentUser.login = this.loggedUser.login;\r\n currentUser.name = this.loggedUser.name;\r\n return currentUser;\r\n }\r\n\r\n /**\r\n * Método utilitário que sinaliza que os requisitos de preenchimento do formulário foram preenchidos.\r\n * Caso a classe filha faça override, será de sua responsabilidade definir os campos obrigatórios.\r\n */\r\n protected isRequiredFieldFilled(): boolean {\r\n return true;\r\n }\r\n\r\n /**\r\n * Verifica se o usuário é administrador do sistema.\r\n */\r\n isAdmin(): boolean {\r\n return this.authorizationService.isAdmin();\r\n }\r\n\r\n /**\r\n * Verifica se todas as condições para salvamento foram preenchidas\r\n */\r\n canSave(): boolean { // Pode salvar quando:\r\n return this.isRequiredFieldFilled() && // Campos Obrigatórios preenchidos\r\n !this.isSaving && ( // Não está salvando (aguardando retorno do backend)\r\n this.isCreating() || // É uma criação ou\r\n this.viewIsChanged() // É uma edição e tem campos modificados\r\n );\r\n }\r\n\r\n getRequiredFieldNames(): string [] {\r\n return [''];\r\n }\r\n\r\n private getRequiredFields(): string {\r\n let names = this.getRequiredFieldNames();\r\n let str = '';\r\n names.forEach(n => str = str + '
  • ' + n + '
  • ');\r\n return str;\r\n }\r\n /**\r\n * Método utilitário para sinalizar o porque que o formulário não pode ser submetido\r\n */\r\n enterCanSave() {\r\n this.timeOutCanSave = setTimeout(() => {\r\n if (!this.canSave()) {\r\n if (!this.isRequiredFieldFilled()) {\r\n this.toastr.info('Campo(s) obrigatório(s) não preenchido(s):
    ' + this.getRequiredFields());\r\n return;\r\n }\r\n\r\n if (this.isSaving) {\r\n this.timeOutCanSave = setTimeout(() => {\r\n this.toastr.info('Salvando. Aguarde...');\r\n this.timeOutCanSave = null;\r\n }, 2 * MOUSE_ENTER_TIME);\r\n return;\r\n }\r\n }\r\n \r\n this.timeOutCanSave = null;\r\n }, MOUSE_ENTER_TIME);\r\n }\r\n\r\n leaveCanSave() {\r\n if (this.timeOutCanSave) {\r\n clearTimeout(this.timeOutCanSave);\r\n this.timeOutCanSave = null;\r\n }\r\n }\r\n\r\n numbersOnly(event: KeyboardEvent): boolean {\r\n return event.key >= '0' && event.key <= '9';\r\n }\r\n\r\n // Preserve original property order\r\n originalOrder = (a: KeyValue, b: KeyValue): number => {\r\n return 0;\r\n }\r\n\r\n compareObjects(o1: any, o2: any): boolean {\r\n return o1 && o2 && (o1.id === o2.id);\r\n }\r\n\r\n async glOnClose() {\r\n if(this.viewIsChanged()) {\r\n this.logger.debug(\"EditComponent.glOnClose()\");\r\n this.showSaveConfirmDialog().pipe(first()).subscribe((option:boolean) => {\r\n this.isBusySaveConfirm = false;\r\n if(typeof(option) === 'string') {//discard\r\n this.logger.debug(\"EditComponent-AfterConfirmDialog Discard\");\r\n this.restoreInitialView();\r\n this.glContainerClose(); // Vai trigar a glOnClose, por isso restauramos a View\r\n }\r\n else if(option) {//save\r\n this.logger.debug(\"EditComponent-AfterConfirmDialog Save\");\r\n this.onSaveClick();\r\n // Preciso esperar o processo de Salvar terminar para fechar o painel\r\n this.saveFinished$.pipe(first()).subscribe(() => {\r\n this.logger.debug(\"EditComponent-AfterSaveFinished OnClose\");\r\n this.restoreInitialView();\r\n this.glContainerClose(); // Vai trigar a glOnClose, por isso restauramos a View\r\n });\r\n }\r\n else if(!option) { //cancel ou clicar fora do dialogo\r\n this.logger.debug(\"EditComponent-AfterConfirmDialog Cancel\");\r\n return;\r\n }\r\n });;\r\n this.glUnSubscribeEvent(\"close\");\r\n }\r\n }\r\n\r\n protected showSaveConfirmDialog(): Observable {\r\n let dialog;\r\n\r\n if (this.canSave())\r\n dialog = this.openConfirmDialog(\"Dados não salvos.\"); // Salvar+Descartar+Cancelar\r\n else\r\n dialog = this.openSimpleConfirmDialog(\"Dados não salvos, mas salvar não é permitido. Verifique campos obrigatórios.\"); // Descartar+Cancelar\r\n\r\n this.isBusySaveConfirm = true;\r\n\r\n return dialog.afterClosed();\r\n }\r\n\r\n getShowSpinner() {\r\n return this.loadingListService.getShowSpinner();\r\n }\r\n\r\n loadingOn() {\r\n this.loadingListService.loadingOn();\r\n }\r\n\r\n loadingOff() {\r\n this.loadingListService.loadingOff();\r\n }\r\n\r\n getEditPopoutData() {\r\n return this.storageService.getPopoutData();\r\n }\r\n\r\n setEditPopoutData(data): void {\r\n this.storageService.setPopoutData(data);\r\n }\r\n\r\n hasEditPopoutData(): boolean {\r\n return this.storageService.hasPopoutData();\r\n }\r\n\r\n glOnPopout() {\r\n super.glOnPopout();\r\n this.setEditPopoutData({id: this.id, view: this.view});\r\n }\r\n\r\n glOnPopin() {\r\n super.glOnPopin();\r\n this.setEditPopoutData({id: this.id, view: this.view});\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.logger.debug(\"EditComponent.ngAfterViewInit()\");\r\n this.glEmitEvent(PAGE_READY_PREFIX + this.componentName, null);\r\n }\r\n\r\n getUserNameLoginTitle(user) {\r\n return UserModel.getUserTitle(user);\r\n }\r\n\r\n openContextMenu(event: MouseEvent, row) {\r\n event.preventDefault();\r\n this.contextMenuSelectedItem = row;\r\n\r\n this.contextMenuPosition.x = event.clientX + 'px';\r\n this.contextMenuPosition.y = event.clientY + 'px';\r\n this.contextMenu.menu.focusFirstItem('mouse');\r\n this.contextMenu.openMenu();\r\n }\r\n\r\n onLocationClick(entity: any, mapEvent: MapEvents) {\r\n this.glOpenContainer(MAP_PAGE, {entity: entity, mapEvent: mapEvent});\r\n }\r\n /**\r\n * Seleciona o usuário logado na lista de usuários como padrão.\r\n */\r\n protected currentUserAsField(fieldName: string) {\r\n this.view[fieldName] = this.loggedUser;\r\n }\r\n\r\n // sobrescrita nas clases, verifica as permissões dos usuários.\r\n protected checkPermissions(){}\r\n\r\n /** Abre no navegador (ou baixa) o arquivo\r\n * imagens e .pdf são apresentados numa nova aba\r\n * outros arquivos é feito download\r\n */\r\n viewFile(file: File, attachmentData : AttachmentModel){\r\n if(file){\r\n if (attachmentData.extension === 'jpg' ||\r\n attachmentData.extension === 'gif' ||\r\n attachmentData.extension === 'jpeg' ||\r\n attachmentData.extension === 'pdf'){\r\n \r\n let blob, url;\r\n const fr = new FileReader();\r\n fr.readAsArrayBuffer(file); \r\n \r\n fr.onload = (e: any) => { \r\n blob = new Blob([fr.result], {type : attachmentData.type});\r\n url = window.URL.createObjectURL(blob);\r\n window.open(url, '_blank'); \r\n };\r\n\r\n } \r\n else { \r\n let filename = attachmentData.name + \".\" + attachmentData.extension; \r\n saveAs(file, filename);\r\n } \r\n }\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n","import { DcModel } from './../../model/dc.model';\r\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output, AfterViewInit } from '@angular/core';\r\nimport * as L from 'leaflet';\r\nimport * as esriGeocoder from 'esri-leaflet-geocoder';\r\nimport 'leaflet-draw';\r\nimport 'leaflet-contextmenu';\r\nimport 'leaflet.markercluster';\r\nimport 'leaflet.measurecontrol';\r\nimport { LayerService } from '../../service/model/layer.service';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { MapInfo, Icons, FILTER_OPTION_ALL } from '../../common/constants';\r\nimport { TrackingModel } from 'src/app/model/tracking.model';\r\nimport { LayerFilterModel } from '../../model/layer.filter.model';;\r\nimport { ObservedAreaService } from 'src/app/service/model/observed.area.service';\r\nimport { first } from 'rxjs/operators';\r\nimport { ObservedAreaModel } from 'src/app/model/observed.area.model';\r\nimport { ValveModel } from 'src/app/model/valve.model';\r\nimport { GeoModel } from 'src/app/model/geo.model';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { Permission } from 'src/app/model/enums.enum';\r\nimport { SourceType } from '../../model/enums.enum';\r\nimport { BandModel } from '../../model/band.model';\r\nimport { DuctModel } from '../../model/duct.model';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\nimport { SimfModel } from '../../model/simf.model';\r\nimport { KilometerMarkModel } from '../../model/kilometerMark.model';\r\nimport FieldUtils from 'src/app/service/util/field-utils';\r\n\r\n// Obs: Nível máximo de Zoom é 20\r\nconst ZOOM_LEVEL_TO_SHOW_KILOMETER_MARKS = 12;\r\nconst CLUSTERING_ZOOM_LEVEL = 14;\r\n\r\n@ProfileClassToConsole()\r\n@Component({\r\n selector: 'app-base-map',\r\n templateUrl: './base-map.component.html',\r\n styleUrls: ['./base-map.component.scss']\r\n})\r\nexport class BaseMapComponent implements OnInit, OnDestroy, AfterViewInit {\r\n public DC_HISTORY_ID = 'Histórico de DCs';\r\n public BAND_ID = 'Faixas';\r\n public GASDUCT_ID = 'Gasodutos';\r\n public OILDUCT_ID = 'Oleodutos';\r\n public SIMF_ID = 'SIMF';\r\n public DELIVERY_POINT_ID = 'Pontos de Entrega e Estações';\r\n public KILOMETER_MARK_ID = 'Marcos Quilométricos';\r\n public REFINARY_ID = 'Refinarias';\r\n public TERMINAL_ID = 'Terminais';\r\n public VALVE_ID = 'Válvulas';\r\n public OBSERVED_AREA_ID = 'Áreas Observadas';\r\n\r\n private lightBaseLayerName = 'Leve';\r\n private streetBaseLayerName = 'Ruas';\r\n private hybridBaseLayerName = 'Híbrido';\r\n\r\n private CONTEXTMENU: any = {\r\n contextmenu: true, contextmenuItems: [{\r\n text: 'Criar Evento...',\r\n callback: (e) => { this.onCreateEvent(e)},\r\n index: 0\r\n },{\r\n text: 'Criar Verificação...',\r\n callback: (e) => { this.onCreateVerification(e)},\r\n index: 1\r\n }]\r\n }\r\n\r\n @Input() startWithStreet: boolean = false;\r\n\r\n @Input() lat: number = MapInfo.DEFAULT_LATITUDE;\r\n @Input() lng: number = MapInfo.DEFAULT_LONGITUDE;\r\n\r\n private _filterMap: LayerFilterModel;\r\n\r\n @Input()\r\n set filterMap(filter: LayerFilterModel){\r\n this._filterMap = filter;\r\n if (this.layersControl){\r\n this.updateAllFilters();\r\n }\r\n }\r\n\r\n get filterMap(): LayerFilterModel{\r\n return this._filterMap;\r\n }\r\n\r\n // Propriedades do componente (usados no HTML)\r\n\r\n @Input() markerLayers = []; // leafletLayers - aqui adicionamos os marcadores individuais do tipo alertas, pontos e eventos, assim como marcadores de estado das operações\r\n @Input() mapStyle; // ngStyle do leaflet\r\n @Output() mapReady = new EventEmitter();\r\n @Output() mapEditUpdate = new EventEmitter();\r\n @Output() eventClicked = new EventEmitter();\r\n @Output() verificationClicked = new EventEmitter();\r\n @Output() layerReady = new EventEmitter();\r\n public options: any; // leafletOptions - usado somente na criação do mapa\r\n public layersControl: any; // leafletLayersControl\r\n\r\n // Internos\r\n\r\n private map: L.Map;\r\n private vehicleTrackingLayer: L.MarkerClusterGroup = this.createClusterGroup('assets/icons/vehicle.png');\r\n private userTrackingLayer: L.MarkerClusterGroup = this.createClusterGroup('assets/icons/professional.png');\r\n private allKmMarks: GeoModel[];\r\n public geoLayers: L.FeatureGroup[] = [];\r\n // Parametros de criação do geoLayer para cada um dos layers\r\n // Para que possam ser re-criados cada vez que a visualização é ligada, já que são destruídos quando é desligada\r\n // Marcos Quilométricos possuem tratamento diferenciado, pela quantidade de dados\r\n private geoLayerParam: {data: GeoModel[], isPoint: boolean, style: any, icon: string, filter_icon: string, getPopupContent: (feature: any) => string, filteredData: GeoModel[]}[] = [];\r\n\r\n layersMap: Map;\r\n\r\n addressResultsGroup: L.LayerGroup;\r\n\r\n trackingMarker = L.Marker.include({mobileObjectId: '', patrolTeamId: ''});\r\n\r\n drawLayer = new L.FeatureGroup();\r\n drawOptions: L.Control.DrawConstructorOptions;\r\n drawLocal;\r\n shownDraw: boolean;\r\n drawControl: L.Control.Draw;\r\n opacity: number = 1.0;\r\n\r\n constructor(private layerService: LayerService,\r\n private observedAreaService: ObservedAreaService,\r\n private logger: NGXLogger,\r\n protected authorizationService: AuthorizationService) {}\r\n\r\n ngOnDestroy() {\r\n this.logger.debug('BaseMapComponent.ngOnDestroy()');\r\n this.layersControl = null;\r\n this.geoLayers = null;\r\n this.map = null;\r\n this.geoLayerParam = null;\r\n this.options = null;\r\n this.markerLayers = [];\r\n }\r\n\r\n ngAfterViewInit(){\r\n this.logger.debug(\"BaseMapComponent.ngAfterViewInit()\");\r\n this.generateGeoLayers();\r\n }\r\n\r\n ngOnInit() {\r\n this.logger.debug('BaseMapComponent.ngOnInit()');\r\n\r\n // Layers de fundo (o mapa em si)\r\n const baseLayers = this.generateBaseLayers();\r\n\r\n // Layers que aparecem no controle de camadas\r\n this.layersControl = {\r\n baseLayers // layers básicos do mapa: somente ruas ou com terreno\r\n };\r\n\r\n // Inicialização default para qual layer de fundo usar\r\n let startBaseLayerName = this.streetBaseLayerName;\r\n if (!this.startWithStreet) {\r\n startBaseLayerName = this.hybridBaseLayerName;\r\n }\r\n\r\n // Usado somente na criação do Mapa, mudanças posteriores são ignoradas\r\n this.options = {\r\n // measureControl: true, -- se usar dessa forma, não consigo customizar o controle de medição\r\n zoom: MapInfo.DEFAULT_ZOOM,\r\n center: L.latLng(this.lat, this.lng),\r\n contextmenu: true,\r\n layers: [ baseLayers[startBaseLayerName] ]\r\n };\r\n\r\n this.drawOptions = {\r\n position: 'bottomright',\r\n draw: {\r\n marker: {\r\n icon: L.icon({\r\n iconUrl: Icons.ICON_URL_CRITICAL_POINT,\r\n iconSize: [ MapInfo.ROUTE_ICON_SIZE, MapInfo.ROUTE_ICON_SIZE ],\r\n iconAnchor: [ MapInfo.ROUTE_ICON_SIZE/2, MapInfo.ROUTE_ICON_SIZE/2 ] // no centro do ícone\r\n }),\r\n repeatMode: true\r\n },\r\n polyline: {\r\n shapeOptions: {\r\n dashArray: undefined,\r\n color: MapInfo.DRAW_LINE_COLOR,\r\n opacity: 1.0,\r\n weight: MapInfo.DRAW_LINE_WEIGHT\r\n }\r\n },\r\n polygon: false,\r\n circle: false,\r\n circlemarker: false,\r\n rectangle: false\r\n },\r\n edit: {\r\n featureGroup: this.drawLayer,\r\n edit: {\r\n selectedPathOptions: {\r\n dashArray: undefined,\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.drawLocal = {\r\n draw: {\r\n toolbar: {\r\n actions: {\r\n title: 'Cancelar edição',\r\n text: 'Cancelar'\r\n },\r\n finish: {\r\n title: 'Terminar edição',\r\n text: 'Terminar'\r\n },\r\n undo: {\r\n title: 'Remover último ponto',\r\n text: 'Remover último ponto'\r\n },\r\n buttons: {\r\n polyline: 'Adicionar rota',\r\n marker: 'Adicionar ponto',\r\n }\r\n },\r\n handlers: {\r\n marker: {\r\n tooltip: {\r\n start: 'Clique no mapa para posicionar o ponto.'\r\n }\r\n },\r\n polyline: {\r\n tooltip: {\r\n start: 'Clique para iniciar uma linha.',\r\n cont: 'Clique para continuar a linha.',\r\n end: 'Clique no último ponto para terminar a linha.'\r\n }\r\n }\r\n }\r\n },\r\n edit: {\r\n toolbar: {\r\n actions: {\r\n save: {\r\n title: 'Salvar modificações',\r\n text: 'Salvar'\r\n },\r\n cancel: {\r\n title: 'Cancelar edição, descarta todas as modificações',\r\n text: 'Cancelar'\r\n },\r\n clearAll: {\r\n title: 'Remove todos os pontos',\r\n text: 'Remover tudo'\r\n }\r\n },\r\n buttons: {\r\n edit: 'Editar',\r\n editDisabled: 'Nada para editar',\r\n remove: 'Remover',\r\n removeDisabled: 'Nada para remover'\r\n }\r\n },\r\n handlers: {\r\n edit: {\r\n tooltip: {\r\n text: 'Arraste os pontos para modifica-los.',\r\n subtext: 'Clique em Cancelar para desfazer modificações.'\r\n }\r\n },\r\n remove: {\r\n tooltip: {\r\n text: 'Clique em um elemento para remove-lo.'\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }\r\n\r\n /*********************** BASE MAPS *****************************/\r\n\r\n private generateBaseLayers(){\r\n /* Google */\r\n // lyrs\r\n // Hybrid: s,h;\r\n // Satellite: s;\r\n // Streets: m;\r\n // Terrain: p;\r\n const baseStreetGoogle = L.tileLayer('http://{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}', {\r\n maxZoom: 20,\r\n subdomains: ['mt0', 'mt1', 'mt2', 'mt3']\r\n });\r\n const baseHybridGoogle = L.tileLayer('http://{s}.google.com/vt/lyrs=s,h&x={x}&y={y}&z={z}', {\r\n maxZoom: 20,\r\n subdomains: ['mt0', 'mt1', 'mt2', 'mt3']\r\n });\r\n\r\n /* ArcGIS\r\n var mapLink = 'Esri';\r\n var wholink = 'i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community';\r\n L.tileLayer(\r\n 'http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}', {\r\n attribution: '© '+mapLink+', '+wholink,\r\n maxZoom: 18,\r\n }).addTo(map);\r\n */\r\n\r\n /* Mapbox */\r\n // https://docs.mapbox.com/api/maps/styles/\r\n const mapboxAccessToken = 'pk.eyJ1IjoibGJhcnJvcyIsImEiOiJjazkxYmozNHIwODV3M2hwNnZiM2s2OHJrIn0.pUhb9kWdU6mWUHLlxrdn5w';\r\n const mapboxAttribution = 'Map data © OpenStreetMap contributors, CC-BY-SA, Imagery © Mapbox';\r\n const mapboxUrlTemplate = 'https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}';\r\n\r\n const lightStreet = L.tileLayer(mapboxUrlTemplate, {\r\n attribution: mapboxAttribution,\r\n id: 'mapbox/light-v10',\r\n tileSize: 512,\r\n zoomOffset: -1,\r\n maxZoom: 20,\r\n accessToken: mapboxAccessToken\r\n });\r\n const baseStreet = L.tileLayer(mapboxUrlTemplate, {\r\n attribution: mapboxAttribution,\r\n id: 'mapbox/streets-v11',\r\n tileSize: 512,\r\n zoomOffset: -1,\r\n maxZoom: 20,\r\n accessToken: mapboxAccessToken\r\n });\r\n const baseHybrid = L.tileLayer(mapboxUrlTemplate, {\r\n attribution: mapboxAttribution,\r\n id: 'mapbox/satellite-streets-v11',\r\n tileSize: 512,\r\n zoomOffset: -1,\r\n maxZoom: 20,\r\n accessToken: mapboxAccessToken\r\n });\r\n\r\n const baseLayer = {};\r\n baseLayer[this.lightBaseLayerName] = lightStreet;\r\n baseLayer[this.streetBaseLayerName] = baseStreet;\r\n baseLayer[this.streetBaseLayerName+'-Google'] = baseStreetGoogle;\r\n baseLayer[this.hybridBaseLayerName] = baseHybrid;\r\n baseLayer[this.hybridBaseLayerName+'-Google'] = baseHybridGoogle;\r\n return baseLayer;\r\n }\r\n\r\n /*********************** CAMADAS *****************************/\r\n\r\n /**\r\n * Obtem as camadas do mapa e as adiciona ao componente de mapa\r\n */\r\n private generateGeoLayers(){\r\n this.logger.debug('BaseMapComponent - Generating GeoLayers...');\r\n\r\n // Áreas Observadas\r\n this.initializeObservedAreaLayer();\r\n\r\n // Faixas\r\n this.initializeBandLayer();\r\n\r\n // Pontos de entrega\r\n this.initializeDeliveryPointLayer();\r\n\r\n // Gasodutos\r\n this.initializeGasductLayer();\r\n\r\n // Oleodutos\r\n this.initializeOilductLayer();\r\n\r\n // Simf\r\n this.initializeSimfLayer();\r\n\r\n // Marcos Quilométricos\r\n this.initializeKmMarkersLayer();\r\n\r\n // Refinarias\r\n this.initializeRefinaryLayer();\r\n\r\n // Terminais\r\n this.initializeTerminalLayer();\r\n\r\n // Válvulas\r\n this.initializeValveLayer();\r\n\r\n // Histórico de DCs\r\n this.initializeDcsHistoryLayer();\r\n }\r\n\r\n public updateGeoLayer(dataType: string) {\r\n switch (dataType) {\r\n case (\"Band\"): {\r\n this.initializeBandLayer();\r\n break;\r\n };\r\n case (\"GasDuct\"): {\r\n this.initializeGasductLayer();\r\n break;\r\n };\r\n case (\"OilDuct\"): {\r\n this.initializeOilductLayer();\r\n break;\r\n };\r\n case (\"Simf\"): {\r\n this.initializeSimfLayer();\r\n break;\r\n };\r\n case (\"KilometerMark\"): {\r\n this.initializeKmMarkersLayer();\r\n break;\r\n };\r\n case (\"DeliveryPoint\"): {\r\n this.initializeDeliveryPointLayer();\r\n break;\r\n };\r\n case (\"Terminal\"): {\r\n this.initializeTerminalLayer();\r\n break;\r\n };\r\n case (\"Refinary\"): {\r\n this.initializeRefinaryLayer();\r\n break;\r\n };\r\n case (\"Dc\"): {\r\n this.initializeDcsHistoryLayer();\r\n break;\r\n };\r\n case (\"Valve\"): {\r\n this.initializeValveLayer();\r\n break;\r\n };\r\n case (\"ObservedArea\"): {\r\n this.initializeObservedAreaLayer();\r\n break;\r\n };\r\n }\r\n }\r\n\r\n public initializeObservedAreaLayer(){\r\n this.observedAreaService.loadListFromRestApi().pipe(first()).subscribe((observedAreas: GeoModel[]) => {\r\n if (!this.geoLayers) return; // Terminou de carregar depois que o mapa foi fechado\r\n this.logger.debug('BaseMapComponent - Getting Observed Areas...');\r\n this.fixLayerType(observedAreas, \"ObservedArea\");\r\n let showOnMap = false;\r\n if (this.geoLayers[this.OBSERVED_AREA_ID]){\r\n if (this.map.hasLayer(this.geoLayers[this.OBSERVED_AREA_ID])) showOnMap = true;\r\n this.removeLayerFromMap(this.geoLayers[this.OBSERVED_AREA_ID]);\r\n }\r\n this.initializeGeoLayer(this.OBSERVED_AREA_ID, observedAreas, false,\r\n {\r\n color: MapInfo.OBSERVED_AREA_LINE_COLOR,\r\n weight: MapInfo.OBSERVED_AREA_LINE_WEIGHT,\r\n dashArray: MapInfo.OBSERVED_AREA_LINE_STYLE\r\n },\r\n 'assets/icons/layers/obs_area.png', 'assets/icons/filters/obs_area.png', ObservedAreaModel.getPopupContent);\r\n\r\n if (showOnMap){\r\n this.addLayerToMap(this.geoLayers[this.OBSERVED_AREA_ID]);\r\n }\r\n\r\n },(error) => {\r\n this.logger.error('Erro ao obter o áreas observadas do mapa: ', error);\r\n });\r\n }\r\n\r\n // Para compatibilidade com dados antigos\r\n public fixLayerType(geoLayers: GeoModel[], type: string){\r\n geoLayers.forEach(layer => {\r\n layer.type = type;\r\n });\r\n }\r\n\r\n fixDcName(geoLayers: GeoModel[]){\r\n geoLayers.forEach(layer => {\r\n if (!layer.name) DcModel.updateName(layer as DcModel);\r\n });\r\n }\r\n\r\n public initializeBandLayer() {\r\n this.layerService.getBands().pipe(first()).subscribe((bands: GeoModel[]) => {\r\n if (!this.geoLayers) return; // Terminou de carregar depois que o mapa foi fechado\r\n this.logger.debug('BaseMapComponent - Getting bands...');\r\n this.fixLayerType(bands, \"Band\");\r\n if (this.geoLayers[this.BAND_ID]){\r\n this.removeLayerFromMap(this.geoLayers[this.BAND_ID]);\r\n }\r\n this.initializeGeoLayer(this.BAND_ID, bands, false,\r\n { color: MapInfo.BAND_COLOR, weight: MapInfo.DUCT_WEIGHT }, null, 'assets/icons/filters/duct.png', BandModel.getPopupContent);\r\n this.addLayerToMap(this.geoLayers[this.BAND_ID]); // Adiciona Faixas por padrão ao inicializar\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter as faixas do mapa. ', error);\r\n });\r\n }\r\n\r\n public initializeDeliveryPointLayer() {\r\n this.layerService.getDeliveryPoints().pipe(first()).subscribe((deliveryPoints: GeoModel[]) => {\r\n if (!this.geoLayers) return; // Terminou de carregar depois que o mapa foi fechado\r\n this.logger.debug('BaseMapComponent - Getting delivery points...');\r\n this.fixLayerType(deliveryPoints, \"DeliveryPoint\");\r\n let showOnMap = false;\r\n if (this.geoLayers[this.DELIVERY_POINT_ID]){\r\n if (this.map.hasLayer(this.geoLayers[this.DELIVERY_POINT_ID])) showOnMap = true;\r\n this.removeLayerFromMap(this.geoLayers[this.DELIVERY_POINT_ID]);\r\n }\r\n this.initializeGeoLayer(this.DELIVERY_POINT_ID, deliveryPoints, true,\r\n null, 'assets/icons/layers/delivery-point.png', 'assets/icons/filters/delivery-point.png', GeoModel.getPopupContent);\r\n if (showOnMap){\r\n this.addLayerToMap(this.geoLayers[this.DELIVERY_POINT_ID]);\r\n }\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter os pontos de entrega do mapa ', error);\r\n });\r\n }\r\n\r\n public initializeGasductLayer() {\r\n this.layerService.getGasDucts().pipe(first()).subscribe((gasDucts: GeoModel[]) => {\r\n if (!this.geoLayers) return; // Terminou de carregar depois que o mapa foi fechado\r\n this.logger.debug('BaseMapComponent - Getting gasducts...');\r\n this.fixLayerType(gasDucts, \"GasDuct\");\r\n let showOnMap = false;\r\n if (this.geoLayers[this.GASDUCT_ID]){\r\n if (this.map.hasLayer(this.geoLayers[this.GASDUCT_ID])) showOnMap = true;\r\n this.removeLayerFromMap(this.geoLayers[this.GASDUCT_ID]);\r\n }\r\n this.initializeGeoLayer(this.GASDUCT_ID, gasDucts, false,\r\n { color: MapInfo.GASDUCT_COLOR, weight: MapInfo.DUCT_WEIGHT }, null, 'assets/icons/filters/duct.png', DuctModel.getPopupContent);\r\n if (showOnMap){\r\n this.addLayerToMap(this.geoLayers[this.GASDUCT_ID]);\r\n }\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter os gasodutos do mapa ', error);\r\n });\r\n }\r\n\r\n public initializeOilductLayer() {\r\n this.layerService.getOilDucts().pipe(first()).subscribe((oilDucts: GeoModel[]) => {\r\n if (!this.geoLayers) return; // Terminou de carregar depois que o mapa foi fechado\r\n this.logger.debug('BaseMapComponent - Getting oilducts...');\r\n this.fixLayerType(oilDucts, \"OilDuct\");\r\n let showOnMap = false;\r\n if (this.geoLayers[this.OILDUCT_ID]){\r\n if (this.map.hasLayer(this.geoLayers[this.OILDUCT_ID])) showOnMap = true;\r\n this.removeLayerFromMap(this.geoLayers[this.OILDUCT_ID]);\r\n }\r\n this.initializeGeoLayer(this.OILDUCT_ID, oilDucts, false,\r\n { color: MapInfo.OILDUCT_COLOR, weight: MapInfo.DUCT_WEIGHT }, null, 'assets/icons/filters/duct.png', DuctModel.getPopupContent);\r\n if (showOnMap){\r\n this.addLayerToMap(this.geoLayers[this.OILDUCT_ID]);\r\n }\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter os oleodutos do mapa ', error);\r\n });\r\n }\r\n\r\n public initializeSimfLayer() {\r\n this.layerService.getSimf().pipe(first()).subscribe((simfs: GeoModel[]) => {\r\n if (!this.geoLayers) return; // Terminou de carregar depois que o mapa foi fechado\r\n this.logger.debug('BaseMapComponent - Getting SIMFs...');\r\n this.fixLayerType(simfs, \"Simf\");\r\n let showOnMap = false;\r\n if (this.geoLayers[this.SIMF_ID]){\r\n if (this.map.hasLayer(this.geoLayers[this.SIMF_ID])) showOnMap = true;\r\n this.removeLayerFromMap(this.geoLayers[this.SIMF_ID]);\r\n }\r\n this.initializeGeoLayer(this.SIMF_ID, simfs, false,\r\n { color: MapInfo.SIMF_COLOR, weight: MapInfo.DUCT_WEIGHT }, null, 'assets/icons/filters/duct.png', SimfModel.getPopupContent);\r\n if (showOnMap){\r\n this.addLayerToMap(this.geoLayers[this.SIMF_ID]);\r\n }\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter os simfs do mapa ', error);\r\n });\r\n }\r\n\r\n public initializeKmMarkersLayer() {\r\n this.layerService.getKilometerMarks().pipe(first()).subscribe((kilometerMarks: GeoModel[]) => {\r\n if (!this.geoLayers) return; // Terminou de carregar depois que o mapa foi fechado\r\n this.logger.debug('BaseMapComponent - Getting Km markers...');\r\n this.fixLayerType(kilometerMarks, \"KilometerMark\");\r\n this.allKmMarks = kilometerMarks;\r\n kilometerMarks = [];\r\n let showOnMap = false;\r\n if (this.geoLayers[this.KILOMETER_MARK_ID]){\r\n if (this.map.hasLayer(this.geoLayers[this.KILOMETER_MARK_ID])) showOnMap = true;\r\n this.removeLayerFromMap(this.geoLayers[this.KILOMETER_MARK_ID]);\r\n }\r\n this.initializeGeoLayer(this.KILOMETER_MARK_ID , kilometerMarks, true,\r\n null, 'assets/icons/layers/km-marker.png', 'assets/icons/filters/km-marker.png', KilometerMarkModel.getPopupContent);\r\n if (showOnMap){\r\n this.addLayerToMap(this.geoLayers[this.KILOMETER_MARK_ID]);\r\n }\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter os marcadores de quilometragem do mapa ', error);\r\n });\r\n }\r\n\r\n public initializeRefinaryLayer() {\r\n this.layerService.getRefinary().pipe(first()).subscribe((refinaries: GeoModel[]) => {\r\n if (!this.geoLayers) return; // Terminou de carregar depois que o mapa foi fechado\r\n this.logger.debug('BaseMapComponent - Getting refinaries...');\r\n this.fixLayerType(refinaries, \"Refinary\");\r\n let showOnMap = false;\r\n if (this.geoLayers[this.REFINARY_ID]){\r\n if (this.map.hasLayer(this.geoLayers[this.REFINARY_ID])) showOnMap = true;\r\n this.removeLayerFromMap(this.geoLayers[this.REFINARY_ID]);\r\n }\r\n this.initializeGeoLayer(this.REFINARY_ID, refinaries, true,\r\n null, 'assets/icons/layers/refinery.png', 'assets/icons/filters/refinery.png', GeoModel.getPopupContent);\r\n if (showOnMap){\r\n this.addLayerToMap(this.geoLayers[this.REFINARY_ID]);\r\n }\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter as refinarias do mapa ', error);\r\n });\r\n }\r\n\r\n public initializeTerminalLayer() {\r\n this.layerService.getTerminal().pipe(first()).subscribe((terminals: GeoModel[]) => {\r\n if (!this.geoLayers) return; // Terminou de carregar depois que o mapa foi fechado\r\n this.logger.debug('BaseMapComponent - Getting terminals...');\r\n this.fixLayerType(terminals, \"Terminal\");\r\n let showOnMap = false;\r\n if (this.geoLayers[this.TERMINAL_ID]){\r\n if (this.map.hasLayer(this.geoLayers[this.TERMINAL_ID])) showOnMap = true;\r\n this.removeLayerFromMap(this.geoLayers[this.TERMINAL_ID]);\r\n }\r\n this.initializeGeoLayer(this.TERMINAL_ID, terminals, true,\r\n null, 'assets/icons/layers/terminal.png', 'assets/icons/filters/terminal.png', GeoModel.getPopupContent);\r\n if (showOnMap){\r\n this.addLayerToMap(this.geoLayers[this.TERMINAL_ID]);\r\n }\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter os terminais do mapa ', error);\r\n });\r\n }\r\n\r\n public initializeValveLayer() {\r\n this.layerService.getValve().pipe(first()).subscribe((valves: GeoModel[]) => {\r\n if (!this.geoLayers) return; // Terminou de carregar depois que o mapa foi fechado\r\n this.logger.debug('BaseMapComponent - Getting valves...');\r\n this.fixLayerType(valves, \"Valve\");\r\n let showOnMap = false;\r\n if (this.geoLayers[this.VALVE_ID]){\r\n if (this.map.hasLayer(this.geoLayers[this.VALVE_ID])) showOnMap = true;\r\n this.removeLayerFromMap(this.geoLayers[this.VALVE_ID]);\r\n }\r\n this.initializeGeoLayer(this.VALVE_ID, valves, true,\r\n null, 'assets/icons/layers/valve.png', 'assets/icons/filters/valve.png', ValveModel.getPopupContent);\r\n if (showOnMap){\r\n this.addLayerToMap(this.geoLayers[this.VALVE_ID]);\r\n }\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter as válvulas do mapa ', error);\r\n });\r\n }\r\n\r\n public initializeDcsHistoryLayer() {\r\n this.layerService.getDCsHistory().pipe(first()).subscribe((dcs: GeoModel[]) => {\r\n if (!this.geoLayers) return; // Terminou de carregar depois que o mapa foi fechado\r\n this.logger.debug('BaseMapComponent - Getting DCs...');\r\n this.fixLayerType(dcs, \"Dc\");\r\n this.fixDcName(dcs);\r\n let showOnMap = false;\r\n if (this.geoLayers[this.DC_HISTORY_ID]){\r\n if (this.map.hasLayer(this.geoLayers[this.DC_HISTORY_ID])) showOnMap = true;\r\n this.removeLayerFromMap(this.geoLayers[this.DC_HISTORY_ID]);\r\n }\r\n this.initializeGeoLayer(this.DC_HISTORY_ID, dcs, true,\r\n null, 'assets/icons/layers/dc.png', 'assets/icons/filters/dc.png', DcModel.getPopupContent);\r\n if (showOnMap){\r\n this.addLayerToMap(this.geoLayers[this.DC_HISTORY_ID]);\r\n }\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter o histórico de DCs do mapa ', error);\r\n });\r\n }\r\n\r\n public layerFilterIcon(id: string): string {\r\n return this.geoLayerParam[id].filter_icon;\r\n }\r\n\r\n public layerData(id: string): GeoModel[] {\r\n if (id == this.KILOMETER_MARK_ID) {\r\n return this.allKmMarks;\r\n }\r\n else {\r\n if (!this.geoLayerParam[id]) return [];\r\n\r\n if (!this.geoLayerParam[id].filteredData) {\r\n return this.geoLayerParam[id].data;\r\n }\r\n return this.geoLayerParam[id].filteredData;\r\n }\r\n }\r\n\r\n public layerPopupContent(id: string) {\r\n if (!this.geoLayerParam[id]) return null;\r\n return this.geoLayerParam[id].getPopupContent;\r\n }\r\n\r\n /** Transforma um dado geográfico em uma feature do mapa */\r\n private transformData(layerData: GeoModel[]){\r\n return layerData.map((item) => {\r\n const obj = item.geometry;\r\n\r\n if(!obj) return;\r\n\r\n obj.properties = {};\r\n for (const key in item){\r\n if (key === 'geometry'){\r\n continue;\r\n }\r\n obj.properties[key] = item[key];\r\n }\r\n return obj;\r\n });\r\n }\r\n\r\n public isLayerOptionToProfile(id: string):boolean{\r\n /* Valida se o perfil pode ver cada camada */\r\n switch (id) {\r\n case this.DC_HISTORY_ID:\r\n return this.authorizationService.userHasPermission(Permission.VIEW_MAP_DC_HISTORY_ID);\r\n case this.OBSERVED_AREA_ID:\r\n return this.authorizationService.userHasPermission(Permission.VIEW_MAP_OBSERVED_AREA_ID);\r\n case this.SIMF_ID:\r\n return this.authorizationService.userHasPermission(Permission.VIEW_MAP_SIMF);\r\n case this.BAND_ID:\r\n return this.authorizationService.userHasPermission(Permission.VIEW_MAP_BAND);\r\n case this.OILDUCT_ID:\r\n return this.authorizationService.userHasPermission(Permission.VIEW_MAP_OILDUCT);\r\n case this.GASDUCT_ID:\r\n return this.authorizationService.userHasPermission(Permission.VIEW_MAP_GASDUCT);\r\n case this.KILOMETER_MARK_ID:\r\n return this.authorizationService.userHasPermission(Permission.VIEW_MAP_KILOMETER_MARK);\r\n case this.VALVE_ID:\r\n return this.authorizationService.userHasPermission(Permission.VIEW_MAP_VALVE);\r\n case this.TERMINAL_ID:\r\n return this.authorizationService.userHasPermission(Permission.VIEW_MAP_TERMINAL);\r\n case this.REFINARY_ID:\r\n return this.authorizationService.userHasPermission(Permission.VIEW_MAP_REFINARY);\r\n case this.DELIVERY_POINT_ID:\r\n return this.authorizationService.userHasPermission(Permission.VIEW_MAP_DELIVERY_POINT);\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n private layerFilterSort(a: GeoModel, b: GeoModel) {\r\n return a.name.localeCompare(b.name);\r\n }\r\n\r\n /** Inicializa a camada de dados geográficos */\r\n private initializeGeoLayer(id: string, data: GeoModel[], isPoint: boolean, style: any, icon: string, filter_icon: string, getPopupContent: (feature: any) => string){\r\n this.geoLayerParam[id] = {data, isPoint, style, icon, filter_icon, getPopupContent};\r\n if (this.isLayerOptionToProfile(id)){\r\n this.geoLayerParam[id].filteredData = (data as GeoModel []).filter(g => this.filterGeoModel(id, g));\r\n this.geoLayerParam[id].filteredData.sort(this.layerFilterSort);\r\n this.geoLayers[id] = this.createGeoLayer(id, this.geoLayerParam[id].filteredData, isPoint, style, icon, getPopupContent);\r\n }\r\n this.layerReady.emit(id);\r\n }\r\n\r\n /** Inicializa a camada de objetos móveis e controle de camadas, chamado uma única vez */\r\n public initializeLayers(layersMap: Map) {\r\n this.addLayerToMap(this.vehicleTrackingLayer);\r\n this.addLayerToMap(this.userTrackingLayer);\r\n this.layersMap = layersMap;\r\n }\r\n\r\n private createClusterGroup(icon){\r\n return L.markerClusterGroup({\r\n showCoverageOnHover: false,\r\n disableClusteringAtZoom: CLUSTERING_ZOOM_LEVEL,\r\n iconCreateFunction: function(cluster) {\r\n var childCount = cluster.getChildCount();\r\n return new L.DivIcon({ html: '
    ' + childCount + '
    ', className: 'marker-cluster', iconSize: new L.Point(32, 32) });\r\n }\r\n });\r\n }\r\n\r\n private createGeoLayer(id: string, data: GeoModel[], isPoint: boolean, style: any, icon: any,\r\n getPopupContent: (feature: any) => string): L.FeatureGroup {\r\n \r\n const geoData = this.transformData(data);\r\n\r\n let geoLayer: L.FeatureGroup;\r\n\r\n const options = {};\r\n if (icon){\r\n options['icon'] = L.icon({\r\n iconSize: [ MapInfo.LAYERS_ICON_SIZE, MapInfo.LAYERS_ICON_SIZE ],\r\n iconAnchor: [ MapInfo.LAYERS_ICON_SIZE/2, MapInfo.LAYERS_ICON_SIZE/2 ], // no centro do ícone\r\n iconUrl: icon\r\n });\r\n }\r\n\r\n if (isPoint){\r\n geoLayer = this.createClusterGroup(icon);\r\n\r\n L.geoJSON(geoData as any, {\r\n pointToLayer: (feature, latLng: L.LatLng) => {\r\n const marker = L.marker(latLng, options);\r\n if (getPopupContent) {\r\n feature.properties.lat = latLng.lat;\r\n feature.properties.lng = latLng.lng;\r\n marker.bindPopup(getPopupContent(feature), {maxWidth: 500});\r\n }\r\n\r\n if (id == this.KILOMETER_MARK_ID) {\r\n marker.bindTooltip(KilometerMarkModel.getTooltipContent(feature));\r\n }\r\n\r\n geoLayer.addLayer(marker);\r\n return null;\r\n },\r\n });\r\n }\r\n else{\r\n var polygonsWithCenters = L.layerGroup();\r\n\r\n geoLayer = L.geoJSON(geoData as any, {\r\n style: () => {\r\n return style;\r\n },\r\n onEachFeature: (feature, layer) => {\r\n if (getPopupContent) {\r\n layer.bindPopup(getPopupContent(feature));\r\n }\r\n\r\n if(id == this.OBSERVED_AREA_ID){ // Poligonos de áreas observadas possuem um marcador no centro\r\n let areaCenter = L.geoJSON(feature).getBounds().getCenter();\r\n let centerMarker = L.marker(areaCenter, options).bindPopup(getPopupContent(feature));\r\n centerMarker.addTo(polygonsWithCenters);\r\n }\r\n },\r\n });\r\n }\r\n\r\n if(id == this.OBSERVED_AREA_ID){\r\n polygonsWithCenters.addTo(geoLayer);\r\n }\r\n\r\n this.layersMap.set(id, geoLayer);\r\n\r\n this.setGeoLayerOpacity(id, geoLayer, this.opacity);\r\n\r\n return geoLayer;\r\n }\r\n\r\n private updateLayerOnMap(id: string, addToMap?: boolean){\r\n const layer = this.geoLayers[id];\r\n\r\n // Se a camada estava visível, remove e cria novamente\r\n // Porque no processo de criação da camada são aplicados os filtros\r\n\r\n if (this.map.hasLayer(layer)){\r\n this.map.removeLayer(layer);\r\n addToMap = true; // Estava visivel\r\n }\r\n const cacheItem = this.geoLayerParam[id];\r\n if(!cacheItem) return;\r\n\r\n cacheItem.filteredData = (cacheItem.data as GeoModel []).filter(g => this.filterGeoModel(id, g));\r\n cacheItem.filteredData.sort(this.layerFilterSort);\r\n\r\n this.geoLayers[id] = this.createGeoLayer(id, cacheItem.filteredData, cacheItem.isPoint,\r\n cacheItem.style, cacheItem.icon, cacheItem.getPopupContent);\r\n\r\n if (addToMap){ // Torna visivel novamente se estava antes\r\n this.addLayerToMap(this.geoLayers[id]);\r\n }\r\n }\r\n\r\n /*********************** TRACKING *****************************/\r\n\r\n /** Atualiza os dados do objeto móvel no mapa */\r\n public updateTrackingMarker(tracking: TrackingModel, fit: boolean){\r\n let marker: L.Marker = this.searchTrackingMarker(tracking);\r\n if (marker) {\r\n marker.setIcon(tracking.icon);\r\n\r\n const newLatLng = new L.LatLng(tracking.signal.latitude, tracking.signal.longitude);\r\n marker.setLatLng(newLatLng);\r\n\r\n marker.setPopupContent(TrackingModel.getPopupContent(tracking));\r\n marker.setTooltipContent(TrackingModel.getTooltipContent(tracking));\r\n }\r\n else {\r\n marker = this.createTrackingMarker(tracking);\r\n\r\n if (tracking.signal.sourceType == SourceType.MOBILE_APP){\r\n this.userTrackingLayer.addLayer(marker);\r\n }\r\n else{\r\n this.vehicleTrackingLayer.addLayer(marker);\r\n }\r\n }\r\n\r\n if (fit){\r\n this.fitTrackingMarker(marker);\r\n marker.openPopup();\r\n return marker;\r\n }\r\n }\r\n\r\n public centerTrackingMarker(tracking: TrackingModel){\r\n let marker: L.Marker = this.searchTrackingMarker(tracking);\r\n if (marker) {\r\n this.fitTrackingMarker(marker);\r\n }\r\n return marker;\r\n }\r\n\r\n public centerTrackingMarkers(trackings: TrackingModel[]){\r\n let markers: L.Marker[] = [];\r\n trackings.forEach(tracking => {\r\n let marker: L.Marker = this.searchTrackingMarker(tracking);\r\n if (marker) {\r\n markers.push(marker);\r\n }\r\n });\r\n this.fitTrackingMarkers(markers);\r\n return markers;\r\n }\r\n\r\n /** Remove o objeto móvel do mapa */\r\n public removeTrackingMarker(tracking: TrackingModel){\r\n if(!tracking) return;\r\n\r\n const marker: L.Marker = this.searchTrackingMarker(tracking);\r\n if (marker) {\r\n if (this.userTrackingLayer.hasLayer(marker)){\r\n this.userTrackingLayer.removeLayer(marker);\r\n }\r\n if (this.vehicleTrackingLayer.hasLayer(marker)){\r\n this.vehicleTrackingLayer.removeLayer(marker);\r\n }\r\n }\r\n }\r\n\r\n /** Busca o objeto móvel no grupo */\r\n private searchTrackingMarker(tracking: TrackingModel): L.Marker {\r\n let layer: L.Marker;\r\n this.vehicleTrackingLayer.eachLayer( (marker: any) => {\r\n if(this.isTrackingMarker(marker, tracking)) {\r\n layer = marker;\r\n }\r\n });\r\n this.userTrackingLayer.eachLayer( (marker: any) => {\r\n if(this.isTrackingMarker(marker, tracking)) {\r\n layer = marker;\r\n }\r\n });\r\n return layer;\r\n }\r\n\r\n public removeTrackingMarkers() {\r\n this.userTrackingLayer.clearLayers();\r\n this.vehicleTrackingLayer.clearLayers();\r\n }\r\n\r\n private isTrackingMarker(marker, tracking: TrackingModel) { // Use \"any\" because of mobileObjectId\r\n return marker.mobileObjectId == tracking?.signal?.mobileObjectId;\r\n }\r\n\r\n private createTrackingMarker(tracking: TrackingModel) {\r\n // se o tracking tem equipe cria o marker com context menu\r\n const marker = tracking?.patrolTeam ? new this.trackingMarker([tracking.signal.latitude, tracking.signal.longitude], this.CONTEXTMENU ).bindPopup('') : new this.trackingMarker([tracking.signal.latitude, tracking.signal.longitude]).bindPopup('');\r\n marker.mobileObjectId = tracking.signal.mobileObjectId;\r\n marker.patrolTeamId = tracking.signal.teamId;\r\n\r\n marker.setIcon(tracking.icon);\r\n\r\n marker.bindPopup(TrackingModel.getPopupContent(tracking), { minWidth: MapInfo.POPUP_MIN_WIDTH, autoPan: false });\r\n marker.bindTooltip(TrackingModel.getTooltipContent(tracking));\r\n\r\n marker.setOpacity(this.opacity);\r\n\r\n return marker;\r\n }\r\n\r\n /*********************** INTERACTION *****************************/\r\n\r\n public invalidateSize() {\r\n this.map.invalidateSize();\r\n }\r\n\r\n private getAddressMarkerPopupContent(latitude: number, longitude: number, address: string){\r\n return `
    Marcador de Endereço
    \r\n
    Lat, Long:${FieldUtils.coordToString(latitude)},${FieldUtils.coordToString(longitude)}
    \r\n

    ${address}

    `;\r\n }\r\n\r\n private getAddressMarkerTooltipContent(latitude: number, longitude: number, address: string){\r\n return `
    Lat, Long:${FieldUtils.coordToString(latitude)},${FieldUtils.coordToString(longitude)}
    \r\n
    ${address}
    `;\r\n }\r\n\r\n public searchLatLngIcon = L.icon({\r\n iconUrl: Icons.ICON_URL_MARKER,\r\n iconSize: [ MapInfo.MARKER_ICON_SIZE, MapInfo.MARKER_ICON_SIZE ],\r\n iconAnchor: [ MapInfo.MARKER_ICON_SIZE/2, MapInfo.MARKER_ICON_SIZE ] // no centro da base do ícone\r\n });\r\n\r\n public clearSearchResults() {\r\n this.addressResultsGroup.clearLayers(); \r\n }\r\n\r\n private addSearchAddressControl(){\r\n\r\n // Workaround porque os import não funcionaram\r\n const geosearch = (esriGeocoder as any).geosearch;\r\n const arcgisOnlineProvider = (esriGeocoder as any).arcgisOnlineProvider;\r\n\r\n const searchControl = geosearch({\r\n position: \"topright\",\r\n placeholder: \"Endereço\",\r\n title: 'Busca de Endereço',\r\n allowMultipleResults: false,\r\n useMapBounds: false,\r\n providers: [\r\n arcgisOnlineProvider({\r\n token: MapInfo.ARCGIS_TOKEN,\r\n countries: \"BR\",\r\n maxResults: 10\r\n })\r\n ]\r\n }).addTo(this.map);\r\n\r\n this.addressResultsGroup = L.layerGroup().addTo(this.map);\r\n\r\n searchControl.on(\"results\", (data: any) => {\r\n this.addressResultsGroup.clearLayers();\r\n\r\n for (let i = data.results.length - 1; i >= 0; i--) {\r\n const marker = L.marker(data.results[i].latlng);\r\n marker.setIcon(this.searchLatLngIcon);\r\n const latLong = data.results[i].latlng;\r\n marker.bindPopup(this.getAddressMarkerPopupContent(latLong.lat, latLong.lng, data.results[i].properties.LongLabel), { minWidth: MapInfo.POPUP_MIN_WIDTH });\r\n marker.bindTooltip(this.getAddressMarkerTooltipContent(latLong.lat, latLong.lng, data.results[i].properties.LongLabel));\r\n this.addressResultsGroup.addLayer(marker);\r\n marker.openPopup();\r\n }\r\n });\r\n }\r\n\r\n private addMeasureControl() {\r\n // Customização do controle de medição. Não consegui fazer isso pelo options dele.\r\n let c = L.Control as any;\r\n c.MeasureControl.TITLE = \"Medir Distância\";\r\n let d = L.drawLocal as any;\r\n d.draw.handlers.polyline.tooltip.start = \"Clique para iniciar uma linha\"\r\n d.draw.handlers.polyline.tooltip.end = \"Clique no último ponto para terminar a linha\"\r\n d.draw.handlers.polyline.tooltip.cont = \"Clique para continuar a linha\"\r\n let m = c.measureControl();\r\n m.addTo(this.map);\r\n }\r\n\r\n // Chamada quando o mapa do leaflet já foi disponibilizado pelo ngx-leaflet\r\n // Algumas coisas do Mapa podem ser manipulados, mas nem tudo\r\n // Identificamos que a fitBounds nem sempre funciona\r\n // Identificamos também que essa chamada acontece antes da ngAfterViewInit\r\n onMapReady(map: L.Map) {\r\n this.logger.debug(\"BaseMapComponent.onMapReady()\");\r\n this.map = map;\r\n\r\n this.addMeasureControl();\r\n\r\n this.addSearchAddressControl();\r\n\r\n this.mapReady.emit(this.map);\r\n }\r\n\r\n onMapZoomEnd(event: L.LeafletEvent) {\r\n this.logger.debug(\"BaseMapComponent.onMapZoomEnd() - Zoom: \", this.map.getZoom());\r\n if (!this.checkKmMarksZoomLevel()) {\r\n this.updateFilter(this.KILOMETER_MARK_ID);\r\n }\r\n }\r\n\r\n onMapMoveEnd(event: L.LeafletEvent) {\r\n }\r\n\r\n onDrawReady(drawControl) {\r\n this.drawControl = drawControl; // Não utilizado, para uso futuro se for o caso. Senão, remover.\r\n }\r\n\r\n onDrawCreated(e: L.DrawEvents.Created) {\r\n this.drawLayer.addLayer(e.layer);\r\n const idlayer = this.drawLayer.getLayerId(e.layer);\r\n this.mapEditUpdate.emit({ createdLayer: e.layer, layerType: e.layerType, idlayer});\r\n }\r\n\r\n onDrawEdited(e: L.DrawEvents.Edited) {\r\n this.mapEditUpdate.emit({ editedLayers: e.layers });\r\n }\r\n\r\n onDrawDeleted(e: L.DrawEvents.Deleted) {\r\n this.mapEditUpdate.emit({ deletedLayers: e.layers });\r\n }\r\n\r\n onDrawEditStart(e: L.DrawEvents.EditStart){\r\n this.mapEditUpdate.emit({ editStart: true });\r\n } \r\n\r\n /*********************** FILTRO DE CAMADAS *****************************/\r\n\r\n public filterGeoModel(id, geoModel): boolean{\r\n if (!geoModel) return false;\r\n const hasStates = this.checkFilterByStates(id, geoModel)\r\n const hasBand = this.checkFilterByBand(id, geoModel);\r\n const hasStatus = this.checkObservedAreaFilterByStatus(id, geoModel);\r\n const hasResponsible = this.checkObservedAreaFilterByResponsible(id, geoModel);\r\n const isValidObservedArea = this.checkObservedAreaFilterByAreaId(id, geoModel);\r\n const hasYear = this.checkDcHistoryFilterByYear(id, geoModel);\r\n return hasStates && hasBand && hasResponsible && isValidObservedArea && hasStatus && hasYear;\r\n }\r\n\r\n private checkFilterByStates(id: string, geoModel) : boolean{\r\n const myStates: [] = geoModel.states;\r\n\r\n let hasStates = true;\r\n\r\n if (this.filterMap && this.filterMap.states && this.filterMap.states.length > 0) {\r\n if(!myStates || myStates.length == 0) return false;\r\n\r\n for(let state of myStates){\r\n hasStates = this.filterMap.states.includes(state);\r\n if(hasStates) break;\r\n };\r\n }\r\n return hasStates;\r\n }\r\n\r\n private checkFilterByBand(id: string, geoModel): boolean{\r\n let isBandValid = true;\r\n \r\n if (id === this.BAND_ID){ // Se é do tipo faixa, usa o próprio ID\r\n if (this.filterMap && this.filterMap.bandIds && this.filterMap.bandIds.length > 0) {\r\n let myBandId = geoModel.id;\r\n isBandValid = this.filterMap.bandIds.includes(myBandId);\r\n }\r\n }\r\n else {\r\n if (this.filterMap && this.filterMap.bandIds && this.filterMap.bandIds.length > 0) {\r\n let myBandId = geoModel.bandId;\r\n if (myBandId) {\r\n isBandValid = this.filterMap.bandIds.includes(myBandId);\r\n }\r\n else {\r\n let myBandName = geoModel.band;\r\n isBandValid = this.filterMap.bandNames.includes(myBandName);\r\n }\r\n }\r\n }\r\n\r\n return isBandValid;\r\n }\r\n\r\n private checkObservedAreaFilterByStatus(id: string, geoModel){\r\n let hasStatus = true;\r\n\r\n if (id === this.OBSERVED_AREA_ID){\r\n if (this.filterMap && this.filterMap.areaStatus !== FILTER_OPTION_ALL) {\r\n const myStatus = geoModel.status;\r\n hasStatus = (this.filterMap.areaStatus === myStatus);\r\n }\r\n }\r\n\r\n return hasStatus;\r\n }\r\n\r\n private checkObservedAreaFilterByResponsible(id: string, geoModel){\r\n let hasResponsible = true;\r\n\r\n if (id === this.OBSERVED_AREA_ID){\r\n if (this.filterMap && this.filterMap.responsiblesIds?.length > 0) {\r\n const myResponsible = geoModel.responsible.id;\r\n hasResponsible = this.filterMap.responsiblesIds.includes(myResponsible);\r\n }\r\n }\r\n\r\n return hasResponsible;\r\n }\r\n\r\n private checkObservedAreaFilterByAreaId(id: string, geoModel){\r\n let isValidArea = true;\r\n\r\n if (id === this.OBSERVED_AREA_ID){\r\n if (this.filterMap && this.filterMap.areasIds?.length > 0) {\r\n const myAreaId = geoModel.id;\r\n isValidArea = this.filterMap.areasIds.includes(myAreaId);\r\n }\r\n }\r\n\r\n return isValidArea;\r\n }\r\n\r\n private checkDcHistoryFilterByYear(id: string, geoModel){\r\n let hasYear = true;\r\n if (id === this.DC_HISTORY_ID){\r\n if (this.filterMap && this.filterMap.years?.length > 0) {\r\n const myYear = geoModel.year;\r\n hasYear = this.filterMap.years.includes(myYear);\r\n }\r\n }\r\n\r\n return hasYear;\r\n }\r\n\r\n updateFilter(id: string, fit?: boolean, addToMap?: boolean){\r\n if(id === this.KILOMETER_MARK_ID){\r\n this.filterKmMarksByZoom();\r\n }\r\n\r\n this.updateLayerOnMap(id, addToMap);\r\n\r\n if (fit) {\r\n this.fitFilteredLayer(this.geoLayers[id]);\r\n }\r\n }\r\n\r\n updateAllFilters() {\r\n for (const id in this.geoLayers) {\r\n this.updateFilter(id);\r\n }\r\n }\r\n\r\n updateFilterBands() {\r\n this.updateFilter(this.BAND_ID);\r\n\r\n // Faixas afetam Marcos Quilométricos, Simf, Pontos de Entrega, Estações, Válvulas e Áreas Observadas\r\n this.updateFilter(this.DELIVERY_POINT_ID);\r\n this.updateFilter(this.KILOMETER_MARK_ID);\r\n this.updateFilter(this.OBSERVED_AREA_ID);\r\n this.updateFilter(this.VALVE_ID);\r\n this.updateFilter(this.SIMF_ID);\r\n }\r\n\r\n private checkKmMarksZoomLevel(){\r\n const cacheItem = this.geoLayerParam[this.KILOMETER_MARK_ID];\r\n if (cacheItem){\r\n if (this.map.getZoom() >= ZOOM_LEVEL_TO_SHOW_KILOMETER_MARKS){\r\n return cacheItem.showAll == true;\r\n }\r\n else {\r\n return !cacheItem.showAll;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n private filterKmMarksByZoom(){\r\n // Zoom só afeta KmMarks, então seu filtro é feito a parte\r\n const cacheItem = this.geoLayerParam[this.KILOMETER_MARK_ID];\r\n if (cacheItem){\r\n if (this.map.getZoom() >= ZOOM_LEVEL_TO_SHOW_KILOMETER_MARKS){\r\n cacheItem.data = this.allKmMarks;\r\n cacheItem.showAll = true;\r\n }\r\n else {\r\n cacheItem.data = [];\r\n cacheItem.showAll = false;\r\n }\r\n }\r\n }\r\n\r\n /*********************** FIT *****************************/\r\n\r\n private fitTrackingMarker(marker: L.Marker){\r\n this.fitMarker(marker);\r\n }\r\n\r\n private fitTrackingMarkers(markers: L.Marker[]){\r\n var group = new L.FeatureGroup();\r\n markers.forEach(marker => {\r\n group.addLayer(marker);\r\n });\r\n this.fitBounds(group.getBounds());\r\n }\r\n\r\n fitMarker(marker: L.Marker) {\r\n this.fitPoint(marker.getLatLng());\r\n }\r\n\r\n private fitFilteredLayer(layer: L.FeatureGroup) {\r\n if(!layer) return;\r\n\r\n let bounds = layer.getBounds();\r\n if(!this.map){ // Precisa esperar um pouco quando Map Page não está pronta ainda\r\n setTimeout(() => {\r\n this.fitBounds(bounds);\r\n }, 5000);\r\n }else{\r\n this.fitBounds(bounds);\r\n }\r\n }\r\n\r\n fitPoint(latLong: L.LatLngExpression) {\r\n this.map.setView(latLong, MapInfo.FIT_ZOOM);\r\n }\r\n\r\n fitBounds(geoBounds: L.LatLngBounds){\r\n if (this.map && geoBounds && geoBounds.isValid()){\r\n this.map.fitBounds(geoBounds, {animate: true});\r\n }\r\n }\r\n\r\n fitZoom() {\r\n this.map.setView({lat: MapInfo.DEFAULT_LATITUDE, lng: MapInfo.DEFAULT_LONGITUDE}, MapInfo.DEFAULT_ZOOM);\r\n }\r\n\r\n /*********************** MARKERS *****************************/\r\n\r\n createMarker(coordinates: L.LatLngExpression, icon: L.Icon, popup: L.Content): L.Marker {\r\n const marker = L.marker(coordinates).bindPopup('');\r\n marker.setIcon(icon);\r\n marker.bindPopup(popup, { minWidth: MapInfo.POPUP_MIN_WIDTH });\r\n return marker;\r\n }\r\n\r\n addMarker(marker) {\r\n this.markerLayers.push(marker);\r\n }\r\n\r\n removeMarker(marker) {\r\n if(marker){\r\n marker.remove();\r\n }\r\n }\r\n\r\n /*********************** DRAW *****************************/\r\n\r\n addDrawLayer(layer: L.Layer) {\r\n this.drawLayer.addLayer(layer);\r\n }\r\n\r\n removeDrawLayer(layer: L.Layer) {\r\n this.drawLayer.removeLayer(layer);\r\n }\r\n\r\n\r\n removeDrawLayers() {\r\n this.drawLayer.clearLayers();\r\n }\r\n\r\n getDrawLayers(): L.Layer [] {\r\n return this.drawLayer.getLayers();\r\n }\r\n\r\n fitDrawLayer() {\r\n const bounds = this.drawLayer.getBounds();\r\n if (bounds && bounds.isValid())\r\n this.map.fitBounds(bounds, {animate: true});\r\n }\r\n\r\n /*********************** GENERIC LAYERS *****************************/\r\n\r\n addLayerToMap(layer: L.Layer) {\r\n if(!layer || !this.map) return;\r\n\r\n if (!this.map.hasLayer(layer)) {\r\n this.map.addLayer(layer);\r\n }\r\n }\r\n\r\n /** Remove um objeto geográfico ao mapa */\r\n removeLayerFromMap(layer: L.Layer) {\r\n if(!layer || !this.map) return;\r\n\r\n if (this.map.hasLayer(layer)) {\r\n this.map.removeLayer(layer);\r\n }\r\n }\r\n\r\n hasLayer(layer: L.Layer): boolean {\r\n if(!layer || !this.map) return false;\r\n\r\n return this.map.hasLayer(layer);\r\n }\r\n\r\n /*********************** OPACITY *****************************/\r\n\r\n setGeoLayerOpacity(id: string, layer: L.FeatureGroup, opacity: number) {\r\n if ( (id === this.BAND_ID) || (id === this.GASDUCT_ID) || (id === this.OILDUCT_ID || (id === this.SIMF_ID) )) { // Linhas\r\n layer.setStyle({ opacity: opacity });\r\n }\r\n else { // Markers\r\n layer.invoke('setOpacity', opacity);\r\n }\r\n }\r\n\r\n updateObjectsOpacity(opacity: number){\r\n for (const id in this.geoLayers) {\r\n let layer = this.geoLayers[id];\r\n this.setGeoLayerOpacity(id, layer, opacity);\r\n }\r\n\r\n this.userTrackingLayer.invoke('setOpacity', opacity);\r\n this.vehicleTrackingLayer.invoke('setOpacity', opacity);\r\n\r\n this.opacity = opacity;\r\n }\r\n\r\n /*********************** MENU DE CONTEXTO *****************************/\r\n\r\n private onCreateEvent(e) {\r\n this.logger.debug('BaseMapComponent.onCreateEvent()');\r\n const marker: L.Marker = e.relatedTarget;\r\n this.eventClicked.emit(marker);\r\n }\r\n\r\n private onCreateVerification(e) {\r\n this.logger.debug('BaseMapComponent.onCreateVerification()');\r\n const marker: L.Marker = e.relatedTarget;\r\n this.verificationClicked.emit(marker);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { GeneralModule } from 'src/app/general/general.module';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { VerificationListComponent } from './verification-list/verification-list.component';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { VerificationEditComponent } from './verification-edit/verification-edit.component';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { VerificationFilterDialogComponent } from './verification-filter-dialog/verification-filter-dialog.component';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\n\r\n@NgModule({\r\n declarations: [\r\n VerificationListComponent,\r\n VerificationEditComponent,\r\n VerificationFilterDialogComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n FlexLayoutModule,\r\n RouterModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatTableModule,\r\n MatCheckboxModule,\r\n MatTooltipModule,\r\n MatMenuModule,\r\n MatCardModule,\r\n MatTabsModule,\r\n MatSortModule,\r\n MatButtonModule,\r\n MatPaginatorModule,\r\n MatSelectModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatProgressSpinnerModule,\r\n MatToolbarModule,\r\n MatDatepickerModule,\r\n MatRadioModule,\r\n MatChipsModule,\r\n MatGridListModule,\r\n GeneralModule,\r\n NgxMaskModule.forRoot(),\r\n MatSlideToggleModule\r\n ], \r\n exports: [\r\n VerificationListComponent\r\n ]\r\n})\r\nexport class VerificationModule { }\r\n","import {Injectable} from '@angular/core';\r\nimport { first } from 'rxjs/operators';\r\nimport { DEFAULT_PAGE_INDEX, LARGE_PAGE_SIZE, SORT_NAME_ASC } from 'src/app/common/constants';\r\nimport { LoadingListService } from '../loading/loading-list.service';\r\nimport { SingleDataService } from './single.data.service';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { UserService } from './user.service';\r\nimport { UserModel } from 'src/app/model/user.model';\r\nimport ListUtils from '../util/list-utils';\r\nimport { StorageService } from '../storage-service';\r\nimport { PatrolTeamService } from './patrol.team.service';\r\nimport { FilterModel } from 'src/app/general/filter-component/filter.model';\r\nimport { PatrolTeamModel } from 'src/app/model/patrolteam.model';\r\nimport { PlacementService } from './placement.service';\r\nimport { PlacementModel } from 'src/app/model/placement.model';\r\nimport { VehicleService } from './vehicle.service';\r\nimport { VehicleModel } from 'src/app/model/vehicle.model';\r\nimport { Permission, RegistrationType, UserType } from 'src/app/model/enums.enum';\r\nimport { ProfileModel } from 'src/app/model/profile.model';\r\nimport { CompanyService } from './company.service';\r\nimport { CompanyModel } from 'src/app/model/company.model';\r\nimport { ProfileService } from './profile.service';\r\nimport { FormModel } from 'src/app/model/form.model';\r\nimport { FormService } from './form.service';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { AuthorizationService } from '../authorization/authorization.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EntityCacheService {\r\n\r\n private users: UserModel[] = []; // Filtrado por lotação\r\n private patrolTeams: PatrolTeamModel[] = []; // Filtrado por lotação\r\n private placements: PlacementModel[] = []; // Filtrado por lotação\r\n private vehicles: VehicleModel[] = []; // Filtrado por lotação\r\n private companies: CompanyModel[] = []; // Filtrado por lotação\r\n\r\n private profiles: ProfileModel[] = []; // Não inclui admin\r\n private allProfiles: ProfileModel[] = []; // Inclui admin\r\n\r\n private publishedForms: FormModel[] = []; // Todos os formulários publicados, mesmo de outras lotações\r\n\r\n private usersReload: Subject = new Subject();\r\n private vehiclesReload: Subject = new Subject();\r\n private companiesReload: Subject = new Subject();\r\n private patrolTeamsReload: Subject = new Subject();\r\n private profilesReload: Subject = new Subject();\r\n private placementsReload: Subject = new Subject();\r\n private formsReload: Subject = new Subject();\r\n\r\n constructor(\r\n public logger: NGXLogger,\r\n private userService: UserService,\r\n private placementService: PlacementService,\r\n public profileService: ProfileService,\r\n private companyService: CompanyService,\r\n protected formService: FormService,\r\n private vehicleService: VehicleService,\r\n protected patrolTeamService: PatrolTeamService,\r\n protected storageService: StorageService,\r\n protected authorizationService: AuthorizationService,\r\n protected singleDataService: SingleDataService) { \r\n console.log(\"EntityCacheService.constructor\");\r\n }\r\n\r\n // Filtrado por lotação\r\n getUsers(): UserModel[]{\r\n return this.users;\r\n }\r\n\r\n // Filtrado por lotação\r\n getPatrolTeams(): PatrolTeamModel[]{\r\n return this.patrolTeams;\r\n }\r\n\r\n // Filtrado por lotação\r\n getPlacements(): PlacementModel[]{\r\n return this.placements;\r\n }\r\n\r\n // Filtrado por lotação\r\n getVehicles(): VehicleModel[]{\r\n return this.vehicles;\r\n }\r\n\r\n // Filtrado por lotação\r\n getCompanies(): CompanyModel[]{\r\n return this.companies;\r\n }\r\n\r\n // Nunca inclui o perfil Admin, mesmo quando o usuário logado é Admin\r\n getProfiles(): ProfileModel[]{\r\n return this.profiles;\r\n }\r\n\r\n // Sempre inclui o perfil Admin\r\n getAllProfiles(): ProfileModel[]{\r\n return this.allProfiles;\r\n }\r\n\r\n getPublishedForms(): FormModel[]{\r\n return this.publishedForms;\r\n }\r\n\r\n isAdminProfile(profileId: string): boolean{\r\n if (!profileId) return false;\r\n return !!this.allProfiles.find(p => p.id === profileId && p.userType === UserType.ADMINISTRATOR);\r\n }\r\n\r\n loadUsers(loadingListService: LoadingListService, onLoadCallback?: Function){\r\n if (this.users.length != 0) {\r\n if (onLoadCallback) onLoadCallback();\r\n return;\r\n }\r\n\r\n // Carrega todos os usuários\r\n let specificPlacementsIds: string[] = this.storageService.getSpecificPlacementIds();\r\n\r\n loadingListService?.loadingOn();\r\n this.userService.loadListFromRestApi(DEFAULT_PAGE_INDEX, LARGE_PAGE_SIZE, SORT_NAME_ASC).pipe(first()).subscribe((users: UserModel[]) => {\r\n\r\n users.forEach((user: UserModel) => {\r\n if (this.isAdminProfile(user['profileId'])) {\r\n // Administradores acessam todas as lotações\r\n user.placements = this.getPlacements();\r\n }\r\n \r\n if (!user.originPlacement && user.placements && user.placements.length == 1) {\r\n user.originPlacement = user.placements[0];\r\n }\r\n });\r\n \r\n if(specificPlacementsIds.length > 0){\r\n this.users = users.filter((user: UserModel) => specificPlacementsIds.includes(user.originPlacement?.id));\r\n }else {\r\n this.users = users;\r\n }\r\n\r\n ListUtils.orderSimpleModelList(this.users);\r\n\r\n if (onLoadCallback) onLoadCallback();\r\n loadingListService?.loadingOff();\r\n },\r\n (error) => {\r\n this.logger.error(`Erro ao carregar usuários `, error);\r\n loadingListService?.loadingOff();\r\n });\r\n }\r\n\r\n getFilteredUsers(userTypes: UserType[]): UserModel[] {\r\n const profiles = this.getAllProfiles();\r\n const p = profiles.filter((profile: ProfileModel) => { return userTypes.includes(UserType[profile.userType]); });\r\n const profileIds = p.map(a => a.id);\r\n\r\n let users = this.users.filter((user: UserModel) => {\r\n return profileIds.includes(user.profileId);\r\n });\r\n\r\n ListUtils.orderSimpleModelList(users); // Precisa ordenar de novo por causa do filter\r\n\r\n return users;\r\n }\r\n\r\n loadPatrolTeams(loadingListService: LoadingListService, onLoadCallback?: Function){\r\n if (this.patrolTeams.length != 0) {\r\n if (onLoadCallback) onLoadCallback();\r\n return;\r\n }\r\n\r\n // Somente carrega as equipes que o usuário logado possui acesso\r\n let filterModel: FilterModel = new FilterModel();\r\n filterModel.placements = this.storageService.getSpecificPlacementIds();\r\n\r\n loadingListService?.loadingOn();\r\n this.patrolTeamService.loadFilteredListFromRestApi(DEFAULT_PAGE_INDEX, LARGE_PAGE_SIZE, SORT_NAME_ASC, filterModel).pipe(first()).subscribe( (patrolTeams: PatrolTeamModel[]) => {\r\n this.patrolTeams = patrolTeams;\r\n\r\n // Workaround para dados antigos do banco de dados\r\n this.patrolTeams.forEach( (patrolTeam: PatrolTeamModel) => {\r\n if (!patrolTeam.users) {\r\n patrolTeam.users = [];\r\n }\r\n });\r\n\r\n if (onLoadCallback) onLoadCallback();\r\n loadingListService?.loadingOff();\r\n },\r\n (error) => {\r\n this.logger.error(`Erro ao carregar equipes `, error);\r\n loadingListService?.loadingOff();\r\n });\r\n }\r\n\r\n loadPlacements(loadingListService: LoadingListService, onLoadCallback?: Function){\r\n if (this.placements.length != 0) {\r\n if (onLoadCallback) onLoadCallback();\r\n return;\r\n }\r\n\r\n let specificPlacementsIds: string[] = this.storageService.getSpecificPlacementIds();\r\n\r\n const userType = this.authorizationService.getLoggedUserType();\r\n if (!userType) {\r\n this.logger.warn('Falha ao carregar lotações. Sem dados do perfil.');\r\n return;\r\n }\r\n\r\n // É um erro, usuário de qualquer outro profile que não Admin e não tem acesso a todas as lotações tem que ter alguma lotação\r\n if(specificPlacementsIds.length == 0 && userType != UserType.ADMINISTRATOR && !this.authorizationService.userHasPermission(Permission.ACCESS_TO_ALL_PLACEMENT)){\r\n this.logger.error('Erro ao carregar lotações. Usuário não profissional sem lotações de acesso definidas.');\r\n return;\r\n }\r\n \r\n loadingListService?.loadingOn();\r\n this.placementService.loadListFromRestApi().pipe(first()).subscribe( (placements: PlacementModel[]) => {\r\n // Carrega todas as lotações, depois filtra de acordo (não tem filtro de placements para a lista de placements)\r\n if(specificPlacementsIds.length > 0){\r\n this.placements = placements.filter((placement:PlacementModel) => specificPlacementsIds.includes(placement.id));\r\n }else {\r\n this.placements = placements;\r\n }\r\n\r\n ListUtils.orderSimpleModelList(this.placements);\r\n\r\n if (onLoadCallback) onLoadCallback();\r\n loadingListService?.loadingOff();\r\n },\r\n (error) => {\r\n this.logger.error(`Erro ao carregar lotações `, error);\r\n loadingListService?.loadingOff();\r\n });\r\n }\r\n\r\n loadVehicles(loadingListService: LoadingListService, onLoadCallback?: Function) {\r\n if (this.vehicles.length != 0) {\r\n if (onLoadCallback) onLoadCallback();\r\n return;\r\n }\r\n\r\n // Somente carrega os veículos que o usuário logado possui acesso\r\n let filterModel: FilterModel = new FilterModel();\r\n filterModel.placements = this.storageService.getSpecificPlacementIds();\r\n\r\n loadingListService?.loadingOn();\r\n this.vehicleService.loadFilteredListFromRestApi(DEFAULT_PAGE_INDEX, LARGE_PAGE_SIZE, SORT_NAME_ASC, filterModel).pipe(first()).subscribe( (vehicles: VehicleModel[]) => {\r\n vehicles.sort((a, b) => a.plate.localeCompare(b.plate));\r\n this.vehicles = vehicles;\r\n\r\n if (onLoadCallback) onLoadCallback();\r\n loadingListService?.loadingOff();\r\n },\r\n (error) => {\r\n this.logger.error(`Erro ao carregar veículos `, error);\r\n loadingListService?.loadingOff();\r\n });\r\n }\r\n\r\n loadCompanies(loadingListService: LoadingListService, onLoadCallback?: Function) {\r\n if (this.companies.length != 0) {\r\n if (onLoadCallback) onLoadCallback();\r\n return;\r\n }\r\n\r\n let specificPlacementsIds: string[] = this.storageService.getSpecificPlacementIds();\r\n\r\n loadingListService?.loadingOn();\r\n this.companyService.loadListFromRestApi().pipe(first()).subscribe( (companies: CompanyModel[]) => {\r\n\r\n // Carrega todas as empresas, depois filtra de acordo (não tem filtro de placements para a lista de empresas)\r\n if(specificPlacementsIds.length > 0){\r\n this.companies = companies.filter((company: CompanyModel) => specificPlacementsIds.includes(company.placement?.id));\r\n }else {\r\n this.companies = companies;\r\n }\r\n\r\n ListUtils.orderSimpleModelList(this.companies);\r\n\r\n if (onLoadCallback) onLoadCallback();\r\n loadingListService?.loadingOff();\r\n },\r\n (error) => {\r\n this.logger.error(`Erro ao carregar empresas `, error);\r\n loadingListService?.loadingOff();\r\n });\r\n }\r\n\r\n loadPublishedForms(loadingListService: LoadingListService, onLoadCallback?: Function) {\r\n if (this.publishedForms.length != 0) {\r\n if (onLoadCallback) onLoadCallback();\r\n return;\r\n }\r\n\r\n loadingListService?.loadingOn();\r\n this.formService.loadListFromRestApi().pipe(first()).subscribe( (forms: FormModel[]) => {\r\n this.publishedForms = forms.filter((form)=> form.published === true);\r\n\r\n ListUtils.orderSimpleModelList(this.publishedForms);\r\n\r\n if (onLoadCallback) onLoadCallback();\r\n loadingListService?.loadingOff();\r\n },\r\n (error) => {\r\n this.logger.error(`Erro ao carregar formulários `, error);\r\n loadingListService?.loadingOff();\r\n });\r\n }\r\n\r\n loadProfiles(loadingListService: LoadingListService, onLoadCallback?: Function) {\r\n if (this.profiles.length != 0) {\r\n if (onLoadCallback) onLoadCallback();\r\n return;\r\n }\r\n\r\n loadingListService?.loadingOn();\r\n this.profileService.loadListFromRestApi().pipe(first()).subscribe( (loadedProfiles: ProfileModel[]) => {\r\n this.allProfiles = loadedProfiles;\r\n\r\n this.profiles = Object.assign([], this.allProfiles); // cria uma cópia porque precisa ser um array diferente do allProfiles\r\n \r\n const index = this.profiles.findIndex(item => item.userType === UserType.ADMINISTRATOR); // Só pode haver um único perfil administrador\r\n this.profiles.splice(index, 1); // remove o item Administrador dessa lista\r\n\r\n ListUtils.orderSimpleModelList(this.allProfiles);\r\n ListUtils.orderSimpleModelList(this.profiles);\r\n\r\n if (onLoadCallback) onLoadCallback();\r\n loadingListService?.loadingOff();\r\n },\r\n (error) => {\r\n this.logger.error(`Erro ao carregar perfis `, error);\r\n loadingListService?.loadingOff();\r\n });\r\n }\r\n\r\n onUsersReload(): Observable {\r\n return this.usersReload.asObservable();\r\n }\r\n\r\n onVehiclesReload(): Observable {\r\n return this.vehiclesReload.asObservable();\r\n }\r\n\r\n onCompaniesReload(): Observable {\r\n return this.companiesReload.asObservable();\r\n }\r\n\r\n onPatrolTeamsReload(): Observable {\r\n return this.patrolTeamsReload.asObservable();\r\n }\r\n\r\n onProfilesReload(): Observable {\r\n return this.profilesReload.asObservable();\r\n }\r\n\r\n onPlacementsReload(): Observable {\r\n return this.placementsReload.asObservable();\r\n }\r\n\r\n onFormsReload(): Observable {\r\n return this.formsReload.asObservable();\r\n }\r\n \r\n reloadObjects(registrationType: string){\r\n switch (registrationType) {\r\n case RegistrationType.USER:\r\n this.users = [];\r\n this.loadUsers(null, () => this.usersReload.next(true) );\r\n break;\r\n case RegistrationType.PATROL_TEAM:\r\n this.patrolTeams = [];\r\n this.loadPatrolTeams(null, () => this.patrolTeamsReload.next(true) );\r\n break;\r\n case RegistrationType.PLACEMENT:\r\n this.placements = [];\r\n this.loadPlacements(null, () => this.placementsReload.next(true) );\r\n break;\r\n case RegistrationType.VEHICLE:\r\n this.vehicles = [];\r\n this.loadVehicles(null, () => this.vehiclesReload.next(true) );\r\n break;\r\n case RegistrationType.COMPANY:\r\n this.companies = [];\r\n this.loadCompanies(null, () => this.companiesReload.next(true) );\r\n break;\r\n case RegistrationType.PROFILE:\r\n this.profiles = [];\r\n this.allProfiles = [];\r\n this.loadProfiles(null, () => this.profilesReload.next(true) );\r\n break;\r\n case RegistrationType.FORM:\r\n this.publishedForms = [];\r\n this.loadPublishedForms(null, () => this.formsReload.next(true) );\r\n break;\r\n } \r\n }\r\n\r\n getPatrolTeamById(teamId: string): PatrolTeamModel {\r\n let patrolTeam = this.patrolTeams.find(team => team.id === teamId);\r\n return patrolTeam;\r\n }\r\n\r\n getPatrolTeamByUserId(userId: string): PatrolTeamModel {\r\n let patrolTeam = this.patrolTeams.find(team => (team.users[0] && team.users[0].id == userId) || (team.users[1] && team.users[1].id == userId) || (team.users[2] && team.users[2].id === userId));\r\n return patrolTeam;\r\n }\r\n\r\n getUserById(userId: string ): UserModel{\r\n let user = this.users.find(user => user.id === userId);\r\n return user;\r\n }\r\n\r\n // Consulta valida para todos os perfis\r\n getProfileById(profileId: string) {\r\n let profile = this.allProfiles.find(profile => profile.id === profileId);\r\n return profile;\r\n }\r\n\r\n getVehicleByPlate(plate: string ): VehicleModel{\r\n let vehicle = this.vehicles.find(vehicle => vehicle.plate === plate);\r\n return vehicle;\r\n }\r\n}\r\n","import { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { Observable, forkJoin } from 'rxjs';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { VerificationModel } from 'src/app/model/verification.model';\r\nimport { VerificationFilterModel } from 'src/app/pages/verification/verification-filter-dialog/verification.filter.model';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport * as moment from 'moment';\r\nimport { map } from 'rxjs/operators';\r\nimport { OperationType } from 'src/app/model/enums.enum';\r\nimport { OperationService } from './operation.service';\r\nimport { ArchivedType } from 'src/app/general/filter-component/filter.model';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { DEFAULT_PAGE_INDEX } from 'src/app/common/constants';\r\n\r\nexport const OBJECT_NAME = 'verificationObject';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VerificationService extends OperationService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.event_verifications_address}/verifications`, OBJECT_NAME);\r\n }\r\n\r\n public loadListFromRestApi(pageIndex?: number, pageSize?: number, sort?: string): Observable {\r\n return super.loadListFromRestApi(pageIndex, pageSize, sort).pipe(map(operations => {\r\n return this.fillOperationType(operations, OperationType.EVENT_VERIFICATION);\r\n }));\r\n }\r\n\r\n public loadById(id:string): Observable{\r\n return super.loadById(id).pipe(map( operation => {\r\n if (operation) operation.type = OperationType.EVENT_VERIFICATION;\r\n return operation;\r\n }));\r\n }\r\n\r\n public updateStatus(verification: VerificationModel, status: string){\r\n const params = new HttpParams().set('status', status);\r\n return this.http.put(this.apiUrl + `/${verification.id}/status`, null, { params: params });\r\n }\r\n\r\n public exportVerification(verification: VerificationModel): Observable {\r\n return this.http.get(this.apiUrl + `/${verification.id}/data`, { responseType: 'blob' });\r\n }\r\n\r\n protected filteredLoadFromRestApi(pageIndex?: number, pageSize?: number, sort?: string, filter?: VerificationFilterModel): Observable {\r\n\r\n let params: HttpParams = new HttpParams();\r\n\r\n if(filter){\r\n if (filter.startDate){\r\n const startDateTime = moment(filter.startDate).format('x');\r\n params = params.set('start', startDateTime);\r\n }\r\n\r\n if (filter.endDate){\r\n const endDateTime = moment(filter.endDate).format('x');\r\n params = params.set('end', endDateTime);\r\n }\r\n\r\n if (filter.status){\r\n filter.status.forEach( status => {\r\n params = params.append('status', status);\r\n });\r\n }\r\n\r\n if (filter.eventIds){\r\n filter.eventIds.forEach( eventId => {\r\n params = params.append('eventIds', eventId);\r\n });\r\n }\r\n\r\n if (filter.analysts){\r\n filter.analysts.forEach( analystId => {\r\n params = params.append('analysts', analystId);\r\n });\r\n }\r\n\r\n if (filter.placements){\r\n filter.placements.forEach( placement => {\r\n params = params.append('placements', placement);\r\n });\r\n }\r\n\r\n if (filter.patrolTeams){\r\n filter.patrolTeams.forEach( patrolTeam => {\r\n if (patrolTeam) { // Ignorar os nulos\r\n params = params.append('patrolTeams', patrolTeam);\r\n }\r\n });\r\n }\r\n\r\n if (filter.ducts){\r\n filter.ducts.forEach( duct => {\r\n params = params.append('ducts', duct);\r\n });\r\n }\r\n\r\n if (filter.valves){\r\n filter.valves.forEach( valve => {\r\n params = params.append('valves', valve);\r\n });\r\n }\r\n\r\n if (filter.archived != ArchivedType.ALL){\r\n params = params.append('archived', (filter.archived == ArchivedType.ARCHIVED) ? String(true) : String(false));\r\n } \r\n }\r\n \r\n if (pageIndex != null && pageSize != null) {\r\n const pageSizeStr = pageSize ? pageSize.toString() : environment.defaultPageSize.toString();\r\n const pageIndexStr = pageIndex ? pageIndex.toString() : DEFAULT_PAGE_INDEX.toString();\r\n params = params.set('page', pageIndexStr).set('size', pageSizeStr);\r\n }\r\n\r\n if(sort){\r\n params = params.set('sort', sort);\r\n }\r\n\r\n let options : Object = undefined;\r\n options = {\r\n params: params,\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }) };\r\n\r\n return this.http.get(this.apiUrl, options); \r\n }\r\n\r\n // recebe lista de Id de operaçoes, apenas maiores que 100\r\n public loadListVerifications(operationsIds : string[]){\r\n this.logger.debug('VerificationService.loadListVerifications()'); \r\n const observables: Observable[] = [];\r\n const numberOfCalls = operationsIds.length % 100 > 0 ? Math.trunc(operationsIds.length/100) + 1 : operationsIds.length/100 ;\r\n for(let i = 0; i < numberOfCalls ; i++){\r\n const filter: VerificationFilterModel = new VerificationFilterModel();\r\n const slicedOperationIds = operationsIds.slice((i > 0 ? i*100 + 1 : 0), (i+1)*100);\r\n filter.eventIds = slicedOperationIds;\r\n filter.archived = ArchivedType.ALL; \r\n observables.push(this.loadFilteredListFromRestApi(null, null, null, filter));\r\n }\r\n return forkJoin(observables);\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ViewChild, SimpleChange, Inject } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\n\r\nimport { NGXLogger } from 'ngx-logger';\r\n\r\n@Component({\r\n selector: 'app-upload',\r\n templateUrl: './upload.component.html',\r\n styleUrls: ['./upload.component.scss']\r\n})\r\nexport class UploadComponent implements OnInit {\r\n @Input() button_text = 'Escolher...';\r\n \r\n @Input() file_icon = 'article';\r\n @Input() file_label = 'Arquivo';\r\n @Input() file_placeholder = 'Nenhum arquivo selecionado';\r\n @Input() filename: string;\r\n @Input() seeFile: boolean;\r\n @Input() readOnly: boolean;\r\n @Output() onFileSelected = new EventEmitter();\r\n @Output() viewFileSelected = new EventEmitter();\r\n\r\n @ViewChild('uploadfileinput') uploadFileInput;\r\n\r\n changed: boolean;\r\n file: File;\r\n\r\n constructor(public dialog: MatDialog,\r\n\t private logger: NGXLogger) {}\r\n\r\n ngOnInit() {\r\n this.init();\r\n }\r\n\r\n ngOnChanges(changes: {[propKey: string]: SimpleChange}) {\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.changed = false;\r\n }\r\n\r\n fileSelected(): void {\r\n const files = this.uploadFileInput.nativeElement.files;\r\n if (files.length > 0) {\r\n const file = files[0];\r\n this.file = file;\r\n this.logger.debug('this.file: ', this.file);\r\n /* this.filename = file.name; Não atribuir filename aqui, deixar para o cliente */\r\n this.changed = true;\r\n this.onFileSelected.emit(this.file);\r\n }\r\n }\r\n\r\n clearFile(): void {\r\n /* this.filename = undefined; */\r\n this.file = undefined;\r\n this.changed = true;\r\n this.onFileSelected.emit(this.file);\r\n }\r\n\r\n openFile(): void {\r\n this.viewFileSelected.emit(this.filename);\r\n }\r\n\r\n hasChanged(): boolean {\r\n return this.changed;\r\n }\r\n\r\n getFile(): File {\r\n return this.file;\r\n }\r\n}\r\n","
    {{file_label}}
    \r\n\r\n
    \r\n \r\n {{file_icon}}\r\n {{file_icon}}\r\n
    \r\n {{file_placeholder}}\r\n
    \r\n
    \r\n {{filename}}\r\n
    \r\n \r\n \r\n
    ","import { EntityModel } from './entity.model';\r\n\r\nexport class PatrolRepetitionModel extends EntityModel {\r\n\r\n referencePatrolId: string;\r\n referencePatrolIdentifier: string;\r\n\r\n startDate: number;\r\n startTime: string; // Hora local, em geral UTC-3\r\n\r\n dayWeek: boolean;\r\n eachPeriod: boolean;\r\n daysOfWeek: number[] = [];\r\n theEachQuantity: number;\r\n unitPeriodSelected: string;\r\n\r\n neverFinish: boolean;\r\n afterNumberRepetitionsToFinish: boolean;\r\n finishDate: boolean;\r\n endDate: number;\r\n afterRepetitionQuantity: number;\r\n\r\n excludedRepetitions: string[] = [];\r\n\r\n constructor(){\r\n super();\r\n }\r\n\r\n}","import {Injectable} from '@angular/core';\r\nimport {NGXLogger} from 'ngx-logger';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {EntityService} from './entity.service';\r\nimport {environment} from '../../../environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CompanyService extends EntityService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.registrations_address}/companies`);\r\n }\r\n}\r\n","import { AlertModel } from './../../model/alert.model';\r\nimport { Injectable } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { environment } from 'src/environments/environment';\r\nimport { EntityService } from './entity.service';\r\nimport { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';\r\nimport { CentralFilterModel } from '../../pages/central/central-filter-dialog/central-filter.model';\r\nimport { Observable } from 'rxjs';\r\nimport { API_VERSION_ENDPOINT } from '../../common/constants';\r\nimport FieldUtils from '../util/field-utils';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AlertsService extends EntityService {\r\n\r\n private defaultFilter : CentralFilterModel;\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.alerts_address}/alerts`);\r\n this.defaultFilter = new CentralFilterModel();\r\n }\r\n\r\n public loadListFromRestApi(): Observable {\r\n const observable: Observable = super.loadFromRestApi();\r\n return this.processAlertLevels(observable);\r\n }\r\n\r\n extractAttributeList(newList: Object[], attributeName: string) {\r\n let listOfObjects: Object[] = newList;\r\n\r\n if (!listOfObjects || !Array.isArray(listOfObjects) || !attributeName) {\r\n throw new Error('Invalid arguments provided.');\r\n }\r\n\r\n const attributeValues = listOfObjects.map(object => object[attributeName]);\r\n \r\n return attributeValues;\r\n }\r\n\r\n public loadFromServerBySearch(filter: CentralFilterModel): Observable {\r\n let options : Object = undefined;\r\n if (filter) {\r\n if(filter.startScalePoint) \r\n filter.startScalePoint = FieldUtils.kmStringToSimf(filter.startScalePoint);\r\n if(filter.endScalePoint) \r\n filter.endScalePoint = FieldUtils.kmStringToSimf(filter.endScalePoint);\r\n \r\n //Filtro utilizado para carregar apenas o valor do objeto OPS\r\n let specifiedFilter: CentralFilterModel = JSON.parse(JSON.stringify(filter));\r\n \r\n if(filter.cpsNumber){\r\n specifiedFilter.cpsNumber = this.extractAttributeList(specifiedFilter.cpsNumber, 'opsNumber')\r\n }\r\n\r\n\r\n options = {\r\n params: new HttpParams().set('filter', JSON.stringify(specifiedFilter)),\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }) };\r\n\r\n } else {\r\n // TODO deixar esse options ja pronto...\r\n options = {\r\n params: new HttpParams().set('filter', JSON.stringify(this.defaultFilter)),\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n })\r\n };\r\n }\r\n\r\n const observable: Observable = this.http.get(this.apiUrl+'/search', options);\r\n\r\n if (filter) {\r\n if(filter.startScalePoint) \r\n filter.startScalePoint = FieldUtils.kmSimfToString(filter.startScalePoint);\r\n if(filter.endScalePoint) \r\n filter.endScalePoint = FieldUtils.kmSimfToString(filter.endScalePoint);\r\n }\r\n\r\n return this.processAlertLevels(observable);\r\n }\r\n\r\n /**\r\n * Obtem a versão do projeto Alerts\r\n */\r\n public getServiceVersion(): Observable {\r\n return this.http.get(`${this.apiUrl}/${API_VERSION_ENDPOINT}`,\r\n { responseType: 'text' }\r\n );\r\n }\r\n\r\n private processAlertLevels(result : Observable): Observable {\r\n return result.pipe(map((alerts: AlertModel[]) => {\r\n alerts.forEach((alert: AlertModel) => {\r\n if (alert.alertPriority == 'MAX') { // backward compatibility - não existe mais\r\n alert.alertPriority = 'HIGH';\r\n }\r\n });\r\n\r\n return alerts;\r\n }));\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {NGXLogger} from 'ngx-logger';\r\nimport {HttpClient, HttpParams} from '@angular/common/http';\r\nimport {PatrolTeamModel} from '../../model/patrolteam.model';\r\nimport {EntityService} from './entity.service';\r\nimport {environment} from '../../../environments/environment';\r\nimport {Observable } from 'rxjs';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { FilterModel } from 'src/app/general/filter-component/filter.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PatrolTeamService extends EntityService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.registrations_address}/patrol-teams`);\r\n }\r\n\r\n protected filteredLoadFromRestApi (pageIndex?: number, pageSize?: number, sort?: string, filter?: FilterModel): Observable {\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (filter){\r\n if (filter.placements){\r\n filter.placements.forEach( placement => {\r\n params = params.append('placements', placement);\r\n });\r\n }\r\n }\r\n\r\n return super.loadFromRestApi(pageIndex, pageSize, sort, params);\r\n }\r\n\r\n public loadTeamByUser(userId: string): Observable{\r\n let params: HttpParams = new HttpParams();\r\n params = params.set('userId', userId);\r\n\r\n return this.http.get(this.apiUrl + '/user', {params: params});\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {NGXLogger} from 'ngx-logger';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport {PatrolModel} from '../../model/patrol.model';\r\nimport {environment} from '../../../environments/environment';\r\nimport {EntityModel} from '../../model/entity.model';\r\nimport { forkJoin, Observable } from 'rxjs';\r\nimport { OperationType } from 'src/app/model/enums.enum';\r\nimport { map } from 'rxjs/operators';\r\nimport { OperationService } from './operation.service';\r\nimport { PatrolFilterModel } from 'src/app/pages/patrol/patrol-filter-dialog/patrol.filter.model';\r\n\r\nimport * as moment from 'moment';\r\nimport { ArchivedType } from 'src/app/general/filter-component/filter.model';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { PatrolRepetitionModel } from 'src/app/model/patrol.repetition.model';\r\nimport { PatrolRepetitionFilterModel } from '../../pages/patrol/patrol-filter-dialog/patrol-repetition.filter.model';\r\nimport { DEFAULT_PAGE_INDEX, DEFAULT_SORT } from '../../common/constants';\r\n\r\nexport const OBJECT_NAME = 'patrolObject';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PatrolService extends OperationService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.patrols_address}/patrols`, OBJECT_NAME);\r\n }\r\n\r\n public loadById(id:string): Observable{\r\n return super.loadById(id).pipe(map( operation => {\r\n if (operation) operation.type = OperationType.PATROL;\r\n return operation;\r\n }));\r\n }\r\n\r\n public loadListFromRestApi(pageIndex?: number, pageSize?: number, sort?: string): Observable {\r\n return super.loadListFromRestApi(pageIndex, pageSize, sort).pipe(map(operations => {\r\n return this.fillOperationType(operations, OperationType.PATROL);\r\n }));\r\n }\r\n\r\n public clone(record: PatrolModel) {\r\n const formData: FormData = super.buildFormData(OBJECT_NAME, record, new Map());\r\n return this.postAsFormData(this.apiUrl + '/clone', formData);\r\n }\r\n\r\n public createPatrolRepetition(patrolRepetition: PatrolRepetitionModel): Observable {\r\n return this.http.post(this.apiUrl + '/repetition', patrolRepetition, {responseType: 'json'});\r\n }\r\n\r\n public getPatrolRepetitionByReferencePatrolId(referencePatrolId: string): Observable {\r\n return this.http.get(this.apiUrl + `/repetition/${referencePatrolId}`, { responseType: 'json' });\r\n }\r\n\r\n public getReferencePatrolById(referencePatrolId: string): Observable {\r\n return this.http.get(this.apiUrl + `/reference/${referencePatrolId}`, { responseType: 'json' });\r\n }\r\n\r\n public updatePatrolRepetition(patrolRepetition: PatrolRepetitionModel): Observable {\r\n return this.http.put(this.apiUrl + `/repetition/${patrolRepetition.referencePatrolId}`, patrolRepetition, {responseType: 'json'});\r\n }\r\n\r\n public deletePatrolRepetition(patrolRepetition: PatrolRepetitionModel): Observable {\r\n return this.http.delete(this.apiUrl + `/repetition/${patrolRepetition.referencePatrolId}`);\r\n }\r\n\r\n public loadPatrolRepetitionFromRestApi(filter?: PatrolRepetitionFilterModel, pageIndex?: number, pageSize?: number, sort?: string): Observable {\r\n let params = new HttpParams();\r\n if (pageIndex != null && pageSize != null) {\r\n const pageSizeStr = pageSize ? pageSize.toString() : environment.defaultPageSize.toString();\r\n const pageIndexStr = pageIndex ? pageIndex.toString() : DEFAULT_PAGE_INDEX.toString();\r\n params = params.set('page', pageIndexStr).set('size', pageSizeStr);\r\n }\r\n params = params.set('sort', DEFAULT_SORT);\r\n \r\n\r\n if (filter.referencePatrolIds){\r\n filter.referencePatrolIds.forEach( referencePatrolId => {\r\n params = params.append('referencePatrolIds', referencePatrolId);\r\n });\r\n }\r\n return this.http.get(this.apiUrl + '/repetition',{ params : params });\r\n }\r\n\r\n postAsFormData(url: string, formData: FormData) : Observable {\r\n return this.http.post(url, formData, {responseType: 'json'});\r\n }\r\n\r\n putAsFormData(url: string, formData: FormData) : Observable {\r\n return this.http.put(url, formData, {responseType: 'json'});\r\n }\r\n\r\n public exportPatrol(patrol: PatrolModel): Observable {\r\n return this.http.get(`${this.apiUrl}/${patrol.id}/data`, { responseType: 'blob' });\r\n }\r\n\r\n protected filteredLoadFromRestApi(pageIndex?: number, pageSize?: number, sort?: string, filter?: PatrolFilterModel): Observable {\r\n\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (filter){\r\n if (filter.startDate){\r\n const startDateTime = moment(filter.startDate).format('x');\r\n params = params.set('start', startDateTime);\r\n }\r\n\r\n if (filter.endDate){\r\n const endDateTime = moment(filter.endDate).format('x');\r\n params = params.set('end', endDateTime);\r\n }\r\n\r\n if (filter.status){\r\n filter.status.forEach( status => {\r\n params = params.append('status', status);\r\n });\r\n }\r\n\r\n if (filter.placements){\r\n filter.placements.forEach( placement => {\r\n params = params.append('placements', placement);\r\n });\r\n }\r\n\r\n if (filter.patrolTeams){\r\n filter.patrolTeams.forEach( patrolTeam => {\r\n if (patrolTeam) { // Ignorar os nulos\r\n params = params.append('patrolTeams', patrolTeam);\r\n }\r\n });\r\n }\r\n\r\n if (filter.archived !== ArchivedType.ALL){\r\n params = params.append('archived', (filter.archived === ArchivedType.ARCHIVED) ? String(true) : String(false));\r\n }\r\n\r\n if(filter.current == false) {\r\n if(!filter.endDate) {\r\n let endDatePlusWeek = moment().add(1,'weeks').format('x');\r\n params = params.set('end', endDatePlusWeek);\r\n }\r\n }\r\n }\r\n\r\n return super.loadFromRestApi(pageIndex, pageSize, sort, params);\r\n }\r\n\r\n public updatePatrolRepetitions(patrolRepetitions: PatrolRepetitionModel[]){ \r\n this.logger.debug('PatrolService.updatePatrolRepetitions()');\r\n const observables: Observable[] = [];\r\n patrolRepetitions.forEach( (patrolRepetition: PatrolRepetitionModel) => { \r\n observables.push(this.updatePatrolRepetition(patrolRepetition));\r\n });\r\n return forkJoin(observables);\r\n }\r\n}\r\n","import { ConfirmationDialogData } from './confirmation.data';\r\nimport { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'app-confirmation-dialog',\r\n templateUrl: './confirmation-dialog.component.html',\r\n styleUrls: ['./confirmation-dialog.component.scss']\r\n})\r\nexport class ConfirmationDialogComponent implements OnInit {\r\n lines:string[];\r\n constructor(public dialogRef: MatDialogRef, @Inject (MAT_DIALOG_DATA) public data: ConfirmationDialogData) { }\r\n\r\n ngOnInit() {\r\n if(this.data.linesMsg)\r\n this.lines = this.data.linesMsg.split(\"\\n\");\r\n }\r\n}\r\n","
    \r\n {{data.title}} \r\n \r\n
    \r\n\r\n
    \r\n \r\n {{data.msg}}\r\n \r\n\r\n
    \r\n
    \r\n {{line}} \r\n
    \r\n
    \r\n \r\n
    \r\n \"{{data.identifier}}\"\r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n","import { ObservedAreaStatus } from \"./enums.enum\";\r\n\r\nexport class LayerFilterModel {\r\n years: string[] = [];\r\n states: string[] = [];\r\n bandIds: string[] = [];\r\n bandNames: string[] = [];\r\n areaStatus: string = ObservedAreaStatus.ALL;\r\n responsiblesIds: string[] = [];\r\n areasIds: string[] = [];\r\n}\r\n","import { NGXLogger } from 'ngx-logger';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Component, Inject } from '@angular/core';\r\nimport { LayerService } from 'src/app/service/model/layer.service';\r\nimport { UserService } from 'src/app/service/model/user.service';\r\nimport { PatrolFilterModel } from './patrol.filter.model';\r\nimport { OperationStatusDescription } from 'src/app/model/enums.enum';\r\nimport { PatrolService } from 'src/app/service/model/patrol.service';\r\nimport { PatrolTeamService } from 'src/app/service/model/patrol.team.service';\r\nimport { PatrolModel } from 'src/app/model/patrol.model';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { OperationFilterComponent } from 'src/app/general/filter-component/operation-filter-component';\r\nimport { SingleDataCacheService } from '../../../service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { first } from 'rxjs/operators';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'app-patrol-filter-dialog',\r\n templateUrl: './patrol-filter-dialog.component.html',\r\n styleUrls: ['./patrol-filter-dialog.component.scss']\r\n})\r\nexport class PatrolFilterDialogComponent extends OperationFilterComponent {\r\n\r\n operationStatusDescription = OperationStatusDescription;\r\n \r\n constructor(patrolTeamService: PatrolTeamService,\r\n logger: NGXLogger,\r\n layerService: LayerService,\r\n userService: UserService,\r\n protected patrolService: PatrolService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n entityCacheService: EntityCacheService,\r\n protected storageService: StorageService,\r\n protected toastr: ToastrService,\r\n public dialogRef: MatDialogRef,\r\n @Inject(MAT_DIALOG_DATA) public dialogFilterModel: PatrolFilterModel,\r\n public filterModel: PatrolFilterModel) {\r\n super(logger, userService, layerService, patrolTeamService, singleDataCacheService, entityCacheService, patrolService, filterModel, storageService);\r\n }\r\n\r\n ngOnInit(): void{\r\n this.loggedUser = this.storageService.getLocalUser();\r\n\r\n this.filterModel = new PatrolFilterModel();\r\n this.inMemoryFilterModel = this.dialogFilterModel;\r\n \r\n super.ngOnInit(); // A cópia do filtro será feita aqui\r\n }\r\n\r\n loadFormOptionsData() {\r\n this.loadPatrolTeams();\r\n }\r\n\r\n onFilter(){\r\n this.loadingListService.loadingOn();\r\n this.loadFilteredDataModel().pipe(first()).subscribe( (patrols : PatrolModel[]) => {\r\n this.dialogRef.close(patrols);\r\n }, error => {\r\n if(error.status == 413){\r\n this.toastr.warning(\"Sua consulta retornou mais de 2000 registros, por favor refina sua busca.\");\r\n this.dialogRef.close([]);\r\n }else{\r\n this.logger.error(error);\r\n }\r\n },\r\n () => {\r\n this.loadingListService.loadingOff();\r\n });\r\n }\r\n\r\n /**\r\n * Limpa todos os campos do filtro\r\n */\r\n clearFilter(){\r\n super.clearFilter();\r\n\r\n this.filterModel.patrolTeams = [];\r\n }\r\n}\r\n","
    \r\n Filtrar Rondas\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n Todos\r\n Arquivados\r\n Não Arquivados\r\n \r\n
    \r\n
    \r\n \r\n \r\n Hoje\r\n Especificado\r\n \r\n
    \r\n
    \r\n \r\n \r\n Hora Inicial\r\n \r\n query_builder\r\n \r\n \r\n \r\n Hora Final\r\n \r\n query_builder\r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n\r\n \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n\r\n \r\n \r\n \r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BaseMapComponent } from './base-map/base-map.component';\r\nimport { UploadComponent } from './upload/upload.component';\r\nimport { LeafletModule } from '@asymmetrik/ngx-leaflet';\r\nimport { LeafletDrawModule } from '@asymmetrik/ngx-leaflet-draw';\r\nimport { LeafletMarkerClusterModule } from '@asymmetrik/ngx-leaflet-markercluster';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BooleanBRPipe } from './boolean-br.pipe';\r\nimport { ConfirmationDialogComponent } from './confirmation-dialog/confirmation-dialog.component';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { NgxAudioPlayerModule } from 'ngx-audio-player';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SystemCheckDialogComponent } from './system-check/system-check-dialog.component';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { GlobalSpinnerComponent } from './global-spinner/global-spinner.component';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { ToViewPipe } from '../model/pipe/user-model-toview.pipe';\r\nimport { ImportPointsKmlDialogComponent } from './operation/import-points-kml-dialog/import-points-kml-dialog.component';\r\nimport { ImportGeoKmlDialogComponent } from './import-geo-kml-dialog/import-geo-kml-dialog.component';\r\nimport { ImportPointsXlsDialogComponent } from './operation/import-points-xls-dialog/import-points-xls-dialog.component';\r\nimport { NotificationDialogComponent } from './notification-dialog/notification-dialog.component';\r\nimport { InsertPointDialogComponent } from './operation/insert-point-dialog/insert-point-dialog.component';\r\nimport { ImportPointsDialogComponent } from './operation/import-points-dialog/import-points-dialog.component';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { EventListDialogComponent } from './operation/event-list-dialog/event-list-dialog.component';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MessageComponent } from './message/message.component';\r\nimport { MarkerFilterModel } from './message/marker.filter.model';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { SingleDataEditComponent } from './single-data-edit/single-data-edit.component';\r\nimport { SingleDataListComponent } from './single-data-list/single-data-list.component';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { LocationPipe } from '../model/pipe/location.pipe';\r\nimport { AnswerListComponent } from './answer-list/answer-list.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MultiselectAutocomplete } from './multiselect-autocomplete/multiselect-autocomplete.component';\r\nimport { SingleAutocomplete } from './single-autocomplete/single-autocomplete.component';\r\nimport { TrackPointsDialogComponent } from './track-points-dialog/track-points-dialog.component';\r\nimport { LoginAsComponent } from './login-as/login-as.component';\r\nimport { DateChooserComponent } from './date-chooser/date-chooser.component';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { LoginErrorComponent } from './login-error/login-error.component';\r\nimport { MultiselectObjectAutocompleteComponent } from './multiselect-object-autocomplete/multiselect-object-autocomplete.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n BaseMapComponent,\r\n ConfirmationDialogComponent,\r\n SystemCheckDialogComponent,\r\n UploadComponent,\r\n BooleanBRPipe,\r\n GlobalSpinnerComponent,\r\n ImportPointsKmlDialogComponent,\r\n ImportGeoKmlDialogComponent,\r\n ImportPointsXlsDialogComponent,\r\n NotificationDialogComponent,\r\n InsertPointDialogComponent,\r\n ImportPointsDialogComponent,\r\n TrackPointsDialogComponent,\r\n EventListDialogComponent,\r\n MessageComponent,\r\n SingleDataEditComponent,\r\n SingleDataListComponent,\r\n SingleAutocomplete,\r\n DateChooserComponent,\r\n MultiselectAutocomplete,\r\n MultiselectObjectAutocompleteComponent,\r\n ToViewPipe,\r\n LocationPipe,\r\n AnswerListComponent,\r\n LoginAsComponent,\r\n LoginErrorComponent\r\n ],\r\n exports: [\r\n BaseMapComponent,\r\n ConfirmationDialogComponent,\r\n UploadComponent,\r\n BooleanBRPipe,\r\n GlobalSpinnerComponent,\r\n ToViewPipe,\r\n LocationPipe,\r\n ImportPointsKmlDialogComponent,\r\n ImportPointsXlsDialogComponent,\r\n NotificationDialogComponent,\r\n EventListDialogComponent,\r\n MessageComponent,\r\n SingleDataEditComponent,\r\n SingleDataListComponent,\r\n AnswerListComponent,\r\n SingleAutocomplete,\r\n DateChooserComponent,\r\n MultiselectObjectAutocompleteComponent,\r\n MultiselectAutocomplete\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n MatFormFieldModule,\r\n MatPaginatorModule,\r\n FlexLayoutModule,\r\n MatInputModule,\r\n MatButtonModule,\r\n MatSelectModule,\r\n LeafletModule,\r\n LeafletDrawModule,\r\n LeafletMarkerClusterModule,\r\n MatTooltipModule,\r\n MatDialogModule,\r\n MatExpansionModule,\r\n MatListModule,\r\n MatTableModule,\r\n MatMenuModule,\r\n MatProgressSpinnerModule,\r\n MatToolbarModule,\r\n MatGridListModule,\r\n MatIconModule,\r\n DragDropModule,\r\n NgxAudioPlayerModule,\r\n MatRadioModule,\r\n MatIconModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatCardModule,\r\n MatSortModule,\r\n MatCheckboxModule,\r\n MatAutocompleteModule,\r\n MatDatepickerModule,\r\n ReactiveFormsModule,\r\n NgxMaskModule.forRoot(),\r\n ],\r\n providers: [\r\n BooleanBRPipe,\r\n MarkerFilterModel\r\n ]\r\n})\r\nexport class GeneralModule { }\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FlexLayoutModule } from \"@angular/flex-layout\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { MatButtonModule } from \"@angular/material/button\";\r\nimport { MatDividerModule } from \"@angular/material/divider\";\r\nimport { MatExpansionModule } from \"@angular/material/expansion\";\r\nimport { MatFormFieldModule } from \"@angular/material/form-field\";\r\nimport { MatIconModule } from \"@angular/material/icon\";\r\nimport { MatInputModule } from \"@angular/material/input\";\r\nimport { MatPaginatorModule } from \"@angular/material/paginator\";\r\nimport { MatSelectModule } from \"@angular/material/select\";\r\nimport { MatSidenavModule } from \"@angular/material/sidenav\";\r\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\r\nimport { MatSortModule } from \"@angular/material/sort\";\r\nimport { MatTableModule } from \"@angular/material/table\";\r\nimport { MatToolbarModule } from \"@angular/material/toolbar\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { AngularSplitModule } from \"angular-split\";\r\nimport { GeneralModule } from \"src/app/general/general.module\";\r\nimport { ChannelListComponent } from \"./channel-list/channel-list.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n ChannelListComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n FlexLayoutModule,\r\n RouterModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatTableModule,\r\n MatSortModule,\r\n MatButtonModule,\r\n MatPaginatorModule,\r\n MatTooltipModule,\r\n MatToolbarModule,\r\n FlexLayoutModule,\r\n MatDividerModule,\r\n MatSelectModule,\r\n MatSlideToggleModule,\r\n MatExpansionModule,\r\n MatSidenavModule,\r\n AngularSplitModule,\r\n GeneralModule\r\n ]\r\n})\r\nexport class ChannelModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { Autocomplete } from '../autocomplete/autocomplete.component';\r\n\r\n/**\r\n * @title Multi-select autocomplete\r\n */\r\n@Component({\r\n selector: 'single-autocomplete',\r\n templateUrl: 'single-autocomplete.component.html',\r\n styleUrls: ['single-autocomplete.component.css']\r\n})\r\nexport class SingleAutocomplete extends Autocomplete implements OnInit {\r\n\r\n // valueData é dado que vai ser atualizado no model (aqui um único objeto)\r\n _valueData: Object;\r\n @Input()\r\n set valueData(data: Object) {\r\n this._valueData = data;\r\n this.dataControl.setValue(this.getDataControlObjectValue(this._valueData, this._optionValue));\r\n }\r\n\r\n get valueData() {\r\n return this._valueData;\r\n }\r\n\r\n // Define um item que não está cadastrado\r\n _extraData: Object;\r\n @Input()\r\n set extraData(data: Object) {\r\n if (this._data.length == 0) {\r\n return;\r\n }\r\n this._extraData = data;\r\n\r\n if (this._extraData) {\r\n if (!this._data.includes(this.extraData)) {\r\n this._data = this._data.slice(); // cria uma cópia para evitar modificar dados externos\r\n this._data.push(this.extraData);\r\n }\r\n }\r\n }\r\n\r\n get extraData() {\r\n return this._extraData;\r\n }\r\n\r\n displayFn = (value: Object| string): string | undefined => {\r\n let displayValue: string;\r\n if (value) {\r\n displayValue = this.getData(value);\r\n }\r\n else {\r\n return \"\";\r\n }\r\n return displayValue;\r\n }\r\n\r\n optionClicked(event: Event, data: Object) {\r\n this.autocomplete.closePanel();\r\n this.toggleSelection(data);\r\n }\r\n\r\n toggleSelection(data: Object) {\r\n let valueData = this.getDataControlPropertyValue(data, this._optionValue);\r\n this.dataControl.setValue(data);\r\n this.valueDataChange.emit(valueData);\r\n this.controlColor = \"primary\";\r\n this.selectionChangedEvent.emit(valueData);\r\n this.someInput.nativeElement.focus();\r\n }\r\n\r\n onSearchChange(event) { \r\n let value: string = this.dataControl.value;\r\n if (value==null) {\r\n value = '';\r\n }\r\n let nvalue:string = value.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").toLowerCase();\r\n let match = this._data.find(val => {\r\n let name: String = this._name ? val[this._name] : val\r\n let sval: String = name.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").toLowerCase();\r\n if (sval == nvalue) {\r\n return true;\r\n }\r\n return false;\r\n });\r\n if (value && match != undefined) {\r\n this.dataControl.setValue(match);\r\n this.controlColor = \"primary\";\r\n this.valueDataChange.emit(this.getDataControlPropertyValue(match, this._optionValue));\r\n }\r\n else {\r\n this.someInput.nativeElement.value = event.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").toLowerCase();\r\n this.dataControl.setErrors({'incorrect': true});\r\n this.controlColor = \"warn\";\r\n }\r\n }\r\n\r\n focusInFunction() {\r\n this.dataControl.setValue('');\r\n this.autocomplete.openPanel();\r\n }\r\n\r\n onOpenedEvent(event) {\r\n }\r\n\r\n onClosedEvent(event) {\r\n this.dataControl.setValue(this.getDataControlObjectValue(this.valueData, this._optionValue));\r\n }\r\n\r\n onSelectionEvent(event: MatAutocompleteSelectedEvent) {\r\n let value = event.option.value ? event.option.value : null;\r\n let valueData = this.getDataControlPropertyValue(value, this._optionValue);\r\n this.dataControl.setValue(value);\r\n this.valueDataChange.emit(valueData);\r\n this.controlColor = \"primary\";\r\n this.selectionChangedEvent.emit(valueData);\r\n }\r\n}","\r\n\t{{placeholder}}\r\n\t\r\n\tCampo Obrigatório\r\n\tkeyboard_arrow_down\r\n\t\r\n\t{{ '' }}\r\n\t{{ getData(extraData) }}\r\n\t\r\n\t\t{{ getData(data) }}\r\n\t\r\n\t\r\n","import { Component, Inject, OnDestroy, OnInit, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { Permission, RegistrationType } from 'src/app/model/enums.enum';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { ProfileService } from 'src/app/service/model/profile.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { UserType } from '../../../../model/enums.enum';\r\nimport { RegistrationListComponent } from '../../registration-list-component';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ProfileModel } from 'src/app/model/profile.model';\r\nimport { ESP } from 'src/app/common/constants';\r\n\r\n@Component({\r\n selector: 'app-profile-list',\r\n templateUrl: './profile-list.component.html',\r\n styleUrls: ['./profile-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class ProfileListComponent extends RegistrationListComponent implements OnInit, OnDestroy {\r\n\r\n permission = Permission;\r\n constructor(logger: NGXLogger,\r\n protected profileService: ProfileService,\r\n protected dialog: MatDialog,\r\n public authorizationService: AuthorizationService,\r\n protected changeDetector: ChangeDetectorRef,\r\n protected storageService: StorageService,\r\n protected toastr: ToastrService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container\r\n ) {\r\n super(logger, authorizationService, profileService, dialog, 'profiles', environment.PROFILES_GROUP_LABEL, environment.PROFILES_TITLE_LABEL,\r\n environment.PROFILES_MODEL_LABEL, storageService, changeDetector, toastr, goldenLayout, container);\r\n this.registrationType = RegistrationType.PROFILE;\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.logger.debug('ProfileListComponent.ngOnInit()');\r\n this.loadRecordsFromServer();\r\n this.displayedColumns = ['select',\r\n 'name'];\r\n }\r\n protected getDefaultSortColumn(): string {\r\n return \"name\";\r\n }\r\n\r\n /** Deleta o perfil administrador da lista */\r\n postLoadProcess(){\r\n // Remove o administrador da lista\r\n const index = this.model.findIndex((admProfile) => { return admProfile['userType'] === UserType.ADMINISTRATOR });\r\n this.model.splice(index, 1);\r\n }\r\n\r\n protected getStringEntityForFilter(profile: ProfileModel): string {\r\n const name = this.lowerAndTrimText(profile.name);\r\n return name;\r\n } \r\n}\r\n","
    \r\n
    \r\n
    {{title}}
    [ {{getListCount()}} ]\r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Nome {{element?.name}}
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { PointService } from '../../../service/model/point.service';\r\nimport { first } from 'rxjs/operators';\r\nimport { UserModel } from '../../../model/user.model';\r\nimport { LoadingListService } from 'src/app/service/loading/loading-list.service';\r\n\r\n@Component({\r\n selector: 'app-import-points-xls-dialog',\r\n templateUrl: './import-points-xls-dialog.component.html',\r\n styleUrls: ['./import-points-xls-dialog.component.scss']\r\n})\r\nexport class ImportPointsXlsDialogComponent implements OnInit, OnDestroy {\r\n\r\n filename: string;\r\n xlsFile: File;\r\n validFilename: boolean;\r\n observations: string;\r\n imported: boolean;\r\n \r\n loadingListService = new LoadingListService();\r\n\r\n constructor(private logger: NGXLogger,\r\n public dialogRef: MatDialogRef,\r\n protected pointService: PointService,\r\n public toastr: ToastrService,\r\n @Inject(MAT_DIALOG_DATA) public currentUser: UserModel){}\r\n\r\n ngOnInit() {\r\n this.logger.debug(this.currentUser);\r\n }\r\n \r\n ngOnDestroy() {\r\n this.loadingListService.destroy();\r\n }\r\n\r\n selectFile(file: File) {\r\n if (file) { // Usuário selecionou um arquivo\r\n this.xlsFile = file;\r\n this.filename = file.name;\r\n var fileExt = this.filename.split('.').pop();\r\n this.validFilename = (fileExt === \"xlsx\") ? true : false;\r\n\r\n } \r\n else { // Usuário pressionou Remover\r\n this.xlsFile = undefined;\r\n this.filename = undefined;\r\n }\r\n this.imported = false;\r\n if (this.validFilename) {\r\n this.observations = \"\";\r\n }\r\n else {\r\n this.observations = \"Arquivo inválido!\\nÉ esperado arquivo com extensão Xlsx!\"\r\n this.imported = true;\r\n }\r\n}\r\n\r\n getShowSpinner() {\r\n return this.loadingListService.getShowSpinner();\r\n }\r\n\r\n select() {\r\n this.logger.debug('onSaveClick: Saving create operation.');\r\n\r\n this.observations = \"\";\r\n\r\n this.loadingListService.loadingOn();\r\n\r\n this.pointService.importXls(this.currentUser, this.xlsFile).pipe(first()).subscribe( errors => {\r\n let jsonData = JSON.stringify(errors);\r\n const obj = JSON.parse(jsonData);\r\n this.observations += \"Foram importados (\" + obj[\"inspections\"].length + \") pontos com sucesso.\\n\";\r\n if (obj[\"errors\"][\"0\"]) {\r\n this.observations += \"O formato da planilha é inválido!\\n\";\r\n }\r\n else {\r\n var first: boolean = true;\r\n for(var line in obj[\"errors\"]) {\r\n if (first) {\r\n this.observations += \"Alguns pontos não puderam ser importados. Pontos com problema:\\n\";\r\n first = false;\r\n }\r\n this.observations += \"Linha : \" + line + \"\\n\"; \r\n for(var i=0; i\r\n Importar XLS\r\n \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n\r\n\r\n \r\n \r\n\r\n","import { Directive } from \"@angular/core\";\r\nimport { NGXLogger } from \"ngx-logger\";\r\nimport { EntityService } from \"src/app/service/model/entity.service\";\r\nimport { UserService } from \"src/app/service/model/user.service\";\r\n\r\nimport { LayerService } from \"src/app/service/model/layer.service\";\r\nimport { FilterModel } from \"./filter.model\";\r\nimport { StorageService } from \"src/app/service/storage-service\";\r\nimport { PatrolTeamService } from \"src/app/service/model/patrol.team.service\";\r\nimport { FilterComponent } from \"./filter-component\";\r\nimport { SingleDataCacheService } from '../../service/model/single.data.cache.service';\r\nimport { EntityCacheService } from \"src/app/service/model/entity.cache.service\";\r\n\r\n@Directive()\r\nexport abstract class OperationFilterComponent extends FilterComponent {\r\n\r\n constructor(protected logger: NGXLogger,\r\n protected userService: UserService,\r\n protected layerService: LayerService,\r\n protected patrolTeamService: PatrolTeamService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n public entityCacheService: EntityCacheService,\r\n protected entityService: EntityService,\r\n protected filterModel: FilterModel,\r\n protected storageService: StorageService\r\n ) { super(logger, userService, layerService, singleDataCacheService, entityCacheService, entityService, filterModel, storageService); }\r\n\r\n loadPatrolTeams(){\r\n this.entityCacheService.loadPatrolTeams(this.loadingListService);\r\n }\r\n}\r\n","import { GeoModel } from './geo.model';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nexport class BandModel extends GeoModel{\r\n extension: string;\r\n ducts: string[]; // Nomes dos dutos\r\n\r\n public static getPopupContent(feature): string{\r\n \r\n const band = feature.properties as BandModel;\r\n\r\n let ductList = '';\r\n if (band.ducts) {\r\n for (const duct of band.ducts){\r\n ductList = ductList + `
  • ${duct}
  • `;\r\n }\r\n }\r\n let states: string = band.states ? band.states.toString() : '';\r\n let contents: string = `
    Faixa
    \r\n
    ${band.name}
    \r\n
    Extensão (m): ${band.extension?band.extension:''}
    \r\n
    UF(s): ${states}
    \r\n
    Dutos:
    \r\n ${ductList}\r\n `\r\n if (!environment.showPopupLayerTables || band.description == null || band.description === \"\") { \r\n return contents;\r\n }\r\n else {\r\n return contents + \"
    \" + band.description\r\n }\r\n }\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport { PointType, OperationType, OperationTypeDescription, InspectionStatusTypeDescription, InspectionStatusType } from '../../model/enums.enum';\r\nimport * as L from 'leaflet';\r\nimport * as omnivore from '@mapbox/leaflet-omnivore';\r\nimport {HttpClient} from '@angular/common/http';\r\nimport {environment} from '../../../environments/environment';\r\nimport { InspectionModel } from '../../model/inspection.model';\r\nimport { OperationModel } from '../../model/operation.model';\r\nimport { Icons, MapInfo } from '../../common/constants';\r\nimport FieldUtils from '../util/field-utils';\r\nimport ObjectID from 'bson-objectid';\r\nimport { PatrolTeamModel } from '../../model/patrolteam.model';\r\nimport { Observable } from 'rxjs';\r\nimport { first, map } from 'rxjs/operators';\r\nimport DateUtils from '../util/date-utils';\r\nimport { VerificationModel } from 'src/app/model/verification.model';\r\n\r\n@Injectable()\r\nexport class RouteGeographicalService {\r\n\r\n constructor(private http: HttpClient){}\r\n\r\n private getRouteStyle = () => ({color: MapInfo.PLANNED_ROUTE_LINE_COLOR, weight: MapInfo.PLANNED_ROUTE_LINE_WEIGHT});\r\n\r\n public getRoutePopupContent(operation: OperationModel): string {\r\n return `
    Rota de Operação
    \r\n ${ OperationModel.getPopupContent(operation) }\r\n ${ PatrolTeamModel.getPopupContent(operation.patrolTeam) }\r\n ` ;\r\n }\r\n\r\n public getCriticalPointIcon(index: number, operationType?: string) {\r\n const point_icon_size = MapInfo.ROUTE_ICON_SIZE-4;\r\n let cpClassName: string = operationType === \"EVENT_VERIFICATION\" ? 'map-critical-point-event-verification' : 'map-critical-point';\r\n const icon = L.divIcon({\r\n iconSize: [ point_icon_size, point_icon_size ],\r\n iconAnchor: [ point_icon_size/2, point_icon_size/2 ], // no centro do ícone\r\n className: cpClassName,\r\n html:'
    '+index+'
    '\r\n });\r\n return icon;\r\n }\r\n\r\n public getPointsMarker = (type: string, latLng: L.LatLngExpression, index: number, operationType?: string): L.Marker => {\r\n let icon;\r\n if (type === PointType.BASE){\r\n let baseIcon: string = operationType === \"EVENT_VERIFICATION\" ? Icons.ICON_URL_BASE_VERIFICATION : Icons.ICON_URL_BASE\r\n icon = L.icon({\r\n iconSize: [ MapInfo.ROUTE_ICON_SIZE, MapInfo.ROUTE_ICON_SIZE ],\r\n iconAnchor: [ MapInfo.ROUTE_ICON_SIZE/2, MapInfo.ROUTE_ICON_SIZE/2 ], // no centro do ícone\r\n iconUrl: baseIcon\r\n });\r\n }\r\n else {\r\n icon = this.getCriticalPointIcon(index, operationType);\r\n }\r\n\r\n return L.marker(latLng, {icon: icon});\r\n }\r\n\r\n getPointsPopupContent(properties, operation: OperationModel): string {\r\n if (!properties.activities) {\r\n properties.activities = [];\r\n }\r\n let activityText = '';\r\n for (const text of properties.activities) {\r\n activityText = activityText + `
  • ${text}
  • `;\r\n }\r\n\r\n return`
    Ponto de Operação
    \r\n
    ${ properties.index }
    \r\n
    Status: ${InspectionStatusTypeDescription[properties.status]}
    \r\n ${ this.getTagDateOperationForPointsPopupContent(properties, operation) }\r\n
    Sem Acesso: ${properties.noAccess? ' Sim': ' Não'}
    \r\n
    Form. Preen.: ${properties.hasFilledForms? ' Sim': ' Não'}
    \r\n ${ OperationModel.getPopupContent(operation) }\r\n ${ PatrolTeamModel.getPopupContent(operation.patrolTeam) }\r\n ${!properties.band? `
    Nome: ${properties.name? properties.name: ''}
    `: ''}\r\n
    Base: ${(properties.type === PointType.BASE)? ' Sim': ' Não'}
    \r\n ${properties.band? `
    Faixa: ${properties.band}
    ` : ''}\r\n ${properties.km? `
    KM: ${ properties.km}
    ` : ''}\r\n
    Lat, Long: ${FieldUtils.coordToString(properties.lat)},${FieldUtils.coordToString(properties.lng)}
    \r\n ${properties.activities.length > 0 ?\r\n `
    Atividades:
    \r\n ${activityText}\r\n ` : ''}\r\n `;\r\n }\r\n\r\n /*\r\n Se o ponto de inspeção foi finalizado, exibir data/hora da conclusão.\r\n Caso contrário, exibir data/hora do planejamento da ronda OU do envio da verificação.\r\n */\r\n private getTagDateOperationForPointsPopupContent(properties, operation: OperationModel) : string {\r\n let labelDateOperation: string = 'Data/Hora ';\r\n let dateOperation: number;\r\n\r\n if (InspectionStatusType[properties.status] === InspectionStatusType.FINISHED) {\r\n labelDateOperation += 'do Ponto Finalizado';\r\n dateOperation = properties.timestamp;\r\n } else if (OperationType[operation.type] === OperationType.EVENT_VERIFICATION) {\r\n labelDateOperation += 'da Solicitação';\r\n dateOperation = (operation as VerificationModel).sentDate\r\n } else {\r\n labelDateOperation += 'de Início';\r\n dateOperation = operation.startDate;\r\n }\r\n return dateOperation ? `
    ${labelDateOperation}: ${DateUtils.timestampToStringInMinutes(dateOperation)}
    ` : ''\r\n }\r\n\r\n getPointsTooltipContent(properties, operation: OperationModel): string {\r\n return`
    ${ properties.index }
    \r\n
    ${OperationTypeDescription[operation.type] } ${operation.identifier}
    \r\n
    ${FieldUtils.coordToString(properties.lat)},${FieldUtils.coordToString(properties.lng)}
    \r\n `;\r\n }\r\n\r\n setInternalIds(object, inspection){\r\n inspection.editionId = object.editionId = ObjectID.generate();\r\n }\r\n\r\n getOperationPointMarkers(operation: OperationModel, inspections: InspectionModel[]): L.Marker[] {\r\n if (!inspections || inspections.length == 0)\r\n return null;\r\n\r\n let markers: L.Marker[] = [];\r\n\r\n inspections.forEach((inspection: InspectionModel, index) => {\r\n let properties = {\r\n name: inspection.name,\r\n index: index + 1,\r\n activities: inspection.activities,\r\n type: inspection.type,\r\n band: inspection.band,\r\n km: inspection.km,\r\n status: inspection.status,\r\n timestamp: inspection.timestamp,\r\n noAccess: inspection.inspectionPointNoAccess,\r\n operationType: operation.type,\r\n operationIdentifier: operation.identifier,\r\n lat: +inspection.location.latitude,\r\n lng: +inspection.location.longitude\r\n }\r\n\r\n let marker = this.getPointsMarker(inspection.type, [properties.lat, properties.lng], properties.index, operation.type);\r\n marker.bindPopup(this.getPointsPopupContent(properties, operation));\r\n marker.bindTooltip(this.getPointsTooltipContent(properties, operation));\r\n\r\n this.setInternalIds(marker, inspection);\r\n\r\n markers.push(marker);\r\n });\r\n\r\n return markers;\r\n }\r\n\r\n getOperationGeoPoints(operation: OperationModel): L.GeoJSON {\r\n if (!operation.inspections || operation.inspections.length == 0)\r\n return null;\r\n\r\n let geoData;\r\n\r\n geoData = [];\r\n\r\n operation.inspections.forEach((inspection: InspectionModel, index) => {\r\n let properties = {\r\n name: inspection.name,\r\n index: index + 1,\r\n activities: inspection.activities,\r\n type: inspection.type,\r\n band: inspection.band,\r\n km: inspection.km,\r\n status: inspection.status,\r\n timestamp: inspection.timestamp,\r\n noAccess: inspection.inspectionPointNoAccess,\r\n hasFilledForms: inspection.inspectionForms && inspection.inspectionForms.length > 0,\r\n operationType: operation.type,\r\n operationIdentifier: operation.identifier\r\n }\r\n\r\n let geoPoint = {\r\n type: 'Point',\r\n coordinates: [inspection.location.longitude, inspection.location.latitude], // Note que é invertido em coordinates (longitude, latitude)\r\n properties: properties\r\n };\r\n\r\n geoData.push(geoPoint);\r\n });\r\n\r\n // Necessário porque \"this\" não é reconhecido dentro do contexto daquelas callbacks\r\n const _this = this;\r\n\r\n return L.geoJSON(geoData, {\r\n pointToLayer: (feature, latLng) => {\r\n feature.properties.lat = latLng.lat;\r\n feature.properties.lng = latLng.lng;\r\n return _this.getPointsMarker(feature.properties.type, latLng, feature.properties.index, operation.type);\r\n },\r\n onEachFeature(feature, layer): void {\r\n layer.bindPopup(_this.getPointsPopupContent(feature.properties, operation));\r\n layer.bindTooltip(_this.getPointsTooltipContent(feature.properties, operation));\r\n }\r\n });\r\n }\r\n\r\n private cleanProperties = (properties: any) => {\r\n delete properties.styleUrl;\r\n delete properties.styleHash;\r\n delete properties.description;\r\n }\r\n\r\n validateRouteGeometry(geoRoute: L.GeoJSON): boolean {\r\n let layers: L.Layer[] = geoRoute.getLayers();\r\n let found = false;\r\n\r\n for (var id in layers) {\r\n let layer = layers[id];\r\n if (layer instanceof L.Polyline) {\r\n found = true;\r\n }\r\n else if (layer instanceof L.LayerGroup) {\r\n let geomLayers = layer.getLayers();\r\n for(var geomId in geomLayers) {\r\n let geomLayer = geomLayers[geomId];\r\n if (geomLayer instanceof L.Polyline) {\r\n found = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return found;\r\n }\r\n\r\n static getGeoRoutePolyline(geoRoute: L.GeoJSON): L.Polyline [] {\r\n let layers: L.Layer[] = geoRoute.getLayers();\r\n let polylines: L.Polyline [] = [];\r\n\r\n for (var id in layers) {\r\n let layer = layers[id];\r\n if (layer instanceof L.Polyline) {\r\n polylines.push(layer);\r\n }\r\n else if (layer instanceof L.LayerGroup) {\r\n let geomLayers = layer.getLayers();\r\n for(var geomId in geomLayers) {\r\n let geomLayer = geomLayers[geomId];\r\n if (geomLayer instanceof L.Polyline) {\r\n polylines.push(geomLayer);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return polylines;\r\n }\r\n\r\n importKmlRoute(blob: Blob, operation: OperationModel): Promise {\r\n return new Promise( (resolve) => {\r\n const _this = this;\r\n const fileReader = new FileReader();\r\n fileReader.onload = (event: any) => {\r\n const geoRouteData = omnivore.kml(event.target.result, null, L.geoJSON(null, {\r\n style: () => {\r\n return _this.getRouteStyle();\r\n },\r\n pointToLayer: () => {\r\n // clear all points of the route\r\n return null;\r\n },\r\n onEachFeature(feature, layer): void {\r\n feature.properties.operationIdentifier = operation.identifier;\r\n feature.properties.operationType = operation.type;\r\n layer.bindPopup(_this.getRoutePopupContent(operation));\r\n _this.cleanProperties(feature.properties);\r\n }\r\n }));\r\n resolve(geoRouteData);\r\n };\r\n fileReader.readAsDataURL(blob);\r\n });\r\n }\r\n\r\n importPointsKml(blob: Blob): Promise{\r\n return new Promise((resolve) => {\r\n const reader = new FileReader();\r\n const _this = this;\r\n reader.onload = (event: any) => {\r\n const geoPoints = omnivore.kml(event.target.result, null, L.geoJSON(null, {\r\n pointToLayer: (feature, latLng) => {\r\n const iconName = feature.properties.styleUrl.substring(0, 10);\r\n let type;\r\n if (iconName === '#icon-1603'){\r\n type = PointType.BASE;\r\n }else {\r\n type = PointType.CRITICAL_POINT;\r\n }\r\n feature.properties.type = type;\r\n return _this.getPointsMarker(type, latLng, 0); // Será ignorado nesse momento\r\n },\r\n onEachFeature(feature, layer): void {\r\n feature.properties.activities = [];\r\n if (feature.properties.description) {\r\n feature.properties.activities = feature.properties.description.split('|');\r\n }\r\n _this.cleanProperties(feature.properties);\r\n }\r\n }));\r\n resolve(geoPoints);\r\n };\r\n reader.readAsDataURL(blob);\r\n });\r\n }\r\n\r\n public loadKML(operation: OperationModel): Promise{\r\n return new Promise((resolve) => {\r\n let baseUrl = `${environment.settings.patrols_address}/patrols`;\r\n if (operation.type === OperationType.EVENT_VERIFICATION){\r\n baseUrl = `${environment.settings.event_verifications_address}/verifications`;\r\n }\r\n let kmlUrl = 'kml-route';\r\n this.http.get(`${baseUrl}/${operation.id}/${kmlUrl}`, { responseType: 'blob' }).pipe(first()).subscribe((blob) => {\r\n this.importKmlRoute(blob, operation).then( (object) => {\r\n resolve(object);\r\n });\r\n });\r\n });\r\n }\r\n\r\n private blobToFile = (blob: Blob, fileName:string): File => {\r\n let arrayOfBlob = new Array();\r\n arrayOfBlob.push(blob);\r\n let file = new File(arrayOfBlob, fileName);\r\n return file;\r\n }\r\n\r\n public loadKMLFile(operationId: string, operationType: string, fileName: string): Observable {\r\n\r\n let baseUrl = `${environment.settings.patrols_address}/patrols`;\r\n if (operationType === OperationType.EVENT_VERIFICATION) {\r\n baseUrl = `${environment.settings.event_verifications_address}/verifications`;\r\n }\r\n\r\n let kmlUrl = 'kml-route';\r\n return this.http.get(`${baseUrl}/${operationId}/${kmlUrl}`, { responseType: 'blob' }).pipe(first(), map((blob) => {\r\n return this.blobToFile(blob, fileName);\r\n }));\r\n }\r\n\r\n\r\n public importGeoKml(blob: Blob): Promise{\r\n return new Promise((resolve) => {\r\n const reader = new FileReader();\r\n const _this = this;\r\n reader.onload = (event: any) => {\r\n const geoPoints = omnivore.kml(event.target.result, null, L.geoJSON(null, {\r\n }));\r\n resolve(geoPoints);\r\n };\r\n reader.readAsDataURL(blob);\r\n });\r\n }\r\n}\r\n","import { VehicleService } from './../../../../service/model/vehicle.service';\r\nimport { Component, Inject, OnInit, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { VehicleModel } from 'src/app/model/vehicle.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthorizationService } from '../../../../service/authorization/authorization.service';\r\nimport { StorageService } from '../../../../service/storage-service';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { ESP, MAP_PAGE, SORT_PLATE_ASC } from 'src/app/common/constants';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { RegistrationListComponent } from '../../registration-list-component';\r\nimport { RegistrationType } from 'src/app/model/enums.enum';\r\nimport { SAVE_DATA_PREFIX } from '../../../../common/constants';\r\n\r\n@Component({\r\n selector: 'app-vehicle-list',\r\n templateUrl: './vehicle-list.component.html',\r\n styleUrls: ['../../../../app.component.scss', '../../../list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class VehicleListComponent extends RegistrationListComponent implements OnInit {\r\n\r\n constructor(logger: NGXLogger,\r\n vehicleService: VehicleService,\r\n public authorizationService: AuthorizationService,\r\n protected storageService: StorageService,\r\n protected changeDetector: ChangeDetectorRef,\r\n protected toastr: ToastrService,\r\n dialog: MatDialog,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, vehicleService, dialog, 'vehicles', environment.VEHICLES_GROUP_LABEL, environment.VEHICLES_TITLE_LABEL,\r\n environment.VEHICLES_MODEL_LABEL, storageService, changeDetector, toastr, goldenLayout, container);\r\n logger.debug('VehicleListComponent.constructor()');\r\n this.subscribeToSaveCompaniesData();\r\n this.registrationType = RegistrationType.VEHICLE;\r\n this.sortOptions = SORT_PLATE_ASC;\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.logger.debug('VehicleListComponent.ngOnInit()');\r\n this.loadRecordsFromServer();\r\n this.displayedColumns = ['select',\r\n 'plate',\r\n 'model',\r\n 'company.name',\r\n 'observations'];\r\n }\r\n\r\n protected getDefaultSortColumn(): string {\r\n return \"plate\";\r\n }\r\n\r\n public subscribeToSaveCompaniesData() {\r\n // A lista escuta a edição correspondente para saber se algo foi modificado\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + 'companies-edit', (data) => {\r\n this.loadRecordsFromServer();\r\n });\r\n }\r\n\r\n/**\r\n * Retorna a entidade em formato string, contendo só os campos visualizados na interface, para filtro.\r\n */\r\n protected getStringEntityForFilter(vehicle: VehicleModel): string {\r\n const plate = super.lowerAndTrimText(vehicle.plate);\r\n const model = super.lowerAndTrimText(vehicle.model);\r\n const company = (vehicle.company) ? super.lowerAndTrimText(vehicle.company.name) : '';\r\n const observations = super.lowerAndTrimText(vehicle.observations);\r\n return plate + ESP + model + ESP + company + ESP + observations;\r\n }\r\n\r\n loadRecordsFromServer(): void {\r\n this.logger.debug('VehicleListComponent.loadRecordsFromServer()');\r\n /**Verifica se o perfil do usuário logado possui a restrição \"Acesso somente a dados de Lotações específicas\" da seção Web.\r\n * Em caso positivo, somente as verificações que pertencem à mesma Lotação do usuário */\r\n\r\n this.filterModel.placements = this.storageService.getSpecificPlacementIds();\r\n\r\n super.loadRecordsFromServer();\r\n }\r\n\r\n onHistoricalTrackingClick(vehicle: VehicleModel ) {\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingVehicle: vehicle});\r\n }\r\n\r\n onHistoricalTrackingManyClick(){\r\n let historicalTrackingVehicleList = [];\r\n this.selection.selected.forEach( (vehicle: VehicleModel) => {\r\n historicalTrackingVehicleList.push(vehicle);\r\n });\r\n\r\n // Note que depois de abrir o mapa pode descobrir que não tem sinais\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingVehicleList: historicalTrackingVehicleList});\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n {{title}}[ {{getListCount()}} ]\r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Placa {{element?.plate}} Carro {{element?.model}} Empresa {{element.company?.name}} Obs. {{element?.observations}}
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n","import { Directive, Inject, OnDestroy, OnInit, ChangeDetectorRef } from '@angular/core';\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport * as GoldenLayout from \"golden-layout\";\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from \"ngx-golden-layout\";\r\nimport { NGXLogger } from \"ngx-logger\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { ConfirmationDialogComponent } from \"../general/confirmation-dialog/confirmation-dialog.component\";\r\nimport { ArchivedType } from \"../general/filter-component/filter.model\";\r\nimport { CommonModel } from \"../model/common.model\";\r\nimport { EntityModel } from '../model/entity.model';\r\nimport { AuthorizationService } from \"../service/authorization/authorization.service\";\r\nimport { ArchiveService } from \"../service/model/archive.service\";\r\nimport { StorageService } from \"../service/storage-service\";\r\nimport { TrackingService } from '../service/model/tracking.service';\r\nimport { FilteredListComponent } from './filtered-list-component';\r\nimport { ProfileClassToConsole } from '../common/profile-class.decorator';\r\nimport { first } from 'rxjs/operators';\r\n\r\n@ProfileClassToConsole()\r\n@Directive()\r\nexport class ArchiveListComponent extends FilteredListComponent implements OnInit, OnDestroy {\r\n\r\n // ARQUIVAMENTO\r\n denyArchiving: boolean = true; // Disable do botão de arquivamento\r\n archiveButtonLabel: string = 'Arquivar'; // Label do botão de arquivamento\r\n\r\n denyRemoveMany: boolean = true; // Disable do botão de remover\r\n\r\n isHiddenButtonArchiveForUser : boolean;\r\n\r\n constructor(public logger: NGXLogger,\r\n protected changeDetector: ChangeDetectorRef,\r\n public authorizationService: AuthorizationService,\r\n protected entityService: ArchiveService,\r\n protected dialog: MatDialog,\r\n public componentName: string,\r\n public tabTitle: string,\r\n public title: string,\r\n public modelName: string, // Usado em diálogos de confirmação\r\n protected storageService: StorageService,\r\n protected trackingService: TrackingService, \r\n protected toastr: ToastrService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, entityService, dialog, componentName, tabTitle, title, modelName, storageService, changeDetector,toastr, goldenLayout, container);\r\n }\r\n\r\n ngOnInit() {\r\n this.logger.debug('ArchiveListComponent.ngOnInit()');\r\n super.ngOnInit();\r\n this.isOperationArchiveButtonHiddenForUser();\r\n }\r\n\r\n ngOnDestroy(){\r\n super.ngOnDestroy();\r\n }\r\n\r\n // Atualiza o disabled do botão de remover\r\n updateRemoveRequirement(){\r\n this.denyRemoveMany = !(this.checkRemoveRequirements());\r\n }\r\n\r\n // Percorre os itens selecionados verificando se atende aos requisitos para remover\r\n checkRemoveRequirements(): boolean{\r\n if (!this.selection.hasValue()) {\r\n return false;\r\n }\r\n\r\n for(let model of this.selection.selected){\r\n if (!this.canDelete(model))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n canDelete(model: EntityModel): boolean {\r\n return true;\r\n }\r\n\r\n //########################################################\r\n // MÉTODOS DE ARQUIVAMENTO\r\n //########################################################\r\n\r\n // Submit do botão de arquivamento\r\n onArchiveManyClick(){\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: this.archiveButtonLabel + ' item(s) selecionado(s)?',\r\n title: this.archiveButtonLabel + ' ' + this.modelName,\r\n okLabel: this.archiveButtonLabel,\r\n showIdentifier: false\r\n }\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.archive();\r\n }\r\n }, error => this.logger.error(error));\r\n }\r\n\r\n // Método de arquivamento\r\n private archive(){\r\n this.entityService.archive(this.selection.selected).pipe(first()).subscribe( values => {\r\n this.toastr.info('Ação de ' + this.archiveButtonLabel + ' ' + this.modelName + ' foi realizada com sucesso.');\r\n\r\n this.archiveUpdate();\r\n }, error => this.logger.error(error));\r\n }\r\n\r\n selectionUpdate() {\r\n this.updateArchiveRequirement();\r\n this.updateRemoveRequirement();\r\n }\r\n\r\n private entityArchiveUpdate(entity: EntityModel) {\r\n if(this.filterModel.archived == ArchivedType.NON_ARCHIVED || this.filterModel.archived == ArchivedType.ARCHIVED){\r\n const index = this.model.findIndex(item => item.id === entity.id);\r\n this.model.splice(index, 1);\r\n }else{\r\n const updated: CommonModel = this.model.find((model) => entity.id == model.id);\r\n updated.archived = !updated.archived;\r\n }\r\n }\r\n\r\n // Remove os elementos da lista caso o filtro esteja marcado como apenas os não arquivados\r\n archiveUpdate(){\r\n this.selection.selected.forEach(entity => {\r\n this.entityArchiveUpdate(entity);\r\n });\r\n\r\n if(this.filterModel.archived == ArchivedType.NON_ARCHIVED || this.filterModel.archived == ArchivedType.ARCHIVED){\r\n this.buildDataSource();\r\n }\r\n }\r\n\r\n onArchiveClick(entity: EntityModel){\r\n let entities: EntityModel[] = [];\r\n entities.push(entity);\r\n this.entityService.archive(entities).pipe(first()).subscribe( values => {\r\n this.toastr.info('Ação de ' + this.archiveButtonLabel + ' ' + this.modelName + ' foi realizada com sucesso.');\r\n this.entityArchiveUpdate(entity);\r\n\r\n if(this.filterModel.archived == ArchivedType.NON_ARCHIVED || this.filterModel.archived == ArchivedType.ARCHIVED){\r\n this.buildDataSource();\r\n }\r\n }, error => this.logger.error(error));\r\n }\r\n\r\n isOperationCreateButtonHiddenForUser(): boolean {\r\n return !this.authorizationService.isOperationCreatingAllowed();\r\n }\r\n\r\n isOperationArchiveButtonHiddenForUser(){\r\n this.isHiddenButtonArchiveForUser = !this.authorizationService.isOperationArchiveAllowed(); \r\n }\r\n\r\n // Atualiza o disabled do botão de arquivamento\r\n updateArchiveRequirement(){\r\n this.denyArchiving = !(this.checkArchivalRequirements());\r\n }\r\n\r\n // Percorre os itens selecionados verificando se atende aos requisitos para arquivamento\r\n checkArchivalRequirements(): boolean{\r\n if(!this.selection.hasValue()) {\r\n this.archiveButtonLabel = 'Arquivar'; //Label default\r\n return false;\r\n }\r\n\r\n if (this.authorizationService.isAdmin())\r\n return true;\r\n\r\n let canArchive = this.authorizationService.isControl();\r\n if (canArchive) {\r\n let someArchived = false;\r\n let someNotArchived = false;\r\n\r\n for(let model of this.selection.selected as CommonModel[]){\r\n if (canArchive) {\r\n if (!this.hasArchivalRequirements(model))\r\n canArchive = false;\r\n }\r\n\r\n (model.archived) ? someArchived = true : someNotArchived = true;\r\n }\r\n\r\n this.archiveButtonLabel = someNotArchived ? 'Arquivar' : 'Desarquivar'; //Atualiza a label do botão de arquivamento\r\n\r\n if(someArchived && someNotArchived) canArchive = false; // Seleção de itens arquivados e não arquivados desabilita o botão\r\n }\r\n\r\n return canArchive;\r\n }\r\n\r\n canArchive(model: EntityModel): boolean{\r\n if (!model)\r\n return false;\r\n\r\n if (this.authorizationService.isAdmin())\r\n return true;\r\n\r\n let canArchive = this.authorizationService.isControl();\r\n if (canArchive) {\r\n if (!this.hasArchivalRequirements(model as CommonModel))\r\n canArchive = false;\r\n }\r\n\r\n return canArchive;\r\n }\r\n\r\n // Sobreescrito para verificações, rondas e eventos\r\n hasArchivalRequirements(model: CommonModel){\r\n return true;\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit, Inject, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { FormService } from 'src/app/service/model/form.service';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { FormFilterModel } from '../form-filter-dialog/form.filter.model';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { FormFilterDialogComponent } from '../form-filter-dialog/form-filter-dialog.component';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormModel } from 'src/app/model/form.model';\r\nimport { ESP, SORT_NAME_ASC } from 'src/app/common/constants';\r\nimport { RegistrationListComponent } from '../../registration-list-component';\r\nimport { RegistrationType, UserType } from 'src/app/model/enums.enum';\r\nimport { first } from 'rxjs/operators';\r\nimport { PlacementModel } from 'src/app/model/placement.model';\r\nimport { AuthenticationService } from '../../../login/login-services/authentication.service';\r\n\r\n@Component({\r\n selector: 'app-form-list',\r\n templateUrl: './form-list.component.html',\r\n styleUrls: ['./form-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class FormListComponent extends RegistrationListComponent implements OnInit, OnDestroy {\r\n\r\n model: FormModel[];\r\n\r\n filterModel: FormFilterModel;\r\n formUpdateSubscription: Subscription;\r\n userPlacements: PlacementModel[] = [];\r\n userPlacementId : string;\r\n\r\n constructor(logger: NGXLogger,\r\n formService: FormService,\r\n dialog: MatDialog,\r\n public authorizationService: AuthorizationService,\r\n protected storageService: StorageService,\r\n protected toastr: ToastrService,\r\n protected changeDetector: ChangeDetectorRef,\r\n protected authenticationService: AuthenticationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, formService, dialog, 'forms', environment.FORM_GROUP_LABEL, environment.FORM_TITLE_LABEL,\r\n environment.FORM_MODEL_LABEL, storageService, changeDetector, toastr, goldenLayout, container);\r\n logger.debug('FormListComponent.constructor()');\r\n this.filterModel = new FormFilterModel();\r\n this.registrationType = RegistrationType.FORM;\r\n this.sortOptions = SORT_NAME_ASC;\r\n this.userPlacementId = this.authenticationService.getUserPlacementId();\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n super.ngOnInit();\r\n this.logger.debug('PointListComponent.ngOnInit()');\r\n\r\n\r\n this.displayedColumns = ['select',\r\n 'identifier',\r\n 'name',\r\n 'placement.name',\r\n 'inspectionType',\r\n 'published'\r\n ];\r\n\r\n this.loadRecordsFromServer();\r\n }\r\n\r\n ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n this.formUpdateSubscription?.unsubscribe();\r\n }\r\n\r\n protected getDefaultSortColumn(): string {\r\n return \"name\";\r\n }\r\n\r\n openFilterDialog(): void {\r\n const dialogRef = this.dialog.open(FormFilterDialogComponent, {\r\n width: '800px',\r\n data: this.filterModel,\r\n panelClass: 'sipd-modal'\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.model = result;\r\n this.buildDataSource();\r\n }\r\n });\r\n }\r\n\r\n protected getStringEntityForFilter(form: FormModel): string {\r\n const name = super.lowerAndTrimText(form.name);\r\n const placement = super.lowerAndTrimText(form.placement.name);\r\n const inspectionType = super.lowerAndTrimText(form.inspectionType);\r\n const identifier = super.lowerAndTrimText(form.identifier);\r\n const published = form.published? 'Sim': 'Não'\r\n return name + ESP + placement + ESP + inspectionType + ESP + identifier + published;\r\n }\r\n \r\n /**\r\n * Verifica se o formulário ou formulários selecionados pertencem à lotação do usuário logado no sistema\r\n * @param selectedForms \r\n * @returns disabled\r\n */\r\n checkManyUserPlacements(selectedForms){\r\n if(!selectedForms)\r\n return;\r\n\r\n if(this.isUserAdministrator()) // administrador pode deletar formulários de qualquer lotação\r\n return false; \r\n\r\n let disabled = false; \r\n for(var i= 0; i < selectedForms.length ; i++){ \r\n if(selectedForms[i].placement.id != this.userPlacementId ){\r\n disabled = true;\r\n break;\r\n } \r\n } \r\n return disabled; this.loggedUser\r\n }\r\n \r\n checkUserPlacement(selectedForm){\r\n if(!selectedForm)\r\n return;\r\n\r\n const form = [selectedForm]\r\n return this.checkManyUserPlacements(form);\r\n }\r\n\r\n /** Indica se o usuário logado é ou não um administrador. */\r\n isUserAdministrator(): boolean {\r\n return this.loggedUserProfile.userType === UserType.ADMINISTRATOR;\r\n }\r\n\r\n}\r\n","
    \r\n\r\n
    \r\n \r\n {{title}}[ {{getListCount()}} ]\r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n ID {{element?.identifier}} Nome {{element?.name}} Lotação {{element?.placement?.name}}\r\n Tipo de Inspeção {{element?.inspectionType}}\r\n Publicado {{element?.published? 'Sim': 'Não'}}\r\n
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n","import { Component, OnInit, Inject, OnDestroy } from '@angular/core';\r\nimport { EditComponent } from 'src/app/pages/edit-component';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { FormService } from 'src/app/service/model/form.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { environment } from 'src/environments/environment';\r\nimport { FormModel } from 'src/app/model/form.model';\r\nimport { NestedTreeControl } from '@angular/cdk/tree';\r\nimport { CrudType, NodeTypeDescription, Permission, QuestionType, UserType } from 'src/app/model/enums.enum';\r\nimport { MatTreeNestedDataSource } from '@angular/material/tree';\r\nimport { QuestionModel } from 'src/app/model/question.model';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { QuestionCrudData, QuestionFormComponent } from '../question-form/question-form.component';\r\nimport { ConfirmationDialogComponent } from 'src/app/general/confirmation-dialog/confirmation-dialog.component';\r\nimport { first } from 'rxjs/operators';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { PlacementModel } from 'src/app/model/placement.model';\r\nimport { AuthenticationService } from '../../../login/login-services/authentication.service';\r\n\r\n@Component({\r\n selector: 'app-form-edit',\r\n templateUrl: './form-edit.component.html',\r\n styleUrls: ['./form-edit.component.scss']\r\n})\r\nexport class FormEditComponent extends EditComponent implements OnInit, OnDestroy{\r\n\r\n templateIdentifier: string | null;\r\n\r\n // Controle da árvore (Template)\r\n treeControl : NestedTreeControl;\r\n questions : MatTreeNestedDataSource;\r\n\r\n // Subscriptions\r\n quizDataSubscription: Subscription;\r\n\r\n //ENUMS\r\n quizNodeType = QuestionType;\r\n nodeTypeDescription = NodeTypeDescription;\r\n questionCrudType = CrudType;\r\n userPlacementId : string;\r\n\r\n constructor( logger: NGXLogger,\r\n public formService: FormService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n dialog: MatDialog,\r\n protected http: HttpClient,\r\n public entityCacheService: EntityCacheService,\r\n toastr: ToastrService,\r\n protected storageService: StorageService,\r\n authorizationService: AuthorizationService,\r\n protected authenticationService: AuthenticationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super (logger, formService, dialog, environment.FORM_MODEL_LABEL, environment.FORM_TITLE_LABEL,\r\n storageService, 'forms-edit', environment.FORM_GROUP_LABEL,toastr, authorizationService, goldenLayout, container )\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n this.logger.info('**** FormEditComponent - ngOnInit()');\r\n this.treeControl = new NestedTreeControl(this.getChildren);\r\n this.questions = new MatTreeNestedDataSource();\r\n this.subscribeOnQuizDataChanges();\r\n this.userPlacementId = this.authenticationService.getUserPlacementId();\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.logger.debug('**** QuizBuilderComponent - ngOnDestroy()');\r\n\r\n this.quizDataSubscription?.unsubscribe();\r\n super.ngOnDestroy();\r\n }\r\n\r\n private subscribeOnQuizDataChanges(){\r\n this.logger.debug('**** subscribeOnQuizDataChanges(): Inscrição para ouvir as mudanças no template');\r\n\r\n /** Inscrição para ouvir mudanças na árvore */\r\n this.quizDataSubscription = this.formService.onQuizDataChange().subscribe( (quizData: FormModel) => {\r\n this.logger.trace('**** quizDataSubscription - Notificação de mudança no template');\r\n\r\n if(quizData.id == this.model.id){\r\n this.questions.data = quizData?.questions;\r\n this.view['questions'] = quizData?.questions;\r\n this.renderChanges();\r\n }\r\n });\r\n }\r\n\r\n // Métodos de controle da árvore\r\n private getChildren = ( node: QuestionModel ) => node.children;\r\n\r\n hasNestedChild = (_: number, node: QuestionModel) => {\r\n return (node.children && node.children.length > 0);\r\n }\r\n\r\n getQuizIndex(quizNode: QuestionModel) {\r\n return this.questions.data.indexOf(quizNode) + 1;\r\n }\r\n\r\n /** Método de edição de nós na árvore */\r\n onEdit(quizNode: QuestionModel){\r\n this.handleQuestionCrud(CrudType.EDIT, quizNode, this.view as FormModel); // Edição de pergunta\r\n }\r\n\r\n /** Método de remoção de nós na árvore */\r\n onRemove(quizNode: QuestionModel){\r\n this.removeQuestion(quizNode);\r\n }\r\n\r\n loadFormOptionsData(){\r\n this.logger.debug('FormEditComponent.loadFormOptionsData()');\r\n\r\n this.entityCacheService.loadPlacements(this.loadingListService);\r\n\r\n const metadatas: string[] = [\r\n \"InspectionType\"];\r\n\r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n\r\n createData(options?) {\r\n this.logger.debug('FormEditComponent.createData()');\r\n this.model = new FormModel();\r\n this.view = {};\r\n this.questions.data = [];\r\n this.view['questions'] = [];\r\n\r\n this.view['identifier'] = '[NOVO]';\r\n }\r\n\r\n // Necessário para a atualização da árvore\r\n public renderChanges(): void {\r\n const data = this.questions.data;\r\n this.questions.data = [];\r\n this.questions.data = data;\r\n }\r\n\r\n /**\r\n * Método que abre o componente de CRUD das perguntas e exibe um toast em caso positivo\r\n * @param quizNode No pai no caso de inserção ou nó a ser editado\r\n * @param crudType Tipo de CRUD (ADD ou EDIT)\r\n */\r\n handleQuestionCrud(crudType: CrudType, quizNode?: QuestionModel, formModel?: FormModel){\r\n const questionCrudData = new QuestionCrudData(crudType );\r\n questionCrudData.quizNode = quizNode as QuestionModel;\r\n questionCrudData.formModel = formModel as FormModel;\r\n\r\n this.openQuestionDialog(questionCrudData).pipe(first()).subscribe( (successed : boolean) => {\r\n if(successed){\r\n this.logger.debug('**** handleQuestionCrud(quizNode: QuestionModel, crudType: QuestionCrudType): Pergunta salva / editada com sucesso');\r\n }\r\n }, error => {\r\n this.toastr.error('Ocorreu um erro ao tentar salvar/editar a pergunta');\r\n this.logger.error(error);\r\n });\r\n }\r\n\r\n /** Remoção de questões da árvore */\r\n removeQuestion(quizNode: QuestionModel){\r\n\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: \"Tem certeza que deseja remover a pergunta: \" + quizNode.label +\r\n \"? Ao fazer isso, todas as subperguntas em consequência desta pergunta serão perdidas\",\r\n title: 'Atenção',\r\n okLabel: 'Remover Pergunta'\r\n }\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.formService.removeQuestion(quizNode, this.view as FormModel);\r\n this.toastr.info('Pergunta removida');\r\n this.logger.debug('**** removeQuestion(quizNode: QuestionModel): Pergunta removida com sucesso');\r\n\r\n }\r\n }, (error) => {\r\n this.toastr.error('Ocorreu um erro ao tentar remover a pergunta');\r\n this.logger.error(error);\r\n }\r\n );\r\n }\r\n\r\n /** Abre diálog de CRUD das perguntas */\r\n openQuestionDialog(questionCrudData: QuestionCrudData) : Observable{\r\n const dialogRef = this.dialog.open(QuestionFormComponent, {\r\n width: '900px',\r\n panelClass: 'sipd-modal',\r\n data: questionCrudData\r\n });\r\n return dialogRef.afterClosed();\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n this.model['identifier'] = null;\r\n this.model['published'] = false;\r\n this.model['name'] = ' ';\r\n }\r\n\r\n isRequiredFieldFilled(): boolean {\r\n if (!this.view['name'] ||\r\n !this.view['placement'] ||\r\n !this.view['inspectionType']) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['name']) names.push('Nome');\r\n if (!this.view['placement']) names.push('Lotação');\r\n if (!this.view['inspectionType']) names.push('Tipo de Inspeção');\r\n return names;\r\n }\r\n\r\n /** Altera o published para true */\r\n onPublishClick(){\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: \"Tem certeza de que deseja publicar o formulário?\",\r\n title: 'Atenção',\r\n okLabel: 'Publicar'\r\n }\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.isSaving = true;\r\n this.backupModel = this.copyModel(this.model);\r\n this.mapViewToModel();\r\n \r\n this.model['published'] = true;\r\n this.saveEditedModel();\r\n }});\r\n }\r\n\r\n clearPreviousData(){\r\n this.questions.data = [];\r\n }\r\n\r\n mapModelToView() {\r\n super.mapModelToView();\r\n this.logger.debug('FormEditComponent.mapModelToView()');\r\n\r\n if (this.model['questions']) {\r\n this.questions.data = this.model['questions'];\r\n this.view['questions'] = this.model['questions'];\r\n }\r\n\r\n if (this.view['name']) {\r\n this.glUpdateTabTitle(this.modelName + ': \"' + this.view['name'] + '\"');\r\n }\r\n }\r\n\r\n canEdit(): boolean {\r\n if (!this.model) return false;\r\n\r\n if(this.isUserAdministrator())\r\n return true;\r\n\r\n if(!this.copy && this.model['placement']?.id != this.userPlacementId){\r\n return false;\r\n }\r\n\r\n if (!this.authorizationService.userHasPermission(Permission.CREATE_EDIT_FORM)){\r\n return false\r\n }\r\n\r\n return true;\r\n }\r\n\r\n canPublish() : boolean {\r\n return !!this.view && !!this.view['id'] && // Só pode publicar se estiver criada\r\n !this.isPublished() && // Só pode publicar uma vez\r\n (this.isUserAdministrator() || this.model['placement']?.id == this.userPlacementId) // se administrador ou a lotação de origem do usuário é igual à lotação do formulário\r\n }\r\n\r\n isPublished(): boolean {\r\n return this.view['published'];\r\n }\r\n\r\n /** Indica se o usuário logado é ou não um administrador. */\r\n isUserAdministrator(): boolean {\r\n return this.loggedUserProfile.userType === UserType.ADMINISTRATOR;\r\n }\r\n}\r\n","
    \r\n
    \r\n {{modelName + (isCreating()? ': [NOVO]':'')}}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    \r\n \r\n Nome\r\n \r\n Campo Obrigatório\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n
  • \r\n \r\n
    \r\n P\r\n R\r\n
    \r\n
    \r\n \r\n {{quizNode.type === quizNodeType.ANSWER? \"Resposta:\" : \"Pergunta tipo:\"}}\r\n \r\n {{ nodeTypeDescription[quizNode.type] }}\r\n \r\n \r\n {{ getQuizIndex(quizNode) }}) {{ quizNode.label }}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
  • \r\n
    \r\n \r\n \r\n
  • \r\n \r\n
    \r\n P\r\n R\r\n
    \r\n
    \r\n \r\n {{ quizNode.type === quizNodeType.ANSWER? \"Resposta:\" : \"Pergunta tipo:\"}}\r\n \r\n {{ nodeTypeDescription[quizNode.type] }}\r\n \r\n \r\n {{ getQuizIndex(quizNode) }}) {{ quizNode.label }}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
  • \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n Formulário vazio.\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n\r\n
    \r\n","\r\nimport { EntityModel } from './entity.model';\r\nimport { QuestionModel } from './question.model';\r\nimport { PlacementModel } from './placement.model';\r\nimport LanguageUtils from '../service/util/language-utils';\r\n\r\nexport class FormModel extends EntityModel {\r\n \r\n identifier : string;\r\n name : string;\r\n placement : PlacementModel;\r\n inspectionType : string;\r\n published : boolean; // Se foi publicado na Web, para ser usado na edição de operações\r\n questions : QuestionModel[]; \r\n\r\n constructor (){\r\n super();\r\n this.published = false;\r\n this.questions = [];\r\n }\r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['inspectionType'] = 'Tipo de Inspeção';\r\n LanguageUtils.languageMap['published'] = 'Publicado';\r\n LanguageUtils.languageMap['questions'] = 'Perguntas';\r\n }\r\n}\r\n","/* Padronização de Enums:\r\n\r\nenum XxxxYyyy => valor do enumerador usado no modelo, e salvo no banco de dados\r\nenum XxxxYyyyDescription => Nomes dos enums para Labels, Combos, etc...\r\n\r\nXxxx é o nome do objeto: Alert, Patrol, User, etc\r\nYyyy é o atributo do objeto no singular: Type, Priority, etc\r\n\r\nEm casos aonde o atributo é usado em vários objets diferentes Xxxx não é utilizado\r\n\r\n*/\r\n\r\nexport enum AlertType {\r\n ROUTE_DEVIATION = 'ROUTE_DEVIATION',\r\n INCONSISTENT_DATA = 'INCONSISTENT_DATA',\r\n ATTENTION_PATROL_CHECK = 'ATTENTION_PATROL_CHECK',\r\n PANIC = 'PANIC',\r\n SIMF = 'SIMF',\r\n ELETRONIC_FENCE = 'ELETRONIC_FENCE',\r\n STATIONARY = 'STATIONARY'\r\n}\r\n\r\nexport enum AlertTypeDescription {\r\n ELETRONIC_FENCE = 'Cerca Eletrônica',\r\n ATTENTION_PATROL_CHECK = 'Comunicação',\r\n INCONSISTENT_DATA = 'Dados não conferem',\r\n ROUTE_DEVIATION = 'Desvio de Rota',\r\n PANIC = 'Pânico',\r\n STATIONARY = 'Profissional Parado'\r\n //SIMF = 'SIMF' // Não mostrar nas opções de filtro\r\n}\r\n\r\nexport enum SimfAlertTypeDescription {\r\n 'Threat.Type.Digging' = 'Escavação Manual',\r\n 'Threat.Type.Mechanical_Digging' = 'Escavação Mecânica',\r\n 'Threat.Type.Pig' = 'PIG',\r\n 'Threat.Type.FibreBreak' = 'Fibra Quebrada',\r\n 'Threat.Type.Vehicle' = 'Veículo',\r\n 'Threat.Type.LeakNPP' = 'NPP',\r\n}\r\n\r\nexport enum AlertPriorityDescription {\r\n HIGH = \"Alto\",\r\n MEDIUM = \"Médio\",\r\n LOW = \"Baixo\"\r\n}\r\n\r\nexport enum AlertPriority {\r\n HIGH = \"HIGH\",\r\n MEDIUM = \"MEDIUM\",\r\n LOW = \"LOW\"\r\n}\r\n\r\nexport enum AlertPriorityValue {\r\n HIGH = 2,\r\n MEDIUM = 1,\r\n LOW = 0\r\n}\r\n\r\nexport enum EventSituationDescription {\r\n STARTED = 'Operando',\r\n STOPPED = 'Interrompido'\r\n}\r\n\r\n/* Ocorrências da aba de resultados de eventos e rondas */\r\nexport enum ResultOccurrenceDescription {\r\n DUCT = 'Duto',\r\n VALVE = 'Válvula',\r\n DUCT_ATTEMPT = 'Tentativa no Duto',\r\n VALVE_ATTEMPT = 'Tentativa na Válvula',\r\n}\r\n\r\nexport enum SourceTypeDescription {\r\n MOBILE_APP = 'App Móvel',\r\n WEB_APP = 'App Web',\r\n SIMF = 'SIMF',\r\n VEHICLE = 'Veículo'\r\n}\r\n\r\n// Usado no SignalModel, MarkerModel e AlertModel\r\nexport enum SourceType {\r\n MOBILE_APP = 'MOBILE_APP',\r\n WEB_APP = 'WEB_APP', // Não faz sentido para Alert e Signal\r\n SIMF = 'SIMF', // Não faz sentido para Signal e Marker\r\n VEHICLE = 'VEHICLE' // Não faz sentido para Marker e Alert\r\n}\r\n\r\nexport enum EventValidation {\r\n COMPLETE = 'COMPLETE',\r\n INCOMPLETE = 'INCOMPLETE'\r\n}\r\n\r\nexport enum EventValidationDescription {\r\n COMPLETE = 'Completo',\r\n INCOMPLETE = 'Incompleto'\r\n}\r\n\r\nexport enum ShiftDescription {\r\n MORNING = 'Manhã',\r\n NIGHT = 'Noite'\r\n}\r\n\r\nexport enum ServiceTypeDescription {\r\n PD_MOBILE = 'PD-Móvel',\r\n PD_TECHNICAL = 'PD-Técnica'\r\n}\r\n\r\nexport enum UserType {\r\n ADMINISTRATOR = 'ADMINISTRATOR', // Só pode haver um único perfil administrador\r\n ANALYSIS_CAD = 'ANALYSIS_CAD',\r\n ANALYSIS_CCPD = 'ANALYSIS_CCPD',\r\n CNCL = 'CNCL',\r\n COORDINATOR_CCPD = 'COORDINATOR_CCPD',\r\n COORDINATOR_OPPD = 'COORDINATOR_OPPD',\r\n MANAGER = 'MANAGER',\r\n CENTRAL_OPERATOR = 'CENTRAL_OPERATOR',\r\n PLANNER = 'PLANNER',\r\n PROFESSIONAL = 'PROFESSIONAL',\r\n COORDINATOR_CNCL = 'COORDINATOR_CNCL'\r\n}\r\n\r\nexport enum UserTypeDescription {\r\n ADMINISTRATOR = 'Administrador',\r\n ANALYSIS_CAD = 'Analista CAD',\r\n ANALYSIS_CCPD = 'Analista CCPD',\r\n CNCL = 'Analista CNCL',\r\n COORDINATOR_CCPD = 'Coordenador CCPD',\r\n COORDINATOR_OPPD = 'Coordenador OPPD',\r\n MANAGER = 'Gestor',\r\n CENTRAL_OPERATOR = 'Operador Central',\r\n PLANNER = 'Planejador OPPD',\r\n PROFESSIONAL = 'Profissional',\r\n COORDINATOR_CNCL = 'Coordenador CNCL'\r\n}\r\n\r\nexport enum OperationStatus {\r\n PLANNED = 'PLANNED',\r\n SENT = 'SENT',\r\n STARTED = 'STARTED',\r\n PAUSED = 'PAUSED',\r\n FINISHED = 'FINISHED'\r\n}\r\n\r\nexport enum OperationStatusDescription {\r\n PLANNED = 'Planejada',\r\n SENT = 'Solicitada',\r\n STARTED = 'Iniciada',\r\n PAUSED = 'Pausada',\r\n FINISHED = 'Concluída'\r\n}\r\n\r\nexport enum PointStatus {\r\n APPROVED = 'APPROVED',\r\n IN_ANALYSIS = 'IN_ANALYSIS'\r\n}\r\n\r\nexport enum PointStatusDescription {\r\n APPROVED = 'Aprovado',\r\n IN_ANALYSIS = 'Em Análise'\r\n}\r\n\r\n/* Liberação de faixa da aba de resultados de verificaçãoes */\r\nexport enum VerificationBandReleaseDescription {\r\n CLEAR = 'Liberado',\r\n WAITING = 'Aguardando'\r\n}\r\n\r\nexport enum EventStatus {\r\n IN_TREATMENT = 'IN_TREATMENT',\r\n PENDING = 'PENDING',\r\n FINALIZED = 'FINALIZED'\r\n}\r\n\r\nexport enum EventStatusDescription {\r\n IN_TREATMENT = 'Andamento',\r\n PENDING = 'Pendente',\r\n FINALIZED = 'Concluído'\r\n}\r\n\r\nexport enum OperationType {\r\n PATROL = 'PATROL',\r\n EVENT_VERIFICATION = 'EVENT_VERIFICATION'\r\n}\r\n\r\nexport enum OperationTypeDescription {\r\n PATROL = 'Ronda',\r\n EVENT_VERIFICATION = 'Verificação',\r\n}\r\n\r\nexport enum MarkerType {\r\n TEXT_MESSAGE = 'TEXT_MESSAGE',\r\n IMAGE_MESSAGE = 'IMAGE_MESSAGE',\r\n AUDIO_MESSAGE = 'AUDIO_MESSAGE',\r\n VIDEO_MESSAGE = 'VIDEO_MESSAGE',\r\n PANIC_MESSAGE = 'PANIC',\r\n INCONSISTENT_DATA = 'INCONSISTENT_DATA',\r\n // Marcadores de Status da Operação\r\n START_SHIFT = 'START_SHIFT',\r\n PAUSE_SHIFT = 'PAUSE_SHIFT',\r\n RESUME_SHIFT = 'RESUME_SHIFT',\r\n STOP_SHIFT = 'STOP_SHIFT',\r\n // Marcadores de Status de Ponto\r\n START_INSPECTION = 'START_INSPECTION',\r\n MOVING_TOWARDS_INSPECTION = 'MOVING_TOWARDS_INSPECTION',\r\n FINISH_INSPECTION = 'FINISH_INSPECTION',\r\n POINT_ACCESS = 'POINT_ACCESS',\r\n // Marcadores Administrativos\r\n OPERATION_RECEIVED = 'OPERATION_RECEIVED',\r\n SITUATION_FOUND = 'SITUATION_FOUND',\r\n MANAGERIAL_MESSAGE = 'MANAGERIAL_MESSAGE',\r\n VERIFICATION_SENT_MESSAGE = 'VERIFICATION_SENT_MESSAGE',\r\n INFO_MESSAGE = 'INFO_MESSAGE'\r\n}\r\n\r\nexport enum MarkerTypeDescription {\r\n TEXT_MESSAGE = 'Mensagem de Texto',\r\n IMAGE_MESSAGE = 'Imagem',\r\n AUDIO_MESSAGE = 'Áudio',\r\n VIDEO_MESSAGE = 'Vídeo',\r\n PANIC_MESSAGE = 'Pânico',\r\n INCONSISTENT_DATA = 'Dados Inconsistentes',\r\n // Marcadores de Status da Operação\r\n START_SHIFT = 'Operação Iniciada',\r\n PAUSE_SHIFT = 'Operação Pausada',\r\n RESUME_SHIFT = 'Operação Retomada',\r\n STOP_SHIFT = 'Operação Concluída',\r\n // Marcadores de Status de Ponto\r\n START_INSPECTION = 'Ponto Iniciado',\r\n MOVING_TOWARDS_INSPECTION = 'Percurso Iniciado',\r\n FINISH_INSPECTION = 'Ponto Concluído',\r\n POINT_ACCESS = 'Ponto Sem Acesso',\r\n // Marcadores Administrativos\r\n OPERATION_RECEIVED = 'Operação Recebida',\r\n SITUATION_FOUND = 'Quadro Encontrado',\r\n MANAGERIAL_MESSAGE = 'Mensagem Gerencial',\r\n VERIFICATION_SENT_MESSAGE = 'Verificação Enviada',\r\n INFO_MESSAGE = 'Informação Operacional'\r\n}\r\n\r\nexport enum PointType {\r\n BASE = 'BASE',\r\n CRITICAL_POINT = 'CRITICAL_POINT'\r\n}\r\n\r\nexport enum InspectionBooleanDescription {\r\n YES = 'Sim',\r\n NOT = 'Não'\r\n}\r\n\r\nexport enum InspectionStatusType {\r\n NOT_STARTED = \"NOT_STARTED\",\r\n ON_THE_WAY = \"ON_THE_WAY\",\r\n PENDING = \"PENDING\",\r\n STARTED = \"STARTED\",\r\n FINISHED = \"FINISHED\",\r\n SUSPENDED = \"SUSPENDED\"\r\n}\r\n\r\nexport enum InspectionStatusTypeDescription {\r\n NOT_STARTED = \"Não Iniciado\",\r\n ON_THE_WAY = \"Em Percurso\",\r\n PENDING = \"Pendente\",\r\n STARTED = \"Iniciado\",\r\n FINISHED = \"Concluído\",\r\n SUSPENDED = \"Suspenso\"\r\n}\r\n\r\nexport enum QuestionType {\r\n ANSWER = 'ANSWER',\r\n YESNO = 'YESNO',\r\n TEXT = 'TEXT',\r\n NUMBER = 'NUMBER',\r\n ACTIVEINACTIVE = 'ACTIVEINACTIVE',\r\n VIOLATEDCOMPLETE = 'VIOLATEDCOMPLETE'\r\n}\r\n\r\nexport enum EvidenceRequirement {\r\n OPTIONAL = \"OPTIONAL\",\r\n REQUIRED = \"REQUIRED\"\r\n}\r\n\r\nexport enum EvidenceRequirementDescription {\r\n OPTIONAL = \"Opcional\",\r\n REQUIRED = \"Obrigatório\"\r\n}\r\n\r\nexport enum NodeType {\r\n YESNO = 'YESNO',\r\n TEXT = 'TEXT',\r\n NUMBER = 'NUMBER',\r\n ACTIVEINACTIVE = 'ACTIVEINACTIVE',\r\n VIOLATEDCOMPLETE = 'VIOLATEDCOMPLETE'\r\n}\r\n\r\nexport enum NodeTypeDescription {\r\n YESNO = 'Sim/Não',\r\n TEXT = 'Texto',\r\n NUMBER = 'Valor numérico',\r\n ACTIVEINACTIVE = 'Ativo/Inativo',\r\n VIOLATEDCOMPLETE = 'Violada/Íntegra'\r\n}\r\n\r\nexport enum CrudType{\r\n ADD,\r\n EDIT\r\n}\r\n\r\nexport enum ObservedAreaType {\r\n SUSPECT = 'SUSPECT',\r\n SERVICES = 'SERVICES',\r\n MAINTENANCE = 'MAINTENANCE',\r\n CONSTRUCTION = 'CONSTRUCTION',\r\n OTHER = 'OTHER'\r\n}\r\n\r\nexport enum ObservedAreaTypeDescription {\r\n SUSPECT = 'Suspeita',\r\n SERVICES = 'Serviços',\r\n MAINTENANCE = 'Manutenção',\r\n CONSTRUCTION = 'Obras',\r\n OTHER = 'Outros'\r\n}\r\n\r\nexport enum ObservedAreaStatus {\r\n ACTIVE = 'ACTIVE',\r\n INACTIVE = 'INACTIVE',\r\n ALL = 'ALL'\r\n\r\n}\r\n\r\nexport enum ObservedAreaStatusDescription {\r\n ACTIVE = 'Ativa',\r\n INACTIVE = 'Inativa'\r\n}\r\n\r\nexport enum MapEvents {\r\n OPERATION_LOCATION = 'OPERATION_LOCATION',\r\n MANY_OPERATION_LOCATION = 'MANY_OPERATION_LOCATION',\r\n EVENT_LOCATION = 'EVENT_LOCATION',\r\n MANY_EVENT_LOCATION = 'MANY_EVENT_LOCATION',\r\n OBSERVED_AREA_LOCATION = 'OBSERVED_AREA_LOCATION',\r\n MANY_OBSERVED_AREA_LOCATION = 'MANY_OBSERVED_AREA_LOCATION'\r\n}\r\n\r\nexport enum PredictedDialogRuleOption {\r\n CUSTOM = 'CUSTOM',\r\n DISABLE = 'DISABLE',\r\n EVERY_PERIOD = 'EVERY_PERIOD',\r\n IN_THE_DAYS = 'IN_THE_DAYS',\r\n NEVER_FINISH = 'NEVER_FINISH',\r\n FINISH_DATE = 'FINISH_DATE',\r\n FINISH_AFTER_QUANTITY = 'FINISH_AFTER_QUANTITY'\r\n}\r\n\r\nexport enum ChannelType {\r\n CCPD = 'CCPD',\r\n CNCL = 'CNCL',\r\n MANAGERIAL = 'MANAGERIAL',\r\n CORE = 'CORE',\r\n PD_MOBILE = 'PD_MOBILE',\r\n PD_TECHNICAL = 'PD_TECHNICAL',\r\n SYNERGY = 'SYNERGY'\r\n}\r\n\r\nexport enum ChannelTypeDescription {\r\n CCPD = 'CCPD',\r\n CNCL = 'CNCL',\r\n MANAGERIAL = 'Gerencial',\r\n CORE = 'Núcleo',\r\n PD_MOBILE = 'PD-Móvel',\r\n PD_TECHNICAL = 'PD-Técnica',\r\n SYNERGY = 'Sinergia'\r\n}\r\n\r\nexport enum Permission {\r\n ACCES_APP = 'ACCES_APP',\r\n ACCES_WEB = 'ACCES_WEB',\r\n ACCESS_TO_ALL_PLACEMENT = 'ACCESS_TO_ALL_PLACEMENT',\r\n VIEW_MAP_DC_HISTORY_ID = 'VIEW_MAP_DC_HISTORY_ID',\r\n VIEW_MAP_OBSERVED_AREA_ID = 'VIEW_MAP_OBSERVED_AREA_ID',\r\n VIEW_MAP_SIMF = 'VIEW_MAP_SIMF',\r\n VIEW_MAP_BAND = 'VIEW_MAP_BAND',\r\n VIEW_MAP_OILDUCT = 'VIEW_MAP_OILDUCT',\r\n VIEW_MAP_GASDUCT = 'VIEW_MAP_GASDUCT',\r\n VIEW_MAP_KILOMETER_MARK = 'VIEW_MAP_KILOMETER_MARK',\r\n VIEW_MAP_VALVE = 'VIEW_MAP_VALVE',\r\n VIEW_MAP_TERMINAL = 'VIEW_MAP_TERMINAL',\r\n VIEW_MAP_REFINARY = 'VIEW_MAP_REFINARY',\r\n VIEW_MAP_DELIVERY_POINT = 'VIEW_MAP_DELIVERY_POINT',\r\n VIEW_MAP_TEAM = 'VIEW_MAP_TEAM',\r\n MENU_TRACKING = 'MENU_TRACKING',\r\n VIEW_TRACKING_TEAM = 'VIEW_TRACKING_TEAM',\r\n MENU_ALERT = 'MENU_ALERT',\r\n LIST_ALERTS = 'LIST_ALERTS',\r\n EDIT_ALERT = 'EDIT_ALERT',\r\n LIST_EVENTS = 'LIST_EVENTS',\r\n CREATE_EDIT_EVENT = 'CREATE_EDIT_EVENT',\r\n DELETE_EVENT = 'DELETE_EVENT',\r\n CREATE_EDIT_EVENT_NOTES = 'CREATE_EDIT_EVENT_NOTES',\r\n DELETE_EVENT_NOTES = 'DELETE_EVENT_NOTES',\r\n EDIT_END_EVENT = 'EDIT_END_EVENT',\r\n CHANGE_EVENTS_FROM_ANY_SOURCE = 'CHANGE_EVENTS_FROM_ANY_SOURCE',\r\n CHANGE_ANY_EVENT_FIELD = 'CHANGE_ANY_EVENT_FIELD',\r\n LIST_VERIFICATIONS = 'LIST_VERIFICATIONS',\r\n VIEW_INFORME_GERENCIAL_VERIFICATIONS = 'VIEW_INFORME_GERENCIAL_VERIFICATIONS',\r\n CREATE_EDIT_VERIFICATIONS = 'CREATE_EDIT_VERIFICATIONS',\r\n DELETE_VERIFICATIONS = 'DELETE_VERIFICATIONS',\r\n LIST_PATROLS = 'LIST_PATROLS',\r\n CREATE_EDIT_PATROL = 'CREATE_EDIT_PATROL',\r\n DELETE_PATROL = 'DELETE_PATROL',\r\n LIST_USERS_ADMINISTRATION = 'LIST_USERS_ADMINISTRATION',\r\n CREATE_EDIT_USER = 'CREATE_EDIT_USER',\r\n DELETE_USER = 'DELETE_USER',\r\n LIST_PATROL_TEAM_ADMINISTRATION = 'LIST_PATROL_TEAM_ADMINISTRATION',\r\n CREATE_EDIT_PATROL_TEAM = 'CREATE_EDIT_PATROL_TEAM',\r\n DELETE_PATROL_TEAM = 'DELETE_PATROL_TEAM',\r\n LIST_PLACEMENT_ADMINISTRATION = 'LIST_PLACEMENT_ADMINISTRATION',\r\n CREATE_EDIT_PLACEMENT = 'CREATE_EDIT_PLACEMENT',\r\n DELETE_PLACEMENT = 'DELETE_PLACEMENT',\r\n LIST_COMPANY_ADMINISTRATION = 'LIST_COMPANY_ADMINISTRATION',\r\n CREATE_EDIT_COMPANY = 'CREATE_EDIT_COMPANY',\r\n DELETE_COMPANY = 'DELETE_COMPANY',\r\n LIST_VEHICLE_ADMINISTRATION = 'LIST_VEHICLE_ADMINISTRATION',\r\n CREATE_EDIT_VEHICLE = 'CREATE_EDIT_VEHICLE',\r\n DELETE_VEHICLE = 'DELETE_VEHICLE',\r\n LIST_MAIN_EVENT_ADMINISTRATION = 'LIST_MAIN_EVENT_ADMINISTRATION',\r\n CREATE_EDIT_MAIN_EVENT = 'CREATE_EDIT_MAIN_EVENT',\r\n DELETE_MAIN_EVENT = 'DELETE_MAIN_EVENT',\r\n LIST_OBSERVED_AREA_ADMINISTRATION = 'LIST_OBSERVED_AREA_ADMINISTRATION',\r\n CREATE_EDIT_OBSERVED_AREA = 'CREATE_EDIT_OBSERVED_AREA',\r\n DELETE_OBSERVED_AREA = 'DELETE_OBSERVED_AREA',\r\n LIST_FORMS_ADMINISTRATION = 'LIST_FORMS_ADMINISTRATION',\r\n CREATE_EDIT_FORM = 'CREATE_EDIT_FORM',\r\n DELETE_FORM = 'DELETE_FORM',\r\n LIST_POINTS_ADMINISTRATION = 'LIST_POINTS_ADMINISTRATION',\r\n CREATE_EDIT_POINT = 'CREATE_EDIT_POINT',\r\n DELETE_POINT = 'DELETE_POINT',\r\n LIST_CHANELS = 'LIST_CHANELS', // typing error (mantido para evitar mudança no banco de dados)\r\n LIST_REGISTRATION_GROUP = 'LIST_REGISTRATION_GROUP',\r\n EDIT_REGISTRATION_GROUP = 'EDIT_REGISTRATION_GROUP',\r\n DELETE_REGISTRATION_GROUP = 'DELETE_REGISTRATION_GROUP',\r\n LIST_PROFILE_ADMINISTRATION = 'LIST_PROFILE_ADMINISTRATION' // usado somente para Admin\r\n}\r\n\r\nexport enum PermisionRuleOption {\r\n ALL_FIELD = 'ALL_FIELD',\r\n SOME_FIELDS = 'SOME_FIELDS',\r\n ALL_PROFILE = 'ALL_PROFILE',\r\n SOME_PROFILE = 'SOME_PROFILE',\r\n ALL_VERIFICATIONS = 'ALL_VERIFICATIONS',\r\n ONLY_NOT_STARTED = 'ONLY_NOT_STARTED',\r\n ALL_PATROLS = 'ALL_PATROLS',\r\n SOME_SOURCE = 'SOME_SOURCE', \r\n ALL_SOURCE = 'ALL_SOURCE'\r\n}\r\n\r\nexport enum EventFields {\r\n \"CCPD_ANALYST\" = 'CCPD_ANALYST',\r\n \"VALIDATION_ANALYST\" = 'VALIDATION_ANALYST'\r\n}\r\n\r\nexport enum EventFieldsDescription {\r\n \"CCPD_ANALYST\" = 'Analista CCPD',\r\n \"VALIDATION_ANALYST\" = 'Analista Validação'\r\n}\r\n\r\nexport enum UserFields {\r\n \"LOGIN_APP\" = 'LOGIN_APP',\r\n \"COMPANY\" = 'COMPANY'\r\n}\r\n\r\nexport enum UserFieldsDescription {\r\n \"LOGIN_APP\" = 'Login App',\r\n \"COMPANY\" = 'Empresa'\r\n}\r\n\r\nexport enum FilterByAssociatedEvent {\r\n ASSOCIATED = 'ASSOCIATED',\r\n NOT_ASSOCIATED = 'NOT_ASSOCIATED' \r\n}\r\n\r\nexport enum RegistrationType {\r\n CHANNEL = 'CHANNEL',\r\n CHANNEL_RESET = 'CHANNEL_RESET',\r\n COMPANY = 'COMPANY',\r\n EVENT_MAIN_ACTION = 'EVENT_MAIN_ACTION',\r\n FORM = 'FORM',\r\n INSPECTION_POINT = 'INSPECTION_POINT',\r\n OBSERVED_AREA = 'OBSERVED_AREA',\r\n PATROL_TEAM = 'PATROL_TEAM',\r\n PLACEMENT = 'PLACEMENT',\r\n PROFILE = 'PROFILE',\r\n USER = 'USER',\r\n VEHICLE = 'VEHICLE'\r\n}\r\n\r\nexport enum AttachmentNumber {\r\n ONE = 'ONE',\r\n TWO = 'TWO',\r\n THREE = 'THREE',\r\n FOUR = 'FOUR',\r\n FIVE = 'FIVE'\r\n}\r\n\r\nexport enum EvidenceNumber {\r\n ONE = 'ONE',\r\n TWO = 'TWO',\r\n THREE = 'THREE',\r\n FOUR = 'FOUR',\r\n FIVE = 'FIVE'\r\n}","import { SimpleModel } from \"src/app/model/simple.model\";\r\n\r\n/**\r\n * Classe utilitária para manipulação de listas\r\n */\r\nexport default class ListUtils{\r\n\r\n /**\r\n * Método estático que ordena listas pelo atributo name (SimpleModel)\r\n */\r\n static orderSimpleModelList(list: SimpleModel[]){\r\n if(!list) return;\r\n\r\n list.sort( (a, b) => {\r\n if ( a.name && b.name ) {\r\n return a.name.localeCompare(b.name);\r\n }\r\n else {\r\n if (a.name) {\r\n return -1;\r\n }\r\n if (b.name) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n });\r\n }\r\n\r\n\r\n static removeDuplicatesFromArray(array, key) {\r\n return array.filter((obj, index, self) =>\r\n index === self.findIndex((el) => (\r\n el[key] === obj[key]\r\n ))\r\n )\r\n }\r\n\r\n}\r\n","import {Injectable} from '@angular/core';\r\nimport {NGXLogger} from 'ngx-logger';\r\nimport { HttpClient, HttpParams, HttpErrorResponse } from '@angular/common/http';\r\nimport {EntityService} from './entity.service';\r\nimport {UserModel} from '../../model/user.model';\r\nimport {environment} from '../../../environments/environment';\r\n\r\nimport {EntityModel} from '../../model/entity.model';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { FilterModel } from 'src/app/general/filter-component/filter.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserService extends EntityService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.registrations_address}/users`);\r\n }\r\n\r\n public loadUsersByIds(ids: string[] ): Observable {\r\n let params: HttpParams = new HttpParams();\r\n\r\n ids.forEach( id => {\r\n params = params.append('id', id);\r\n });\r\n\r\n return super.loadListFromRestApi(null, null, null, params);\r\n }\r\n\r\n protected filteredLoadFromRestApi(pageIndex?: number, pageSize?: number, sort?: string, filter?: FilterModel): Observable {\r\n\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (filter){\r\n\r\n if (filter.placements){\r\n filter.placements.forEach( placement => {\r\n params = params.append('placements', placement);\r\n });\r\n }\r\n }\r\n\r\n return super.loadFromRestApi(pageIndex, pageSize, sort, params);\r\n }\r\n\r\n public sendEmailWithPassword(record: EntityModel) {\r\n this.logger.debug('EntityService.sendEmailWithPassword()');\r\n return this.http.post(this.apiUrl + '/email/', record);\r\n }\r\n\r\n public getUserFromEmail(email: string): Observable {\r\n return this.http.get(this.apiUrl + '/email?email=' + email);\r\n }\r\n \r\n protected handleError(error: HttpErrorResponse | any) { \r\n return throwError(error);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({name: 'booleanbr'})\r\nexport class BooleanBRPipe implements PipeTransform {\r\n transform(value: any, args?: any): any {\r\n if (value === true) return 'Sim';\r\n return 'Não';\r\n }\r\n}\r\n","import { Component, Inject, OnInit, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { PlacementService } from 'src/app/service/model/placement.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthorizationService } from '../../../../service/authorization/authorization.service';\r\nimport { StorageService } from '../../../../service/storage-service';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { ESP, SORT_NAME_ASC } from 'src/app/common/constants';\r\nimport { RegistrationListComponent } from '../../registration-list-component';\r\nimport { RegistrationType } from 'src/app/model/enums.enum';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { PlacementModel } from 'src/app/model/placement.model';\r\n\r\n@Component({\r\n selector: 'app-placement-list',\r\n templateUrl: './placement-list.component.html',\r\n styleUrls: ['../../../../app.component.scss', '../../../list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class PlacementListComponent extends RegistrationListComponent implements OnInit {\r\n\r\n constructor(logger: NGXLogger,\r\n dialog: MatDialog,\r\n public authorizationService: AuthorizationService,\r\n protected storageService: StorageService,\r\n placementService: PlacementService,\r\n protected toastr: ToastrService,\r\n protected changeDetector: ChangeDetectorRef,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, placementService, dialog, 'placements', environment.PLACEMENT_GROUP_LABEL, environment.PLACEMENT_TITLE_LABEL,\r\n environment.PLACEMENT_MODEL_LABEL, storageService, changeDetector, toastr, goldenLayout, container);\r\n logger.debug('PlacementListComponent.constructor()');\r\n this.registrationType = RegistrationType.PLACEMENT;\r\n this.sortOptions = SORT_NAME_ASC;\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.logger.debug('PlacementListComponent.ngOnInit()');\r\n this.loadRecordsFromServer();\r\n this.displayedColumns = ['select','gs','regional'];\r\n }\r\n\r\n protected getDefaultSortColumn(): string {\r\n return \"gs\";\r\n }\r\n\r\n protected getStringEntityForFilter(placement: PlacementModel): string {\r\n const gs = this.lowerAndTrimText(placement.gs);\r\n const regional = (placement.regional) ? this.lowerAndTrimText(placement.regional) : '';\r\n return gs + ESP + regional;\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n {{title}}[ {{getListCount()}} ]\r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Gerência {{element?.gs}} Regional {{element?.regional}}
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n","import { FileKmlModel } from './filekml.model';\r\nimport { EntityModel } from './entity.model';\r\nexport class RouteModel extends EntityModel {\r\n fileRouteKml: FileKmlModel;\r\n}\r\n","import { EntityModel } from \"./entity.model\";\r\n\r\nexport abstract class CommonModel extends EntityModel {\r\n identifier: string;\r\n status: string;\r\n archived: boolean;\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\n\r\nimport { environment } from '../../../environments/environment';\r\nimport { ServiceResponse } from './service-response';\r\nimport { PatrolService } from 'src/app/service/model/patrol.service';\r\nimport { AuthenticationService } from '../../pages/login/login-services/authentication.service';\r\nimport { RegistrationService } from 'src/app/service/model/registration.service';\r\nimport { AlertsService } from '../../service/model/alerts.service';\r\nimport { EventService } from '../../service/model/event.service';\r\nimport { MarkersService } from '../../service/model/markers.service';\r\nimport { SignalsService } from '../../service/model/signals.service';\r\nimport { WebSocketSignalsService } from '../../service/model/websocket.signals.service';\r\nimport { ReactiveService } from '../../service/model/reactive.service';\r\nimport { TrackingService } from 'src/app/service/model/tracking.service';\r\nimport { first } from 'rxjs/operators';\r\n\r\ndeclare var require: any;\r\nconst appVersion = require('../../../../package.json').version;\r\n\r\n@Component({\r\n selector: 'app-system-check',\r\n templateUrl: './system-check-dialog.component.html',\r\n styleUrls: ['../../app.component.scss', './system-check-dialog.component.scss']\r\n})\r\nexport class SystemCheckDialogComponent implements OnInit {\r\n\r\n displayedColumns: string[] = ['name', 'url', 'version'];\r\n dataSource: ServiceResponse[] = [];\r\n\r\n constructor(private logger: NGXLogger,\r\n private patrolService: PatrolService,\r\n private authenticationService: AuthenticationService,\r\n private registrationService: RegistrationService,\r\n private trackingService: TrackingService,\r\n private alertsService: AlertsService,\r\n private eventService: EventService,\r\n private markersService: MarkersService,\r\n private signalsService: SignalsService,\r\n private webSocketSignalsService: WebSocketSignalsService,\r\n private reactiveService: ReactiveService) { }\r\n\r\n ngOnInit() {\r\n this.logger.debug('Iniciando dialogo para microserviços');\r\n\r\n // Obtendo informações dos microserviços: Auth, Patrol, Registrations, Tracking, Alert, Event, Marker, Signals, Websocket\r\n\r\n // Passo 1: Iniciando os objetos do datasource\r\n const alertResponse = new ServiceResponse('Alerts', environment.settings.alerts_address);\r\n const authResponse = new ServiceResponse('Auth', environment.settings.auth_address);\r\n const eventResponse = new ServiceResponse('Event Verifications', environment.settings.event_verifications_address);\r\n const markerResponse = new ServiceResponse('Markers', environment.settings.markers_address);\r\n const patrolResponse = new ServiceResponse('Patrols', environment.settings.patrols_address);\r\n const reactiveRouteDeviationResponse = new ServiceResponse('Reactive - RouteDeviation', environment.settings.route_deviation_address);\r\n const reactiveSIMFResponse = new ServiceResponse('Reactive - SIMF', environment.settings.simf_address);\r\n const registrationResponse = new ServiceResponse('Registrations', environment.settings.registrations_address);\r\n const signalResponse = new ServiceResponse('Signals', environment.settings.signals_address);\r\n const trackingResponse = new ServiceResponse('Tracking', environment.settings.tracking_address);\r\n const webResponse = new ServiceResponse('Web', environment.settings.web_address);\r\n const websocketResponse = new ServiceResponse('Websocket', environment.settings.websocket_http_address);\r\n\r\n // Passo 2: Adicionando os objetos à tabela de serviços (ordem alfabética)\r\n this.dataSource.push(alertResponse);\r\n this.dataSource.push(authResponse);\r\n this.dataSource.push(eventResponse);\r\n this.dataSource.push(markerResponse);\r\n this.dataSource.push(patrolResponse);\r\n this.dataSource.push(reactiveRouteDeviationResponse);\r\n this.dataSource.push(reactiveSIMFResponse);\r\n this.dataSource.push(registrationResponse);\r\n this.dataSource.push(signalResponse);\r\n this.dataSource.push(trackingResponse);\r\n this.dataSource.push(webResponse);\r\n this.dataSource.push(websocketResponse);\r\n\r\n // Passo 3: Obtendo resposta dos serviços\r\n\r\n webResponse.version = appVersion;\r\n\r\n // Auth\r\n this.authenticationService.getServiceVersion().pipe(first()).subscribe(\r\n (data) => {\r\n this.logger.debug(`Versão recuperada pelo projeto auth ${data}`);\r\n authResponse.version = data;\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter a versão do projeto auth ', error);\r\n authResponse.version = 'Não Disponível';\r\n }\r\n );\r\n\r\n // Patrol\r\n this.patrolService.getServiceVersion().pipe(first()).subscribe(\r\n (data) => {\r\n this.logger.debug(`Versão recuperada pelo projeto patrol ${data}`);\r\n patrolResponse.version = data;\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter a versão do projeto patrol ', error);\r\n patrolResponse.version = 'Não Disponível';\r\n }\r\n );\r\n\r\n // Registration\r\n this.registrationService.getServiceVersion().pipe(first()).subscribe(\r\n (data) => {\r\n this.logger.debug(`Versão recuperada pelo projeto registrations ${data}`);\r\n registrationResponse.version = data;\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter a versão do projeto registrations ', error);\r\n registrationResponse.version = 'Não Disponível';\r\n }\r\n );\r\n\r\n // Tracking\r\n this.trackingService.getServiceVersion().pipe(first()).subscribe(\r\n (data) => {\r\n this.logger.debug(`Versão recuperada pelo projeto tracking ${data}`);\r\n trackingResponse.version = data;\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter a versão do projeto tracking ', error);\r\n trackingResponse.version = 'Não Disponível';\r\n }\r\n );\r\n\r\n // Alert\r\n this.alertsService.getServiceVersion().pipe(first()).subscribe(\r\n (data) => {\r\n this.logger.debug(`Versão recuperada pelo projeto alert ${data}`);\r\n alertResponse.version = data;\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter a versão do projeto alert ', error);\r\n alertResponse.version = 'Não Disponível';\r\n }\r\n );\r\n\r\n // Event/Verification\r\n this.eventService.getServiceVersion().pipe(first()).subscribe(\r\n (data) => {\r\n this.logger.debug(`Versão recuperada pelo projeto event-verification ${data}`);\r\n eventResponse.version = data;\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter a versão do projeto event-verification ', error);\r\n eventResponse.version = 'Não Disponível';\r\n }\r\n );\r\n\r\n // Marker\r\n this.markersService.getServiceVersion().pipe(first()).subscribe(\r\n (data) => {\r\n this.logger.debug(`Versão recuperada pelo projeto marker ${data}`);\r\n markerResponse.version = data;\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter a versão do projeto marker ', error);\r\n markerResponse.version = 'Não Disponível';\r\n }\r\n );\r\n\r\n // Signals\r\n this.signalsService.getServiceVersion().pipe(first()).subscribe(\r\n (data) => {\r\n this.logger.debug(`Versão recuperada pelo projeto signals ${data}`);\r\n signalResponse.version = data;\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter a versão do projeto signals ', error);\r\n signalResponse.version = 'Não Disponível';\r\n }\r\n );\r\n\r\n // WebSocket\r\n this.webSocketSignalsService.getServiceVersion().pipe(first()).subscribe(\r\n (data) => {\r\n this.logger.debug(`Versão recuperada pelo projeto websocket ${data}`);\r\n websocketResponse.version = data;\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter a versão do projeto websocket ', error);\r\n websocketResponse.version = 'Não Disponível';\r\n }\r\n );\r\n\r\n // Reactive - Route Deviation\r\n this.reactiveService.getRouteDeviationVersion().pipe(first()).subscribe(\r\n (data) => {\r\n this.logger.debug(`Versão recuperada pelo projeto reactive - route deviation ${data}`);\r\n reactiveRouteDeviationResponse.version = data;\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter a versão do projeto reactive - route deviation ', error);\r\n reactiveRouteDeviationResponse.version = 'Não Disponível';\r\n }\r\n );\r\n\r\n // Reactive - Route Deviation\r\n this.reactiveService.getSIMFVersion().pipe(first()).subscribe(\r\n (data) => {\r\n this.logger.debug(`Versão recuperada pelo projeto reactive - simf ${data}`);\r\n reactiveSIMFResponse.version = data;\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao obter a versão do projeto reactive - simf ', error);\r\n reactiveSIMFResponse.version = 'Não Disponível';\r\n }\r\n );\r\n }\r\n\r\n}\r\n","
    \r\n Versões dos Microserviços\r\n \r\n
    \r\n\r\n
    \r\n 0; else elseBlock\">\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n
    Serviço {{element.name}} URL {{element.url}} Versão \r\n
    {{element.version}}
    \r\n \r\n \r\n \r\n
    \r\n Não há serviços listados\r\n
    \r\n","import {Injectable} from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport {environment} from '../../../environments/environment';\r\nimport { EntityService } from './entity.service';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { EntityModel } from '../../model/entity.model';\r\nimport { FilterModel } from '../../general/filter-component/filter.model';\r\nimport { Observable } from 'rxjs';\r\nimport { SingleDataModel } from '../../model/singleData.model';\r\nimport { UserModel } from '../../model/user.model';\r\nimport { SORT_NAME_ASC } from 'src/app/common/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SingleDataService extends EntityService {\r\n\r\n protected propsMap;\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) { \r\n super(logger, httpClient, `${environment.settings.registrations_address}/singleData`);\r\n\r\n const singleData = require('../../../assets/singleData.json');\r\n let jsonData = JSON.stringify(singleData);\r\n const propsObject = JSON.parse(jsonData);\r\n this.propsMap = new Map(Object.entries(propsObject));\r\n }\r\n\r\n getDataInfo(metadata: string) {\r\n return this.propsMap.get(metadata);\r\n }\r\n\r\n protected filteredLoadFromRestApi( pageIndex?: number, pageSize?: number, sort?: string, filter?: FilterModel, extraParams?: Map ): Observable {\r\n\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (extraParams) {\r\n extraParams.forEach( (value, key) => {\r\n params = params.append(key, value); \r\n });\r\n }\r\n\r\n return super.loadFromRestApi(pageIndex, pageSize, sort, params);\r\n }\r\n\r\n public loadMultipleListFromRestApi(params: HttpParams, sortOptions: string): Observable {\r\n params = params.set('sort', sortOptions);\r\n return this.http.get(this.apiUrl + '/multiple', { params : params });\r\n }\r\n\r\n public getRecord(id: string, extraParams?: Map): Observable {\r\n\r\n let params: HttpParams = new HttpParams();\r\n\r\n if (extraParams) {\r\n extraParams.forEach( (value, key) => {\r\n params = params.append(key, value);\r\n });\r\n }\r\n\r\n return this.http.get(this.apiUrl + '/id', { params : params });\r\n }\r\n\r\n public createRecord (record: SingleDataModel, extraParams?: Map): Observable {\r\n this.logger.debug('SingleDataService.createRecord()');\r\n this.logger.debug('Entidade a ser salva: ', record);\r\n \r\n let params: HttpParams = new HttpParams();\r\n\r\n if (extraParams) {\r\n extraParams.forEach( (value, key) => {\r\n params = params.append(key, value);\r\n });\r\n }\r\n\r\n return this.http.post(this.apiUrl, record, { params : params });\r\n }\r\n\r\n public insertMany (record: SingleDataModel[], extraParams?: Map): Observable {\r\n this.logger.debug('SingleDataService.createRecord()');\r\n \r\n let params: HttpParams = new HttpParams();\r\n\r\n if (extraParams) {\r\n extraParams.forEach( (value, key) => {\r\n params = params.append(key, value);\r\n });\r\n }\r\n\r\n return this.http.post(this.apiUrl + '/many', record, { params : params });\r\n }\r\n\r\n public importKml(metadata: string, replace: boolean, kmlFile: File) {\r\n this.logger.debug('PointService.importKml()');\r\n const formData: FormData = new FormData();\r\n if (kmlFile instanceof File) {\r\n formData.append(\"fileKml\", kmlFile);\r\n }\r\n\r\n formData.append(\"replace\", JSON.stringify(replace));\r\n\r\n formData.append(\"metadata\", metadata);\r\n\r\n return super.postAsFormData(this.apiUrl + '/import', formData);\r\n }\r\n\r\n public restore (user: UserModel, extraParams?: Map): Observable {\r\n this.logger.debug('SingleDataService.restore()');\r\n this.logger.debug('Usuário responsável: ', user);\r\n \r\n let params: HttpParams = new HttpParams();\r\n\r\n if (extraParams) {\r\n extraParams.forEach( (value, key) => {\r\n params = params.append(key, value);\r\n });\r\n }\r\n\r\n return this.http.post(this.apiUrl + '/restore', user, { params : params });\r\n }\r\n\r\n public editRecord (record: EntityModel, extraParams?: Map): Observable {\r\n this.logger.debug('SingleDataService.editRecord()');\r\n \r\n let params: HttpParams = new HttpParams();\r\n\r\n if (extraParams) {\r\n extraParams.forEach( (value, key) => {\r\n params = params.append(key, value);\r\n });\r\n }\r\n\r\n return this.http.put(this.apiUrl + '/id', record, { params : params });\r\n }\r\n\r\n public delete(record: SingleDataModel, extraParams?: Map) {\r\n this.logger.debug('SingleDataService.delete()');\r\n \r\n let params: HttpParams = new HttpParams();\r\n\r\n if (extraParams) {\r\n extraParams.forEach( (value, key) => {\r\n params = params.append(key, value);\r\n });\r\n }\r\n\r\n return this.http.delete(this.apiUrl + '/id', { params : params });\r\n }\r\n\r\n public getGasDucts(){\r\n return this.http.get(`${environment.settings.registrations_address}/singleData?metadata=GasDuct`);\r\n }\r\n\r\n public getOilDucts(){\r\n return this.http.get(`${environment.settings.registrations_address}/singleData?metadata=OilDuct`);\r\n }\r\n\r\n public getSimf(){\r\n return this.http.get(`${environment.settings.registrations_address}/singleData?metadata=Simf`);\r\n }\r\n\r\n public getBands(){\r\n return this.http.get(`${environment.settings.registrations_address}/singleData?metadata=Band`);\r\n }\r\n\r\n public getValves(){\r\n return this.http.get(`${environment.settings.registrations_address}/singleData?metadata=Valve`);\r\n }\r\n\r\n public getPipeStretchs(){\r\n return this.http.get(`${environment.settings.registrations_address}/singleData?metadata=PipeStretch`);\r\n }\r\n\r\n public getCommunicationChannels(){\r\n return this.http.get(`${environment.settings.registrations_address}/singleData?metadata=CommunicationChannel`);\r\n }\r\n\r\n public getOpticalProcessingSystems(){\r\n return this.http.get(`${environment.settings.registrations_address}/singleData?metadata=OpticalProcessingSystem`);\r\n }\r\n \r\n\r\n}\r\n","import * as L from 'leaflet';\r\nimport {PatrolTeamModel} from './patrolteam.model';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { UserModel } from './user.model';\r\nimport { AbstractSignalModel } from './abstract.signal.model';\r\nimport { SourceType } from './enums.enum';\r\nimport { VehicleSignalModel } from './vehicle.signal.model';\r\nimport FieldUtils from '../service/util/field-utils';\r\nimport * as moment from 'moment';\r\nimport { USER_NOT_FOUND } from '../common/constants';\r\nimport { VehicleModel } from './vehicle.model';\r\nimport { CompanyModel } from './company.model';\r\n\r\n/**\r\n * Objeto móvel na tela de rastreamento. Pode ser um aplicativo ou o GPS de um veículo utilizado pelas equipes de vigilância.\r\n */\r\nexport class TrackingModel {\r\n /** Último sinal recebido pelo sistema deste objeto */\r\n public signal: AbstractSignalModel; // O que define um tracking como único é o seu signal.mobileObjectId\r\n\r\n // Info - preenchido na Web\r\n\r\n /** Equipe a que pertence o objeto móvel */\r\n public patrolTeam: PatrolTeamModel; // Pode ser null se for veículo ou profissional sem equipe\r\n\r\n /** Ronda ou Verificação de evento que esse objeto esteja executando */\r\n public operation: OperationModel; // Pode ser null, se equipe não tem operação\r\n\r\n /** Profissional obtido a partir do signal.mobileObjectId */\r\n public user: UserModel; // Pode ser null se for veículo\r\n\r\n /** Veículo obtido a partir do signal.mobileObjectId. Se tem equipe, é identico à patrolTeam.vehicle */\r\n public vehicle: VehicleModel;\r\n\r\n /** Se tem equipe é patrolTeam.company, senão é user.company ou vehicle.company */\r\n company: CompanyModel;\r\n\r\n title: string;\r\n\r\n // INFO\r\n\r\n /** Ícone para a representação gráfica deste objeto no mapa */\r\n public icon: L.Icon;\r\n\r\n public removedFromMap: boolean;\r\n public removedFromTracking: boolean;\r\n public invalidInfo: boolean; // tem teamId mas equipe não encontrada, ou tem userId mas usuário não encontrado\r\n public invalidCode;\r\n\r\n public static getTitle(sourceType: string, mobileObjectId: string, patrolTeam: PatrolTeamModel, user: UserModel, search: boolean = false) {\r\n return TrackingModel.getBaseTitle(sourceType, mobileObjectId, user, search) + ' - ' + (patrolTeam? patrolTeam.name: 'sem equipe');\r\n }\r\n\r\n public static getBaseTitle(sourceType: string, mobileObjectId: string, user: UserModel, search: boolean = false) {\r\n return sourceType == SourceType.MOBILE_APP ? ((user? (!search? UserModel.getTitle(user): user.name): USER_NOT_FOUND)): mobileObjectId;\r\n }\r\n\r\n public static getPopupContent(tracking: TrackingModel, search: boolean = false): string{\r\n const operation: OperationModel = tracking.operation;\r\n const patrolTeam: PatrolTeamModel = tracking.patrolTeam;\r\n const signal: AbstractSignalModel = tracking.signal;\r\n const user: UserModel = tracking.user;\r\n const title = TrackingModel.getBaseTitle(signal.sourceType, signal.mobileObjectId, user, search);\r\n let mainTitle = signal.sourceType == SourceType.MOBILE_APP ? 'Profissional' : 'Veículo';\r\n mainTitle += (patrolTeam)? \" em Equipe\": \" sem Equipe\";\r\n let timestamp = signal.receivedTimestamp? signal.receivedTimestamp: tracking.signal.timestamp; \r\n return `
    ${ mainTitle }
    \r\n
    ${ title }
    \r\n ${ tracking.company ? '
    Empresa: ' + tracking.company.name + '
    ': ''}\r\n ${ operation ? OperationModel.getPopupContent(operation) : ''}\r\n ${ PatrolTeamModel.getPopupContent(patrolTeam, search) }\r\n ${ signal.sourceType == SourceType.VEHICLE ? VehicleSignalModel.getPopupContent(tracking.signal as VehicleSignalModel) : '' }\r\n
    Data/Hora: ${moment(signal.timestamp).format('DD/MM/YYYY HH:mm:ss') }
    \r\n
    Lat, Long: ${!search? FieldUtils.coordToString(signal.latitude): ''},${!search? FieldUtils.coordToString(signal.longitude): ''}
    \r\n
    Última Atualização (GPS): ${timestamp ? moment(timestamp).format('DD/MM/YYYY HH:mm:ss') : '' }
    \r\n `;\r\n }\r\n\r\n public static getTooltipContent(tracking: TrackingModel): string{\r\n const signal: AbstractSignalModel = tracking.signal;\r\n return `
    ${ tracking.title }
    \r\n
    ${FieldUtils.coordToString(signal.latitude)},${FieldUtils.coordToString(signal.longitude)}
    \r\n
    ${moment(signal.timestamp).format('DD/MM/YYYY HH:mm:ss') }
    \r\n `;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CentralComponent } from './central.component';\r\nimport { CentralFilterDialogComponent } from './central-filter-dialog/central-filter-dialog.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { GeneralModule } from 'src/app/general/general.module';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { FilterPipeModule } from 'ngx-filter-pipe';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { PointLocationPipe } from 'src/app/model/pipe/location.pipe';\r\nimport { CentralListComponent } from './central-list/central-list.component';\r\nimport { AngularSplitModule } from 'angular-split';\r\n\r\n@NgModule({\r\n declarations: [\r\n CentralComponent,\r\n CentralFilterDialogComponent,\r\n PointLocationPipe,\r\n CentralListComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatTableModule,\r\n MatSortModule,\r\n MatButtonModule,\r\n MatPaginatorModule,\r\n MatMenuModule,\r\n MatSidenavModule,\r\n MatTooltipModule,\r\n MatGridListModule,\r\n MatToolbarModule,\r\n MatSelectModule,\r\n MatRadioModule,\r\n MatDatepickerModule,\r\n MatDividerModule,\r\n MatDialogModule,\r\n MatSlideToggleModule,\r\n MatCheckboxModule,\r\n FlexLayoutModule,\r\n FilterPipeModule,\r\n NgxMaskModule.forRoot(),\r\n GeneralModule,\r\n AngularSplitModule\r\n ]\r\n})\r\nexport class CentralModule { }\r\n","import {EntityModel} from './entity.model';\r\n\r\nexport class ResultsModel extends EntityModel {\r\n occurrence: string;\r\n occurrenceKM: string;\r\n occurrenceLatLong: string;\r\n notes: string; //usado para eventos\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { Observable } from 'rxjs';\r\nimport { PointFilterModel } from 'src/app/pages/registrations/point/point-filter-dialog/point.filter.model';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport {environment} from '../../../environments/environment';\r\nimport { EntityService } from './entity.service';\r\nimport { UserModel } from '../../model/user.model';\r\n\r\nexport const OBJECT_NAME = 'pointObject';\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PointService extends EntityService {\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.registrations_address}/inspection-points`);\r\n }\r\n\r\n protected filteredLoadFromRestApi(pageIndex?: number, pageSize?: number, sort?: string, filter?: PointFilterModel): Observable {\r\n let params: HttpParams = new HttpParams();\r\n\r\n if(filter){\r\n if (filter.band){\r\n params = params.set('band', filter.band);\r\n }\r\n\r\n if (filter.stretch){\r\n params = params.set('stretch', filter.stretch);\r\n }\r\n\r\n if (filter.startKm){\r\n params = params.set('startKm', filter.startKm.replace('+', ''));\r\n }\r\n\r\n if (filter.endKm){\r\n params = params.set('endKm', filter.endKm.replace('+', ''));\r\n }\r\n\r\n if (filter.status){\r\n filter.status.forEach( status => {\r\n params = params.append('status', status);\r\n });\r\n }\r\n }\r\n\r\n return super.loadFromRestApi(pageIndex, pageSize, sort, params);\r\n }\r\n\r\n public importXls(author: UserModel, xlsFile: File) {\r\n this.logger.debug('PointService.importXls()');\r\n const formData: FormData = new FormData();\r\n if (xlsFile instanceof File) {\r\n formData.append(\"fileXls\", xlsFile);\r\n }\r\n\r\n const objectModel = JSON.stringify(author);\r\n formData.append(\"author\", objectModel);\r\n\r\n return super.postAsFormData(this.apiUrl + '/import', formData);\r\n }\r\n}\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { first } from 'rxjs/operators';\r\nimport { ChannelModel } from 'src/app/model/channel.model';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EntityService } from './entity.service';\r\nimport { AuthorizationService } from '../authorization/authorization.service';\r\nimport { StorageService } from '../storage-service';\r\nimport { channelUnreadMessagesModel } from 'src/app/model/channelUnreadMessages.model';\r\nimport { UserUnreadMessagesModel } from 'src/app/model/userUnreadMessages.model';\r\nimport { EntityCacheService } from './entity.cache.service';\r\nimport { UserType } from 'src/app/model/enums.enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChannelService extends EntityService {\r\n\r\n // A contagem de mensagens recebidas fica nessa lista em memória\r\n inMemoryChannelList: ChannelModel[];\r\n\r\n private unreadMessagesByChannel: channelUnreadMessagesModel[];\r\n\r\n private channelUpdated: Subject = new Subject();\r\n\r\n constructor(logger: NGXLogger,\r\n protected authorizationService: AuthorizationService,\r\n public entityCacheService: EntityCacheService,\r\n protected storageService: StorageService,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.registrations_address}/channels`);\r\n this.inMemoryChannelList = []; // é preciso para quando a chamada da initializeInMemoryChannelList retorna após do ngInit\r\n this.unreadMessagesByChannel = [];\r\n }\r\n\r\n private notifyChannelUpdated(channel: ChannelModel) {\r\n this.channelUpdated.next(channel);\r\n }\r\n\r\n onChannelUpdated(): Observable {\r\n return this.channelUpdated.asObservable();\r\n }\r\n \r\n public setChannelUnreadMessages(channelId: string, unreadMessages: string) {\r\n const found = this.unreadMessagesByChannel.find((obj) => {\r\n return obj.channelId === channelId;\r\n });\r\n found.unreadMessages = unreadMessages;\r\n this.enrichChannelList();\r\n }\r\n\r\n public setUnreadMessagesdByChannel(userUnreadMessages: UserUnreadMessagesModel, channelId: string) {\r\n this.unreadMessagesByChannel.filter(elem => elem.channelId === channelId)\r\n .map(elem => elem.unreadMessages = userUnreadMessages.unreadMessages);\r\n }\r\n\r\n public updateInMemoryChannels(unreadMessages: channelUnreadMessagesModel[]) {\r\n this.unreadMessagesByChannel = unreadMessages;\r\n this.enrichChannelList();\r\n }\r\n\r\n public getUnreadMessagesByUser(userId: string): Observable {\r\n return this.http.get(`${environment.settings.markers_address}/marker/unread-messages/${userId}`, { responseType: 'json' });\r\n }\r\n\r\n public resetUnreadChannelMessagesdByUser(userid: string, profileId: string, channelId: string) {\r\n let unreadMessages = this.getUnreadMessagesInChannel(channelId);\r\n this.setUnreadMessagesInChannel(channelId, 0);\r\n this.resetUnreadMessagesByUser(userid, profileId, channelId, unreadMessages).pipe(first()).toPromise().then(() =>{\r\n }, err =>{\r\n this.logger.error(JSON.stringify(err)); \r\n });\r\n }\r\n\r\n public getUnreadMessagesInChannel(channelId: string) {\r\n const found = this.inMemoryChannelList.find((obj) => {\r\n return obj.id === channelId;\r\n });\r\n return found && found.newMessagesCount !== 0 ? found.newMessagesCount : 0;\r\n }\r\n\r\n public setUnreadMessagesInChannel(channelId: string, unreadMessages: number) {\r\n const found = this.inMemoryChannelList.find((obj) => {\r\n return obj.id === channelId;\r\n });\r\n \r\n // se o usuário tem acesso a esse canal\r\n if(found){\r\n found.newMessagesCount = unreadMessages;\r\n } \r\n }\r\n\r\n isAnalystCCPDProfile(profileId: string): boolean{\r\n let allProfiles = this.entityCacheService.getAllProfiles();\r\n return !!allProfiles.find(p => p.id === profileId && p.userType === UserType.ANALYSIS_CCPD);\r\n }\r\n\r\n protected resetUnreadMessagesByUser(userId: string, profileId: string, channelId: string, unreadMessages: number): Observable {\r\n let params: HttpParams = new HttpParams();\r\n params = params.set('userId', userId);\r\n if (this.isAnalystCCPDProfile(profileId)) {\r\n params = params.set('profileId', profileId);\r\n }\r\n params = params.set('channelId', channelId);\r\n params = params.set('unreadMessages', unreadMessages.toString());\r\n return this.http.get(`${environment.settings.markers_address}/marker/unread-messages/reset`, { params: params, responseType: 'json' });\r\n }\r\n\r\n protected enrichChannel(channel: ChannelModel) {\r\n const found = this.unreadMessagesByChannel.find((obj) => {\r\n return obj.channelId === channel.id;\r\n });\r\n channel.newMessagesCount = found ? Number(found.unreadMessages) : 0;\r\n channel.lastMessageReceivedTimestamp = found ? found.lastMessageReceivedTimestamp : null;\r\n }\r\n\r\n public enrichChannelList() {\r\n this.inMemoryChannelList\r\n .map(elem => this.enrichChannel(elem));\r\n }\r\n\r\n public updateDisplayChannels(entities: EntityModel[]) {\r\n this.inMemoryChannelList.forEach((inMemoryChannel: ChannelModel) => {\r\n const updateChannel: ChannelModel = entities.find((channel: ChannelModel) => inMemoryChannel.id === channel.id);\r\n if (updateChannel) {\r\n updateChannel.lastMessageReceivedTimestamp = inMemoryChannel.lastMessageReceivedTimestamp ? inMemoryChannel.lastMessageReceivedTimestamp : 0;\r\n updateChannel.newMessagesCount = inMemoryChannel.newMessagesCount ? inMemoryChannel.newMessagesCount : 0;\r\n }\r\n });\r\n }\r\n\r\n // Chamado pelo AppComponent\r\n public updateUserUnreadMessages(channelId: string, userUnreadMessages: UserUnreadMessagesModel) {\r\n if (!channelId || !this.inMemoryChannelList) return;\r\n \r\n this.setUnreadMessagesdByChannel(userUnreadMessages, channelId);\r\n\r\n const foundChannel = this.inMemoryChannelList.find((channel: ChannelModel) => channel.id === channelId);\r\n if (foundChannel) {\r\n foundChannel.lastMessageReceivedTimestamp = userUnreadMessages.lastMessageReceivedTimestamp;\r\n foundChannel.newMessagesCount = Number(userUnreadMessages.unreadMessages);\r\n\r\n this.notifyChannelUpdated(foundChannel); // Notifica a lista de canais\r\n }\r\n }\r\n\r\n /**\r\n * Retorna um ID de canal com base em seu ID de referência (esse último pode ser ID de usuário ou de equipe, dependendo do tipo de canal).\r\n */\r\n public getChannelIdByReferenceId(referenceId: string): ChannelModel {\r\n const foundChannel = this.inMemoryChannelList.find((channel: ChannelModel) => channel.referencedId === referenceId);\r\n if (foundChannel) {\r\n return foundChannel;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Retorna o número de canais com mensagens não lidas. Usado para atualizar o título da tab da janela de mensagens.\r\n */\r\n public channelCountWithNewMessages(): number {\r\n let count = 0;\r\n this.inMemoryChannelList.forEach((channel: ChannelModel) => {\r\n if (channel.newMessagesCount > 0) count++;\r\n });\r\n return count;\r\n }\r\n\r\n // Foram lidos canais do backend, apenas atualiza a lista (pode ser uma atualização parcial se o filtro estiver ativo)\r\n public updateChannels(channels: ChannelModel[]) {\r\n channels.forEach(channel => {\r\n let index = this.inMemoryChannelList.findIndex(old_channel => channel.id == old_channel.id);\r\n if (index != -1) {\r\n const found = this.unreadMessagesByChannel.find((item: channelUnreadMessagesModel) => channel.id === item.channelId);\r\n this.inMemoryChannelList[index] = channel;\r\n channel.lastMessageReceivedTimestamp = found ? found.lastMessageReceivedTimestamp : null;\r\n channel.newMessagesCount = found ? Number(found.unreadMessages) : 0;\r\n } else {\r\n this.inMemoryChannelList.push(channel);\r\n channel.lastMessageReceivedTimestamp = null;\r\n channel.newMessagesCount = 0;\r\n }\r\n });\r\n }\r\n\r\n setMessageData(messageData: ChannelModel[]) {\r\n this.inMemoryChannelList = messageData;\r\n }\r\n\r\n getMessageData() {\r\n return this.inMemoryChannelList;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { OperationFilterModel } from 'src/app/general/filter-component/operation.filter.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class PatrolRepetitionFilterModel extends OperationFilterModel{\r\n referencePatrolIds : string[];\r\n enable : boolean;\r\n}","import { Component, Inject, OnInit, ChangeDetectorRef } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { CompanyService } from 'src/app/service/model/company.service';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthorizationService } from '../../../../service/authorization/authorization.service';\r\nimport { StorageService } from '../../../../service/storage-service';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { CompanyModel } from 'src/app/model/company.model';\r\nimport { ESP, SORT_NAME_ASC } from 'src/app/common/constants';\r\nimport { RegistrationListComponent } from '../../registration-list-component';\r\nimport { RegistrationType } from 'src/app/model/enums.enum';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { SAVE_DATA_PREFIX } from '../../../../common/constants';\r\n\r\n@Component({\r\n selector: 'app-company-list',\r\n templateUrl: './company-list.component.html',\r\n styleUrls: ['../../../../app.component.scss', '../../../list.component.scss']\r\n})\r\nexport class CompanyListComponent extends RegistrationListComponent implements OnInit {\r\n\r\n constructor(logger: NGXLogger,\r\n companyService: CompanyService,\r\n dialog: MatDialog,\r\n public authorizationService: AuthorizationService,\r\n protected storageService: StorageService,\r\n protected changeDetector: ChangeDetectorRef,\r\n protected toastr: ToastrService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, companyService, dialog, 'companies', environment.COMPANY_GROUP_LABEL, environment.COMPANY_TITLE_LABEL,\r\n environment.COMPANY_MODEL_LABEL, storageService, changeDetector, toastr, goldenLayout, container);\r\n logger.debug('CompanyListComponent.constructor()');\r\n this.subscribeToSavePlacementsData();\r\n this.registrationType = RegistrationType.COMPANY;\r\n this.sortOptions = SORT_NAME_ASC;\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.logger.debug('CompanyListComponent.ngOnInit()');\r\n\r\n this.displayedColumns = ['select',\r\n 'name',\r\n 'address',\r\n 'phone',\r\n 'email',\r\n 'website',\r\n 'cnpj',\r\n 'uf',\r\n 'placement.name',\r\n 'observations'];\r\n\r\n this.loadRecordsFromServer();\r\n }\r\n\r\n public subscribeToSavePlacementsData() {\r\n // A lista escuta a edição correspondente para saber se algo foi modificado\r\n this.glSubscribeEvent(SAVE_DATA_PREFIX + 'placements-edit', (data) => {\r\n this.loadRecordsFromServer();\r\n });\r\n }\r\n\r\n /**\r\n * Retorna a entidade em formato string, contendo só os campos visualizados na interface, para filtro.\r\n */\r\n protected getStringEntityForFilter(company: CompanyModel): string {\r\n const name = super.lowerAndTrimText(company.name);\r\n const address = super.lowerAndTrimText(company.address);\r\n const phone = super.lowerAndTrimText(company.phone);\r\n const email = super.lowerAndTrimText(company.email);\r\n const website = super.lowerAndTrimText(company.website);\r\n const cnpj = super.lowerAndTrimText(company.cnpj);\r\n const uf = super.lowerAndTrimText(company.uf);\r\n const placement = (company.placement) ? super.lowerAndTrimText(company.placement.name) : '';\r\n const observations = super.lowerAndTrimText(company.observations);\r\n return name + ESP + address + ESP + phone + ESP + email + ESP + website + ESP + cnpj + ESP + uf + ESP + placement + ESP + observations;\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n {{title}}[ {{getListCount()}} ]\r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Nome {{element?.name}} Endereço {{element?.address}} Telefone {{element?.phone}} E-mail {{element?.email}} Website {{element?.website}} CNPJ {{element?.cnpj}} UF {{element?.uf}} Lotação {{element.placement?.name}} Obs. {{element?.observations}}
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n","import { Observable, throwError } from 'rxjs';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { HttpClient, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { EntityModel } from '../../model/entity.model';\r\nimport { DEFAULT_PAGE_INDEX } from '../../common/constants';\r\nimport { FilterModel } from 'src/app/general/filter-component/filter.model';\r\nimport { map } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nexport abstract class EntityService {\r\n\r\n protected readonly apiUrl: string;\r\n\r\n /**\r\n * @description Constructor abstracts information for future operations\r\n * @author dsgoncal, laigner\r\n */\r\n protected constructor(protected logger: NGXLogger, protected http: HttpClient, apiUrl: string) {\r\n this.apiUrl = apiUrl ? apiUrl : '';\r\n }\r\n\r\n /**\r\n * Método que retorna um Page do backend, caso a configuração de paginação esteja ligada\r\n * Caso contrário, retorna uma lista\r\n */\r\n public loadFromRestApi( pageIndex?: number, pageSize?: number, sort?: string, params?: HttpParams ): Observable {\r\n\r\n params = params ? params : new HttpParams();\r\n\r\n if (pageIndex != null && pageSize != null) {\r\n const pageSizeStr = pageSize ? pageSize.toString() : environment.defaultPageSize.toString();\r\n const pageIndexStr = pageIndex ? pageIndex.toString() : DEFAULT_PAGE_INDEX.toString();\r\n params = params.set('page', pageIndexStr).set('size', pageSizeStr);\r\n }\r\n\r\n if(sort){\r\n params = params.set('sort', sort);\r\n }\r\n\r\n return this.http.get(this.apiUrl, { params : params });\r\n }\r\n\r\n /**\r\n * Método que retorna uma lista de Entidades do banco de dados\r\n * Trata o fato de alguns endpoints retornarem diretamente a lista\r\n * e outros retornarem um estrutura com dois elementos {first, second}\r\n * nesse caso a lista está no segundo elemento\r\n */\r\n public loadListFromRestApi(pageIndex?: number, pageSize?: number, sort?: string, params?: HttpParams): Observable {\r\n return this.loadFromRestApi(pageIndex, pageSize, sort, params).pipe(map(entities => {\r\n if ( entities['first'] || entities['second'] ){\r\n return entities['second'];\r\n }else{\r\n return entities;\r\n }\r\n }));\r\n }\r\n\r\n // Precisa ser sobrescrita por quem vai ter filtro\r\n // Vai implementar a passagem de dados do filtro para os parametros http\r\n // Normalmente vai retornar super.loadFromRestApi(...)\r\n protected filteredLoadFromRestApi(pageIndex?: number, pageSize?: number, sort?: string, filter?: FilterModel, extraParams?: Map): Observable{\r\n return this.loadFromRestApi(pageIndex, pageSize, sort, null);\r\n }\r\n\r\n // Carrega uma lista com filtro e trata o retorno dos dois tipos (ver loadListFromRestApi)\r\n public loadFilteredListFromRestApi(pageIndex: number, pageSize: number, sort: string, filter: FilterModel): Observable {\r\n return this.filteredLoadFromRestApi(pageIndex, pageSize, sort, filter).pipe(map(entities => {\r\n if ( entities['first'] || entities['second'] ){\r\n return entities['second'];\r\n }else{\r\n return entities;\r\n }\r\n }));\r\n }\r\n\r\n public loadFilteredRawListFromRestApi(pageIndex: number, pageSize: number, sort: string, filter: FilterModel): Observable {\r\n return this.filteredLoadFromRestApi(pageIndex, pageSize, sort, filter);\r\n }\r\n\r\n /**\r\n * @description Abstract the code regarding building a formData\r\n * @author laigner\r\n */\r\n protected buildFormData(identifier: string, record: EntityModel, formElements: Map){\r\n this.logger.debug('EntityService.buildFormData()');\r\n\r\n const formData: FormData = new FormData();\r\n if (formElements) {\r\n formElements.forEach((value: object, key: string) => {\r\n if (value instanceof File) {\r\n formData.append(key, value);\r\n }\r\n });\r\n }\r\n const objectModel = JSON.stringify(record);\r\n formData.append(identifier, objectModel);\r\n return formData;\r\n }\r\n\r\n /**\r\n * @description Abstract the code regarding a post with formData\r\n * @author laigner\r\n */\r\n protected postAsFormData(url: string, formData: FormData): Observable{\r\n this.logger.debug('EntityService.postAsFormData()');\r\n return this.http.post(url, formData, {reportProgress: true, responseType: 'json'});\r\n }\r\n\r\n /**\r\n * @description Abstract the code regarding a put with formData\r\n * @author laigner\r\n */\r\n protected putAsFormData(url: string, formData: FormData): Observable{\r\n this.logger.debug('EntityService.putAsFormData()');\r\n return this.http.put(url, formData, {reportProgress: true, responseType: 'json'});\r\n }\r\n\r\n public createRecord (record: EntityModel, extraParams?: Map): Observable {\r\n this.logger.debug('EntityService.createRecord()');\r\n this.logger.debug('Entidade a ser salva: ', record);\r\n return this.http.post(this.apiUrl, record);\r\n }\r\n\r\n public editRecord (record: EntityModel, extraParams?: Map): Observable {\r\n this.logger.debug('EntityService.editRecord()');\r\n return this.http.put(this.apiUrl + '/' + record.id, record);\r\n }\r\n\r\n public delete(record: EntityModel, extraParams?: Map) {\r\n this.logger.debug('EntityService.delete()');\r\n return this.http.delete(this.apiUrl + '/' + record.id);\r\n }\r\n\r\n public getRecord(id: string, extraParams?: Map): Observable {\r\n return this.http.get(this.apiUrl + '/' + id);\r\n }\r\n\r\n protected handleError(error: HttpErrorResponse | any) {\r\n if (error.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n this.logger.error('An error occurred:', error.error);\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n this.logger.error(\r\n `Backend returned code ${error.status}, ` +\r\n `body was: ${error.error}`);\r\n }\r\n // return an observable with a user-facing error message\r\n return throwError(\r\n 'Something bad happened; please try again later.');\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatOptionSelectionChange } from '@angular/material/core';\r\nimport { Autocomplete } from '../autocomplete/autocomplete.component';\r\n\r\n@Component({\r\n selector: 'multiselect-object-autocomplete',\r\n templateUrl: './multiselect-object-autocomplete.component.html',\r\n styleUrls: ['./multiselect-object-autocomplete.component.css']\r\n})\r\nexport class MultiselectObjectAutocompleteComponent extends Autocomplete implements OnInit {\r\n\r\n // valueData é dado que vai ser atualizado no model (aqui podem ser vários objetos)\r\n _valueData: Object[];\r\n @Input()\r\n set valueData(data: Object[]) {\r\n if (!Array.isArray(data)) {\r\n data = []\r\n }\r\n this._valueData = data;\r\n if (data) {\r\n this.selectedData = this.getDataControlObjectValue(this._valueData, this._optionValue);\r\n this.dataControl.setValue(this.selectedData);\r\n }\r\n }\r\n\r\n get valueData() {\r\n return this._valueData;\r\n }\r\n\r\n selectedData: Object[] = new Array();\r\n\r\n ngOnInit() {\r\n }\r\n\r\n displayFn = (value: Object | string): string | undefined => {\r\n let displayValue: string;\r\n if (value == null) {\r\n return '';\r\n }\r\n this.selectedData.forEach((data, index) => {\r\n if (index === 0) {\r\n displayValue = this.displayData(data)\r\n } else {\r\n displayValue += ', ' + this.displayData(data);\r\n }\r\n });\r\n return displayValue;\r\n }\r\n\r\n displayData = (data: Object) => {\r\n let displayValue = `[${this.getData(data).opsNumber}] ${this.getData(data).name}`;\r\n return displayValue;\r\n }\r\n\r\n optionClicked(event: MatOptionSelectionChange, data: Object) {\r\n if (event.isUserInput) {\r\n this.toggleSelection(data);\r\n }\r\n } \r\n\r\n toggleSelection(data: Object) {\r\n const dataValue = this._name ? data[this._name] : data;\r\n const index = this.selectedData.findIndex(item => {\r\n const itemValue = this._name ? item[this._name] : item;\r\n return itemValue === dataValue;\r\n });\r\n if (index >= 0) {\r\n this.selectedData.splice(index, 1);\r\n }\r\n else {\r\n this.selectedData.push(data);\r\n }\r\n this.valueDataChange.emit(this.getDataControlPropertyValue(this.selectedData, this._optionValue));\r\n }\r\n\r\n focusInFunction() {\r\n this.dataControl.setValue(null);\r\n }\r\n\r\n onOpenedEvent(event) {\r\n }\r\n\r\n onClosedEvent(event) {\r\n this.valueDataChange.emit(this.getDataControlPropertyValue(this.selectedData, this._optionValue));\r\n this.dataControl.setValue(this.selectedData);\r\n this.selectionChangedEvent.emit(this.selectedData);\r\n }\r\n\r\n getDataControlObjectValue(value: any[], option: string) {\r\n let retValue = [];\r\n if (option) {\r\n value.forEach(val => {\r\n this._data.forEach(item => {\r\n if(item[option] === val) {\r\n retValue.push(item);\r\n }\r\n })\r\n })\r\n } \r\n else {\r\n retValue = value;\r\n }\r\n return retValue;\r\n }\r\n\r\n getDataControlPropertyValue(value: any[], option: string) {\r\n let retValue= [];\r\n if (option) {\r\n value.forEach(val => {\r\n this._data.forEach(item => {\r\n if(item[option] === val[option]) {\r\n retValue.push(item[option]);\r\n }\r\n })\r\n })\r\n }\r\n else {\r\n retValue = value;\r\n }\r\n return retValue;\r\n }\r\n\r\n isSelected(data) {\r\n const dataValue = this._name ? data[this._name] : data;\r\n const index = this.selectedData.findIndex(item => {\r\n const itemValue = this._name ? item[this._name] : item;\r\n return itemValue === dataValue;\r\n });\r\n return index >= 0 ? true : false;\r\n }\r\n \r\n unSelectAll(){\r\n this.selectedData = [];\r\n }\r\n}\r\n","\r\n\t{{label ? label : placeholder}}\r\n\t\r\n\tCampo Obrigatório\r\n\tkeyboard_arrow_down\r\n\t\r\n\t\r\n\t\t\r\n\t\t\t{{ displayData(data) }}\r\n\t\t\r\n\t\r\n\t\r\n\r\n","
    \r\n\r\n
    \r\n \r\n {{title}}[ {{getListCount()}} ]\r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n ID {{element?.identifier}} Status \r\n \r\n \r\n {{getOperationStatus(element) + ((element.expired && element.status=='FINISHED')? ' (expirada)': '') }}\r\n \r\n \r\n Nome da Ronda {{element?.name}} Data/Hora (Início) {{element?.startDate | date:'dd/MM/yyyy HH:mm'}} Equipe {{element.patrolTeam?.name}} Bloqueada {{element.priority | booleanbr }} Faixa {{element?.band}} KM {{element?.stretchStartKM && element?.stretchEndKM ?\r\n element?.stretchStartKM + \" - \" + element?.stretchEndKM : element?.km}} Tipo de Inspeção {{element?.patrolInspectionType}} Empresa {{element.patrolTeam?.company?.name}} Tipo de Serviço {{getServiceTypeDescription(element)}} Placa {{element.patrolTeam?.vehicle?.plate}} Planejador {{ element?.author | toView}} Última Atualização (GPS) {{element.lastSync | date:'dd/MM/yyyy HH:mm:ss'}}
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n","import { MatDialog } from '@angular/material/dialog';\r\nimport {Component, OnInit, OnDestroy, Inject, NgZone, ChangeDetectorRef, ChangeDetectionStrategy} from '@angular/core';\r\nimport {NGXLogger} from 'ngx-logger';\r\nimport {PatrolModel} from '../../../model/patrol.model';\r\nimport {PatrolService} from '../../../service/model/patrol.service';\r\nimport {environment} from '../../../../environments/environment';\r\nimport { ShiftDescription, OperationStatus, UserType, OperationType, ServiceTypeDescription } from '../../../model/enums.enum';\r\nimport { saveAs } from 'file-saver/dist/FileSaver';\r\nimport { BooleanBRPipe } from '../../../general/boolean-br.pipe';\r\nimport { AuthorizationService } from '../../../service/authorization/authorization.service';\r\nimport { StorageService } from '../../../service/storage-service';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\nimport { TrackingService } from 'src/app/service/model/tracking.service';\r\nimport { PatrolFilterDialogComponent } from '../patrol-filter-dialog/patrol-filter-dialog.component';\r\nimport { PatrolFilterModel } from '../patrol-filter-dialog/patrol.filter.model';\r\nimport { OperationListComponent } from '../../operation-list-component';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { PatrolRepetitionDialogComponent } from '../patrol-repetition-dialog/patrol-repetition-dialog.component';\r\nimport { PatrolRepetitionModel } from 'src/app/model/patrol.repetition.model';\r\nimport { first } from 'rxjs/operators';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { ConfirmationDialogComponent } from 'src/app/general/confirmation-dialog/confirmation-dialog.component';\r\nimport { PatrolRepetitionFilterModel } from '../patrol-filter-dialog/patrol-repetition.filter.model';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\nimport { ESP, HttpError } from 'src/app/common/constants';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { MarkersService } from 'src/app/service/model/markers.service';\r\n\r\n@ProfileClassToConsole()\r\n@Component({\r\n selector: 'app-patrols-list',\r\n templateUrl: './patrol-list.component.html',\r\n styleUrls: [ '../../../app.component.scss', '../../list.component.scss', './patrol-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PatrolListComponent extends OperationListComponent implements OnInit, OnDestroy {\r\n\r\n shiftDescription = ShiftDescription;\r\n\r\n patrolRepetitions: PatrolRepetitionModel[] = [];\r\n\r\n serviceTypeDescription = ServiceTypeDescription;\r\n\r\n isHiddenButtonCreateEditPatrol: boolean;\r\n isHiddenButtonDeletePatrol: boolean;\r\n \r\n constructor(logger: NGXLogger,\r\n protected changeDetector: ChangeDetectorRef,\r\n protected ngZone: NgZone,\r\n protected patrolService: PatrolService,\r\n protected toastr: ToastrService,\r\n protected booleanPipe: BooleanBRPipe,\r\n public authorizationService: AuthorizationService,\r\n protected trackingService: TrackingService,\r\n protected markerService: MarkersService,\r\n protected storageService: StorageService,\r\n dialog: MatDialog,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, changeDetector, ngZone, authorizationService, patrolService, OperationType.PATROL, dialog, 'patrols', environment.PATROL_GROUP_LABEL, environment.PATROL_TITLE_LABEL,\r\n environment.PATROL_MODEL_LABEL, storageService, trackingService, markerService, toastr, goldenLayout, container);\r\n\r\n logger.debug('PatrolListComponent.constructor()');\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n\r\n //Utilizado para reload da listagem de rondas somente após edição de rondas previstas\r\n this.subscribeLoadRecordsFromServer();\r\n\r\n this.logger.debug('PatrolListComponent.ngOnInit()');\r\n\r\n // Ao editar essa lista, não esquecer de atualizar columnsTitles mais abaixo (select e lastSync não entram, date=>data+hora)\r\n this.displayedColumns = ['select',\r\n 'identifier',\r\n 'status',\r\n 'name',\r\n 'startDate',\r\n 'patrolTeam.name', \r\n 'priority',\r\n 'band',\r\n 'km',\r\n 'patrolInspectionType',\r\n 'patrolTeam.company.name',\r\n 'patrolTeam.serviceType',\r\n 'patrolTeam.vehicle.plate',\r\n 'author', \r\n 'lastSync'];\r\n\r\n }\r\n\r\n ngOnDestroy(){\r\n this.glUnSubscribeEvent(\"updatePatrolRepetitionList\");\r\n }\r\n\r\n subscribeLoadRecordsFromServer(){\r\n this.glSubscribeEvent(\"updatePatrolRepetitionList\", () => {\r\n this.logger.debug('PatrolListComponent.subscribeLoadRecordsFromServer(): reload da listagem de rondas após edição de ronda prevista');\r\n this.loadRecordsFromServer();\r\n });\r\n }\r\n\r\n protected getDefaultSortColumn(): string {\r\n return \"identifier\";\r\n }\r\n\r\n protected getDefaultSortDirection(): 'asc' | 'desc' {\r\n return 'desc';\r\n }\r\n\r\n protected newFilterModel() {\r\n return new PatrolFilterModel();\r\n }\r\n\r\n postLoadProcess() {\r\n this.model.forEach((patrol: PatrolModel) => {\r\n patrol.type = OperationType.PATROL;\r\n this.updateOperationFromPatrolTeam(patrol);\r\n });\r\n \r\n this.loadLastSignals();\r\n }\r\n\r\n openFilterDialog(): void {\r\n const dialogRef = this.dialog.open(PatrolFilterDialogComponent, {\r\n width: '800px',\r\n data: this.filterModel,\r\n panelClass: 'sipd-modal'\r\n\r\n });\r\n\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.updateDataSource(result);\r\n }\r\n });\r\n }\r\n\r\n onEditClick(row: any, event: Event) {\r\n let options = null;\r\n if(this.isPredicted(row)) {\r\n options = {predicted: true, startDate: row.startDate, referencePatrolId: row.id};\r\n }\r\n\r\n const componentName = this.componentName + '-edit';\r\n this.glOpenContainer(componentName, {id: row.id, model: row, options:options});\r\n }\r\n\r\n excludePredictedPatrol(patrolRepetition : PatrolRepetitionModel, patrolStartDate: number) {\r\n let excludedDate: number = DateUtils.getStartOfDayUTC(patrolStartDate);\r\n if(!patrolRepetition.excludedRepetitions) patrolRepetition.excludedRepetitions = [];\r\n patrolRepetition.excludedRepetitions.push(excludedDate.toString());\r\n\r\n this.patrolService.updatePatrolRepetition(patrolRepetition).pipe(first()).subscribe(() => {\r\n this.toastr.success(\"Ronda Prevista removida com sucesso\", \"Remover\");\r\n this.loadRecordsFromServer();\r\n },\r\n err => {\r\n this.logger.error(\"Falha ao Remover Ronda Prevista \" + JSON.stringify(err));\r\n this.toastr.error(\"Falha ao Remover Ronda Prevista\", \"Remover\");\r\n });\r\n }\r\n\r\n onDeleteClick(row: any, identifier: string, event: any) {\r\n let patrol = row as PatrolModel;\r\n if(this.isPredicted(patrol)) {\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: {\r\n msg: 'Remover ' + this.modelName + '?',\r\n title: 'Remover ' + this.modelName,\r\n okLabel: 'Remover',\r\n identifier: identifier,\r\n showIdentifier: true\r\n }\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.logger.debug('PatrolListComponent.onDeleteClick()');\r\n this.patrolService.getPatrolRepetitionByReferencePatrolId(row.id).pipe(first()).subscribe((patrolRepetitionModel : PatrolRepetitionModel)=>{ \r\n this.excludePredictedPatrol(patrolRepetitionModel, patrol.startDate);\r\n },(error: HttpErrorResponse) => {\r\n if(error.status === HttpError.NOT_FOUND){\r\n this.toastr.error('Erro ao recuperar a repetição de ronda');\r\n }\r\n this.logger.error(error);\r\n });\r\n }\r\n });\r\n } else {\r\n super.onDeleteClick(row, identifier, event);\r\n }\r\n }\r\n\r\n onPatrolRepetitionClick(row: EntityModel) {\r\n const dialogRepetitionRef = this.dialog.open(PatrolRepetitionDialogComponent, {\r\n width: '700px',\r\n panelClass: 'sipd-modal',\r\n data: row\r\n });\r\n\r\n dialogRepetitionRef.afterClosed().pipe(first()).subscribe( (patrolRepetitionModel:PatrolRepetitionModel) => {\r\n if(!patrolRepetitionModel) return;\r\n\r\n if(patrolRepetitionModel.active == false) { // Remover a repetição\r\n this.patrolService.deletePatrolRepetition(patrolRepetitionModel).pipe(first()).subscribe(() => {\r\n this.toastr.success(\"Repetição removida com sucesso.\");\r\n this.loadRecordsFromServer();\r\n },\r\n err =>{\r\n this.logger.error(\"Erro ao DESATIVAR regra de repetição \" + JSON.stringify(err));\r\n this.toastr.error(\"Falha ao remover repetição\");\r\n });\r\n }\r\n else { // criar ou atualizar a repetição\r\n if(patrolRepetitionModel.id) { // atualizar\r\n this.patrolService.updatePatrolRepetition(patrolRepetitionModel).pipe(first()).subscribe(() => {\r\n this.toastr.success(\"Repetição atualizada com sucesso\", \"Edição\");\r\n this.loadRecordsFromServer();\r\n },\r\n err => {\r\n this.logger.error(\"Erro ao EDITAR regra de repetição \" + JSON.stringify(err));\r\n this.toastr.error(\"Falha ao atualizar repetição\");\r\n });\r\n } else { // Criar\r\n this.patrolService.createPatrolRepetition(patrolRepetitionModel).pipe(first()).subscribe((createdPatrolRepetition) => {\r\n this.toastr.success(\"Repetição criada com sucesso\", \"Criação\");\r\n this.loadRecordsFromServer();\r\n },\r\n err =>{\r\n this.logger.error(\"Erro ao CRIAR regra de repetição \" + JSON.stringify(err));\r\n this.toastr.error(\"Falha ao criar repetição\");\r\n });\r\n }\r\n }\r\n }, err => {\r\n this.logger.error(\"Erro ao FECHAR o diálogo de repetições \" + JSON.stringify(err));\r\n });\r\n }\r\n\r\n protected getExportColValue(col, model):string[] {\r\n let values: string[] = [];\r\n if(col == 'startDate') {\r\n values.push(model[col] ? DateUtils.timestampToStringInDays(model[col]) : \"\");\r\n values.push(model[col] ? DateUtils.timestampToTimeString(model[col]) : \"\");\r\n }\r\n else if(col == 'priority') {\r\n if(model[col]) values.push('Sim');\r\n else values.push('Não');\r\n }\r\n else if(col == 'status') {\r\n values.push( this.getOperationStatus(model));\r\n }\r\n else if(col == 'patrolTeam.vehicle.plate') {\r\n if(model['patrolTeam'] && model['patrolTeam']['vehicle']) values.push(model['patrolTeam']['vehicle']['plate']);\r\n else values.push(\"\");\r\n }\r\n else if(col == 'patrolTeam.name') {\r\n if(model['patrolTeam']) values.push(model['patrolTeam']['name']);\r\n else values.push(\"\");\r\n }\r\n else if(col == 'patrolTeam.shift') {\r\n if(model['patrolTeam'] && model['patrolTeam']['shift']) values.push(ShiftDescription[model['patrolTeam']['shift']]);\r\n else values.push(\"\");\r\n }\r\n else if(col == 'patrolTeam.company.name') {\r\n if(model['patrolTeam'] && model['patrolTeam']['company']) values.push(model['patrolTeam']['company']['name']);\r\n else values.push(\"\");\r\n }\r\n else if(col == 'patrolTeam.serviceType') {\r\n values.push(this.getServiceTypeDescription(model));\r\n }\r\n else if(col == 'author') {\r\n if(model['author']) values.push(this.getUserNameLoginTitle(model['author']));\r\n else values.push(\"\");\r\n }\r\n else if(col == 'km') {\r\n if (model['stretchStartKM'] && model['stretchEndKM']) values.push(`${model['stretchStartKM']} - ${model['stretchEndKM']}`);\r\n else if (model['km']) values.push(model['km']);\r\n else values.push(\"\");\r\n }\r\n else {\r\n values.push(model[col]);\r\n }\r\n return values;\r\n }\r\n\r\n onExportManyClick() {\r\n if(this.selection.selected.length == 1) {\r\n this.onExportClick(this.selection.selected[0], null);\r\n }\r\n else {\r\n const columnsTitles = ['ID', 'Status', 'Nome', 'Data', 'Hora', 'Equipe', 'Bloqueada', 'Faixa', 'KM', 'Tipo de Inspeção', 'Empresa', 'Tipo de Serviço', 'Placa', 'Planejador'];\r\n this.exportXls(columnsTitles);\r\n }\r\n }\r\n\r\n onExportClick(row: any, event: any) {\r\n this.loadingListService.loadingOn();\r\n this.patrolService.exportPatrol(row).pipe(first()).subscribe(response => {\r\n this.loadingListService.loadingOff();\r\n this.renderComponent();\r\n\r\n let filename = `${row.identifier}.zip`;\r\n filename = filename.replace(/[\\x00-\\x1f?<>:\"/\\\\*|]/g, '_');\r\n saveAs(response, filename);\r\n },\r\n error =>{\r\n this.loadingListService.loadingOff();\r\n this.renderComponent();\r\n this.logger.error(error);\r\n });\r\n }\r\n\r\n canDelete(entity: EntityModel) {\r\n return this.authorizationService.isPatrolDeletionAllowed(entity);\r\n }\r\n\r\n isPredicted(entity: EntityModel){\r\n let operation: OperationModel = entity as OperationModel;\r\n if(operation?.identifier?.endsWith('PREVISTA')) {\r\n return true;\r\n }\r\n else{\r\n return false;\r\n }\r\n }\r\n\r\n canHasHistoricalTracking(operation: OperationModel){\r\n if(this.isPredicted(operation)) {\r\n return false;\r\n }\r\n return super.canHasHistoricalTracking(operation);\r\n }\r\n\r\n /**\r\n * Retorna a entidade em formato string, contendo só os campos visualizados na interface, para filtro.\r\n */\r\n protected getStringEntityForFilter(patrol: PatrolModel): string {\r\n const startDate = (patrol.startDate) ? this.formatDate(patrol.startDate) : '';\r\n const priority = patrol.priority ? 'sim': 'não';\r\n const vehiclePlate = (patrol.patrolTeam && patrol.patrolTeam.vehicle)? super.lowerAndTrimText(patrol.patrolTeam.vehicle.plate) : '';\r\n const operationStatus = super.lowerAndTrimText(this.getOperationStatus(patrol) + ((patrol.expired && patrol.status=='FINISHED')? ' (expirada)': ''));\r\n const teamName = (patrol.patrolTeam) ? super.lowerAndTrimText(patrol.patrolTeam.name) : '';\r\n const identifier = super.lowerAndTrimText(patrol.identifier);\r\n const name = super.lowerAndTrimText(patrol.name);\r\n const band = super.lowerAndTrimText(patrol.band);\r\n const km = patrol.stretchStartKM && patrol.stretchEndKM ? patrol.stretchStartKM + ' - ' +\r\n patrol.stretchEndKM : (patrol.km ? patrol.km : '');\r\n const company = patrol.patrolTeam && patrol.patrolTeam.company ? super.lowerAndTrimText(patrol.patrolTeam.company.name): '';\r\n const author = (patrol.author) ? super.lowerAndTrimText(this.getUserNameLoginTitle(patrol.author)) : '';\r\n const inspectionType = super.lowerAndTrimText(patrol.patrolInspectionType);\r\n const serviceType = super.lowerAndTrimText(this.getServiceTypeDescription(patrol));\r\n return company + ESP + band + ESP + identifier + ESP + startDate + ESP + priority + ESP + vehiclePlate + ESP + operationStatus + ESP + teamName + ESP + name + ESP + km + ESP + author + ESP + inspectionType + ESP + serviceType;\r\n }\r\n\r\n // Verifica os requisitos do model para arquivamento\r\n hasArchivalRequirements(patrol: PatrolModel){\r\n\r\n if (this.isPredicted(patrol)) {\r\n return false;\r\n }\r\n\r\n if(patrol.status != OperationStatus.FINISHED){ // Verifica se o status é Concluído\r\n return false;\r\n }\r\n\r\n if(this.authorizationService.isControl()){ // Se for perfil ANALYSIS_CCPD, verifica se as rondas foram criados por ele\r\n if(!patrol.author || patrol.author.id !== this.loggedUser.id.toString()){\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n archiveTooltipText() {\r\n return `${this.archiveButtonLabel} Ronda(s) Selecionada(s)`;\r\n }\r\n\r\n saveData(entity){\r\n // Confere se o usuário tem acesso apenas algumas lotações, antes de atualizar na lista \r\n let specificPlacements = this.storageService.getSpecificPlacementIds();\r\n const operation = entity as OperationModel;\r\n if(specificPlacements.length > 0 && !specificPlacements.includes(operation.placement.id)){\r\n return;\r\n }\r\n \r\n let patrol: PatrolModel = entity as PatrolModel;\r\n if (patrol.patrolRepetitionId){\r\n // Uma ronda que tem repetição foi atualizada, precisamos atualizar a lista inteira\r\n this.loadRecordsFromServer();\r\n return;\r\n }\r\n\r\n const oldModel: any = this.model.find( model => operation.id == model.id);\r\n if (oldModel)\r\n entity.lastSync = oldModel.lastSync;\r\n\r\n super.saveData(entity);\r\n }\r\n\r\n getServiceTypeDescription(operation: OperationModel): string {\r\n if (!operation) return ''; \r\n \r\n return operation.patrolTeam?.serviceType ? this. serviceTypeDescription[operation.patrolTeam.serviceType] : '';\r\n \r\n }\r\n\r\n /** Remoção de multiplas rondas, precisa analizar se é uma repetição de ronda ou não */\r\n onDeleteManyClick(rows: EntityModel[], event?: any ) {\r\n\r\n const dialogRef = this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data: { \r\n msg: 'Remover ' + rows.length + ' item(s) selecionado(s)?',\r\n title: 'Remover Ronda',\r\n okLabel: 'Remover',\r\n showIdentifier: false\r\n }\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe(result => {\r\n if (result) {\r\n this.logger.debug('PatrolListComponet.onDeleteManyClick()');\r\n let predictedPatrols: PatrolModel[] = []; \r\n let patrols: PatrolModel[] = []; \r\n \r\n rows.forEach((patrol:PatrolModel) => {\r\n if(patrol.identifier.includes(\"PREVISTA\")){\r\n predictedPatrols.push(patrol)\r\n }\r\n else{\r\n patrols.push(patrol);\r\n } \r\n });\r\n\r\n if(predictedPatrols.length > 0){\r\n this.updatePredictedPatrols(predictedPatrols);\r\n }\r\n \r\n if(patrols.length > 0){\r\n this.deleteSelectedEntities(patrols);\r\n this.postListDeleteProcess(patrols);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /** 1. Agrupa as rondas que pertecem a uma misma repetição \r\n * 2. Busca a lista de repetiçoes no backend\r\n * 3. Atualiza a lista de repetições a serem excluidas \r\n * @param predictedPatrols \r\n */\r\n updatePredictedPatrols(predictedPatrols: PatrolModel[]){\r\n this.logger.debug('PatrolListComponet.updatePredictedPatrols()');\r\n \r\n // Agrupa por ReferenceId\r\n let predictedPatrolsByReferenceIdMap: Map = new Map();\r\n for(let patrol of predictedPatrols){ \r\n if(!predictedPatrolsByReferenceIdMap.has(patrol.id)){\r\n const patrolsWithSameReferenceId = predictedPatrols.filter(p => {return p.id === patrol.id});\r\n predictedPatrolsByReferenceIdMap.set(patrol.id, patrolsWithSameReferenceId);\r\n }\r\n }\r\n\r\n let filter: PatrolRepetitionFilterModel = new PatrolRepetitionFilterModel();\r\n\r\n // Busca todas as repetições a partir dos ReferenceIds\r\n let ids = []; \r\n for (var [key, value] of predictedPatrolsByReferenceIdMap) {\r\n ids.push(key);\r\n }\r\n if(ids.length > 0){\r\n filter.referencePatrolIds = ids;\r\n filter.enable = true;\r\n }\r\n\r\n this.loadingOn();\r\n this.patrolService.loadPatrolRepetitionFromRestApi(filter).pipe(first()).subscribe((patrolRepetitions: PatrolRepetitionModel[]) => {\r\n \r\n if(patrolRepetitions.length>0){\r\n const patrolRepetitionsToUpdate: PatrolRepetitionModel[]=[];\r\n for (let [key, predictedPatrols] of predictedPatrolsByReferenceIdMap) {\r\n\r\n let patrolRepetition = patrolRepetitions.find((p)=> {return p.referencePatrolId === key})\r\n if(!patrolRepetition) return;\r\n\r\n predictedPatrols.forEach(patrol => {\r\n let excludedDate: number = DateUtils.getStartOfDayUTC(patrol.startDate);\r\n if(!patrolRepetition.excludedRepetitions) patrolRepetition.excludedRepetitions = [];\r\n patrolRepetition.excludedRepetitions.push(excludedDate.toString());\r\n });\r\n \r\n patrolRepetitionsToUpdate.push(patrolRepetition);\r\n }\r\n\r\n this.updatePatrolRepetitions(patrolRepetitionsToUpdate);\r\n }else {\r\n this.toastr.warning(\"Não existem dados das rondas repetidas selecionadas\");\r\n }\r\n },\r\n (error) => {\r\n this.logger.error('Erro ao carregar as rondas repetidas' + error);\r\n },\r\n () => {\r\n this.loadingOff();\r\n });\r\n }\r\n\r\n updatePatrolRepetitions(patrolRepetitions: PatrolRepetitionModel[]){\r\n this.logger.debug('PatrolListComponet.updatePatrolRepetitions()');\r\n this.patrolService.updatePatrolRepetitions( patrolRepetitions).pipe(first()).subscribe((patrolRepetition: PatrolRepetitionModel[]) => {\r\n this.toastr.success(\"Ronda(s) removida(s) com sucesso\", \"Remover\");\r\n this.loadRecordsFromServer();\r\n }, error => {\r\n this.logger.error(error);\r\n this.toastr.error('Não foi possível remover as rondas repetidas');\r\n },() => {\r\n });\r\n }\r\n\r\n getPropertyByPath(item: Object, property: string){\r\n switch (property) {\r\n case 'author': return this.lowerAndTrimText(this.getUserNameLoginTitle(item['author']));\r\n default: return super.getPropertyByPath(item, property);\r\n }\r\n }\r\n\r\n checkPermissions(){\r\n this.isHiddenButtonCreateEditPatrol = !this.authorizationService.userHasPermission(this.permission.CREATE_EDIT_PATROL);\r\n this.isHiddenButtonDeletePatrol = !this.authorizationService.userHasPermission(this.permission.DELETE_PATROL);\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, Inject, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { AuthorizationService } from '../../service/authorization/authorization.service';\r\nimport { StorageService } from '../../service/storage-service';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { SingleDataService } from '../../service/model/single.data.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { SORT_NAME_ASC, MAP_PAGE, FILL_DATA_PREFIX } from '../../common/constants';\r\nimport { RegistrationListComponent } from 'src/app/pages/registrations/registration-list-component';\r\nimport { ImportGeoKmlDialogComponent } from '../import-geo-kml-dialog/import-geo-kml-dialog.component';\r\nimport { SingleDataModel } from '../../model/singleData.model';\r\nimport { DcModel } from '../../model/dc.model';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { first } from 'rxjs/operators';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\n\r\n@Component({\r\n selector: 'app-single-data-list',\r\n templateUrl: './single-data-list.component.html',\r\n styleUrls: ['./single-data-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SingleDataListComponent extends RegistrationListComponent implements OnInit, OnDestroy {\r\n\r\n dataType: string;\r\n hasGeometry: boolean;\r\n hasNumber: boolean;\r\n\r\n constructor(logger: NGXLogger,\r\n protected singleDataService: SingleDataService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n protected dialog: MatDialog,\r\n public authorizationService: AuthorizationService,\r\n protected storageService: StorageService,\r\n protected toastr: ToastrService,\r\n protected changeDetector: ChangeDetectorRef,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, authorizationService, singleDataService, dialog, container.title, \"\", \"\",\r\n \"\", storageService, changeDetector, toastr, goldenLayout, container);\r\n\r\n const dataInfo = singleDataService.getDataInfo(container.title);\r\n this.dataType = dataInfo.type;\r\n this.tabTitle = dataInfo.groupLabel;\r\n this.title = dataInfo.titleLabel;\r\n this.modelName = dataInfo.modelLabel;\r\n this.hasGeometry = dataInfo.geometry;\r\n this.hasNumber = dataInfo.opsNumber;\r\n\r\n this.registrationType = this.dataType;\r\n\r\n this.sortOptions = SORT_NAME_ASC;\r\n if (this.dataType == \"Dc\") {\r\n this.sortOptions = \"description,ASC\";\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n this.logger.debug('SingleDataListComponent.ngOnInit()');\r\n if (this.hasGeometry) {\r\n this.displayedColumns = ['select', 'name', 'geometry'];\r\n } else if (this.hasNumber) {\r\n this.displayedColumns = ['select', 'name', 'opsNumber'];\r\n } else{\r\n this.displayedColumns = ['select', 'name'];\r\n }\r\n }\r\n\r\n loadRecordsFromServer() {\r\n this.logger.debug('SingleDataListComponent.loadRecordsFromServer()');\r\n\r\n let params: HttpParams = new HttpParams();\r\n params = params.append(\"metadata\", this.dataType);\r\n\r\n this.dataSource = new MatTableDataSource([]);\r\n \r\n this.loadingOn();\r\n this.singleDataService.loadFromRestApi(this.paginator? 0: null, this.paginator? this.initialPageSize: null, this.sortOptions, params).pipe(first()).subscribe( (result) => {\r\n this.updateDataSource(result);\r\n this.loadingOff();\r\n }, error => { \r\n this.logger.error(error); \r\n this.loadingOff();\r\n });\r\n }\r\n\r\n postLoadProcess() {\r\n if (this.dataType == \"Dc\") {\r\n this.model.forEach((dc: DcModel) => {\r\n DcModel.updateName(dc);\r\n });\r\n }\r\n\r\n this.model.forEach((element: SingleDataModel) => {\r\n element.type = this.dataType;\r\n });\r\n }\r\n\r\n protected getDefaultSortColumn(): string {\r\n if (this.dataType == \"Dc\") {\r\n return \"description\"\r\n }\r\n\r\n return \"name\";\r\n }\r\n\r\n onImportClick() {\r\n const importGeoKmlDialogComponent = this.dialog.open(ImportGeoKmlDialogComponent, {\r\n width: '800px',\r\n panelClass: 'sipd-modal',\r\n data: this.dataType\r\n }).afterClosed().pipe(first()).subscribe( (result: boolean) => {\r\n if (result) {\r\n this.loadRecordsFromServer();\r\n this.glEmitEvent(FILL_DATA_PREFIX + MAP_PAGE, {updatedLayer: this.dataType});\r\n }\r\n },\r\n error => {\r\n this.logger.error(error);\r\n this.toastr.error(error, 'Erro!');\r\n\r\n },\r\n () => importGeoKmlDialogComponent?.unsubscribe());\r\n}\r\n\r\n onPageChanged(event){\r\n if (environment.useServerPagination) {\r\n const pageIndex = event.pageIndex;\r\n \r\n let params: HttpParams = new HttpParams();\r\n params = params.append(\"metadata\", this.dataType);\r\n\r\n this.loadingOn();\r\n this.singleDataService.loadFromRestApi(pageIndex.toString(), this.pageSize, this.sortOptions, params).pipe(first()).subscribe( (result) => {\r\n this.updateDataSource(result);\r\n this.loadingOff();\r\n }, error => {\r\n this.logger.error(error);\r\n this.loadingOff();\r\n });\r\n }\r\n }\r\n\r\n onDeleteClick(row: EntityModel, identifier: string, event: any): void {\r\n\r\n const extraParams = new Map();\r\n extraParams.set('id', row.id);\r\n extraParams.set('metadata', this.dataType);\r\n\r\n super.onDeleteClick(row, identifier, event, extraParams);\r\n }\r\n\r\n protected deleteSelectedEntities(selectedEntities: EntityModel[]){\r\n \r\n const extraParams = new Map();\r\n extraParams.set('metadata', this.dataType);\r\n\r\n super.deleteSelectedEntities(selectedEntities, extraParams);\r\n }\r\n\r\n public postListDeleteProcess(rows: EntityModel[]): void {\r\n if (this.hasGeometry) {\r\n this.glEmitEvent(FILL_DATA_PREFIX + MAP_PAGE, {updatedLayer: this.dataType});\r\n }\r\n }\r\n\r\n /**\r\n * Retorna a entidade em formato string, contendo só os campos visualizados na interface, para filtro.\r\n */ \r\n protected getStringEntityForFilter(single: SingleDataModel): string {\r\n return super.lowerAndTrimText(single.name);\r\n }\r\n\r\n onLocationManyClick(){\r\n let list = [];\r\n this.selection.selected.forEach( (entity) => {\r\n if (this.hasLocation(entity))\r\n list.push(entity);\r\n });\r\n\r\n if (list.length > 0)\r\n this.glOpenContainer(MAP_PAGE, {layerDataList: list});\r\n else\r\n this.toastr.warning(\"Nenhuma camada georreferenciada selecionada.\");\r\n }\r\n\r\n onLocationClick(row: EntityModel){\r\n this.glOpenContainer(MAP_PAGE, {layerData: row});\r\n }\r\n\r\n hasLocation(row: EntityModel){\r\n if (row && row['geometry'])\r\n return true;\r\n return false;\r\n }\r\n}\r\n","
    \r\n
    \r\n
    {{title}}
    [ {{getListCount()}} ]\r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Nome {{element?.name}} Georreferenciado {{element?.geometry? 'Sim': 'Não'}} Valor {{element?.opsNumber}}
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n\r\n","import { Injectable } from \"@angular/core\";\r\nimport { OperationFilterModel } from \"src/app/general/filter-component/operation.filter.model\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VerificationFilterModel extends OperationFilterModel{\r\n \r\n // Utilizado para carregar as verificações de um determinado Evento\r\n // Não é utilizado na interface do filtro de verificações\r\n eventIds: string[];\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { OperationFilterModel } from 'src/app/general/filter-component/operation.filter.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class PatrolFilterModel extends OperationFilterModel{\r\n\r\n}\r\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, QueryList, ViewChild, ViewChildren } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { Subscription } from 'rxjs';\r\nimport { MarkerType, OperationType, SourceType, UserType } from '../../../app/model/enums.enum';\r\nimport { MarkerModel } from '../../../app/model/marker.model';\r\nimport { MarkersService } from '../../../app/service/model/markers.service';\r\n\r\nimport DateUtils from '../../service/util/date-utils';\r\nimport { UserModel } from 'src/app/model/user.model';\r\n\r\nimport * as moment from 'moment';\r\nimport { MarkerFilterModel } from './marker.filter.model';\r\nimport { first } from 'rxjs/operators';\r\n\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { ChannelModel } from 'src/app/model/channel.model';\r\nimport { PatrolTeamModel } from 'src/app/model/patrolteam.model';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { DEFAULT_PAGE_INDEX, MARKERS_PAGE_SIZE, SORT_TIMESTAMP_DESC } from 'src/app/common/constants';\r\nimport { LoadingListService } from '../../service/loading/loading-list.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\n\r\n// Enumerador explicitar se o componente mostrará\r\n// mensagens de canais ou da operação\r\nexport enum MessageComponentType {\r\n OPERATION_MESSAGE,\r\n CHANNEL_MESSAGE\r\n}\r\n\r\n// Estrutura para encapsular os dados passados para\r\n// o componente de mensagens\r\nexport class MessageComponentData {\r\n operationId: string;\r\n operationType: string;\r\n patrolTeamId: string;\r\n messageSender: UserModel;\r\n componentType: MessageComponentType;\r\n}\r\n\r\nexport enum FilterSelectionOptions {\r\n PATROL,\r\n VERIFICATION,\r\n NO_OPERATION\r\n}\r\n\r\n@Component({\r\n selector: 'app-message',\r\n templateUrl: './message.component.html',\r\n styleUrls: ['./message.component.scss']\r\n})\r\nexport class MessageComponent implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n title: string;\r\n\r\n messageText: string;\r\n filterSelection: FilterSelectionOptions[];\r\n filterSelectionOptions = FilterSelectionOptions;\r\n\r\n allMarkers: MarkerModel[];\r\n filteredMarkers: MarkerModel[];\r\n\r\n /** ENUMS */\r\n markerType = MarkerType;\r\n sourceType = SourceType;\r\n componentType = MessageComponentType;\r\n\r\n dateUtils = DateUtils;\r\n\r\n /** SUBSCRIPTIONS */\r\n private messageListChangeSubscription: Subscription;\r\n private onNewMarkerSubscription: Subscription;\r\n private onMarkerWebsocketConnectedSubscription: Subscription;\r\n\r\n loadingListService: LoadingListService = new LoadingListService();\r\n\r\n /** SCROLL CONTROLS */\r\n @ViewChild('matListElement', { read: ElementRef }) matListElement: ElementRef;\r\n @ViewChildren('item') matListItems: QueryList;\r\n\r\n @Output() parentTabUpdate: EventEmitter = new EventEmitter();\r\n\r\n @Output() showMessages = new EventEmitter();\r\n\r\n @Input() loggedUser: UserModel;\r\n @Input() currentTeam: PatrolTeamModel;\r\n @Input() currentOperation: OperationModel;\r\n @Input() markerFilterModel: MarkerFilterModel;\r\n @Input() selectedComponentType: MessageComponentType;\r\n @Input() selectedChannel: ChannelModel;\r\n\r\n private matList: any;\r\n private isNearBottom: boolean;\r\n showScrollDownButton: boolean;\r\n\r\n lastListItem: any;\r\n\r\n webUserColors: {} = {};\r\n webColorIndex: number = 0;\r\n\r\n /** PAGINATION CONTROL */\r\n currentPage: number;\r\n fetchedPages: number[];\r\n\r\n noMoreMessage: boolean;\r\n\r\n sendingMessage = false;\r\n \r\n mediaFilesProcessed: number; // usado ao carregar as mensagens do backend, para conhecer a quantidade de recuperados\r\n\r\n constructor(protected logger: NGXLogger,\r\n private markerService: MarkersService,\r\n protected storageService: StorageService,\r\n private sanitizer: DomSanitizer,\r\n private changeDetector: ChangeDetectorRef) { }\r\n\r\n //########################################################\r\n // INITIALIZATION METHODS\r\n //########################################################\r\n\r\n ngOnInit(): void {\r\n\r\n this.clearData();\r\n\r\n this.subscribeToNewMarkersNotifications();\r\n this.subscribeOnMarkerWebsocketConnected();\r\n\r\n this.title = this.selectedComponentType === MessageComponentType.CHANNEL_MESSAGE ? 'Selecione o canal' : 'Carregando...'\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.matList = this.matListElement.nativeElement; //Obtém o elemento HTML da lista de mensagens\r\n this.subscribeOnMessageListChange();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.messageListChangeSubscription?.unsubscribe();\r\n this.onNewMarkerSubscription?.unsubscribe();\r\n this.onMarkerWebsocketConnectedSubscription?.unsubscribe();\r\n this.loadingListService.destroy();\r\n }\r\n\r\n clearData() {\r\n this.noMoreMessage = false;\r\n this.isNearBottom = true;\r\n this.showScrollDownButton = false;\r\n this.currentPage = 1;\r\n this.messageText = '';\r\n this.fetchedPages = [];\r\n this.allMarkers = [];\r\n this.filteredMarkers = [];\r\n this.filterSelection = [FilterSelectionOptions.PATROL, FilterSelectionOptions.VERIFICATION, FilterSelectionOptions.NO_OPERATION];\r\n }\r\n\r\n getShowSpinner() {\r\n return this.loadingListService.getShowSpinner();\r\n }\r\n\r\n //########################################################\r\n // SUBSCRIPTIONS\r\n //########################################################\r\n\r\n /** Se inscreve para receber notificações de mudanças no componente de lista de mensagens */\r\n private subscribeOnMessageListChange() {\r\n this.messageListChangeSubscription = this.matListItems.changes.subscribe(() => {\r\n if (this.matListItems.length < MARKERS_PAGE_SIZE || this.matListItems.last != this.lastListItem) { // Verifica se a mensagem veio do websocket (último item muda) ou paginação\r\n if (this.isNearBottom) { // Se o scroll estava no final\r\n this.showScrollDownButton = false;\r\n this.scrollToPosition(this.matList.scrollHeight); // mantém o scroll no final \r\n this.lastListItem = this.matListItems.last; // Atualiza o novo último elemento da lista\r\n } else {\r\n this.showScrollDownButton = true; // Se não, mosta o botão flutuante mostrando que existem mensagens novas\r\n }\r\n this.renderComponent(); // Força atualização da tela\r\n }\r\n }, error => this.logger.error(error));\r\n }\r\n\r\n private subscribeOnMarkerWebsocketConnected() {\r\n this.onMarkerWebsocketConnectedSubscription = this.markerService.onMarkerWebsocketConnected().subscribe(() => {\r\n if (this.selectedChannel || this.currentOperation) {\r\n // TODO scuri Criar uma nova função que depois de carregar, mas um merge com o que já foi carregado, evitando mudanças no scroll e na tela\r\n this.loadMarkers();\r\n this.renderComponent();\r\n }\r\n }, (error: any) => this.logger.error(error));\r\n }\r\n\r\n /** Se inscreve como listener para receber notificações sempre que um marcador de mensagens for recebido */\r\n private subscribeToNewMarkersNotifications() {\r\n this.onNewMarkerSubscription = this.markerService.onNewMarkerReceived().subscribe((newMarker: MarkerModel) => {\r\n if (!newMarker) return;\r\n\r\n //this.logger.debug(\"NewMarkersNotifications\", newMarker);\r\n\r\n // ATENCAO: appointedLocation e serverTimestamp não vem no avro do websocket\r\n // id vem em objectId\r\n if (!newMarker.id) {\r\n newMarker.id = newMarker['objectId'];\r\n }\r\n // Location vem separada\r\n if (!newMarker.location) {\r\n newMarker.location = { lat: newMarker['latitude'], lng: newMarker['longitude'] };\r\n }\r\n\r\n if (this.selectedComponentType === MessageComponentType.CHANNEL_MESSAGE) { //Componente listando mensagens de um canal\r\n if (newMarker.channelId === this.markerFilterModel.channelId) { // Só atualiza se tive o mesmo id do canal\r\n this.insertMarker(newMarker);\r\n // comentado para teste de desempenho na produção\r\n //this.channelService.resetUnreadChannelMessagesdByUser(this.loggedUser.id, this.loggedUser.profileId, this.selectedChannel.id);\r\n }\r\n }\r\n else if (this.currentOperation) { // Componente listando mensagens de uma operação\r\n if (this.currentOperation.id === newMarker.operationId && this.currentOperation.type === newMarker.operationType) { // Só atualiza se a mensagem for desta operação\r\n this.insertMarker(newMarker);\r\n }\r\n }\r\n\r\n this.renderComponent();\r\n }), (error: any) => {\r\n let errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';\r\n this.logger.error(`[marker.component.ts] subscribeToNewMarkersNotifications: ${errMsg}`);\r\n };\r\n }\r\n\r\n private insertMarker(newMarker: MarkerModel, filter: boolean = true): boolean {\r\n this.prepareMarkersResources(newMarker);\r\n let lastMarker = this.allMarkers[this.allMarkers.length - 1]; // ordem cronológica\r\n const index = this.allMarkers.findIndex(m => m.uuid == newMarker.uuid);\r\n if (index != -1) {\r\n if (newMarker.fileId || !this.allMarkers[index].fileId) {\r\n this.allMarkers[index] = newMarker; // Se já tem aquele marcador apenas atualiza\r\n }\r\n }\r\n else {\r\n this.allMarkers.push(newMarker);\r\n }\r\n\r\n let sort: boolean = false;\r\n if (lastMarker && lastMarker.timestamp > newMarker.timestamp) {// Mensagem antiga, provavelmente ficou presa na lista de sincronismo, necessário reordenar\r\n this.sortMessages();\r\n sort = true;\r\n }\r\n\r\n if (filter) this.filterMarkers();\r\n \r\n return sort;\r\n }\r\n\r\n private sortMessages() {\r\n this.allMarkers.sort((marker1, marker2) => (marker1.timestamp < marker2.timestamp) ? -1 : 1);\r\n }\r\n\r\n //########################################################\r\n // LOAD METHODS\r\n //########################################################\r\n\r\n public updateTitle(title: string) {\r\n this.title = title;\r\n }\r\n\r\n //allOperationMarkers, quando verdadeiro não restringe o número de marcadores ao valor de MARKERS_PAGE_SIZE \r\n public loadMarkers(allOperationMarkers?: boolean) {\r\n this.loadingListService.loadingOn();\r\n this.markerService.loadFilteredListFromRestApi(DEFAULT_PAGE_INDEX, allOperationMarkers ? null : MARKERS_PAGE_SIZE, SORT_TIMESTAMP_DESC, this.markerFilterModel).pipe(first()).subscribe((markers: MarkerModel[]) => {\r\n if (markers && markers.length > 0) this.noMoreMessage = false; // Habilita o botão de paginação pq podem existir mais mensagens\r\n this.mediaFilesProcessed = 0;\r\n let mediaFiles = markers.filter(marker => (marker.markerType == MarkerType.IMAGE_MESSAGE || marker.markerType == MarkerType.AUDIO_MESSAGE || marker.markerType == MarkerType.VIDEO_MESSAGE)); \r\n markers.forEach((marker: MarkerModel) => {\r\n this.prepareMarkersResources(marker, mediaFiles.length);\r\n });\r\n this.allMarkers = markers.reverse(); // Não precisa ordenar, nem testar se já existe\r\n this.filterMarkers(); // Dados de marcadores do backend são sempre filtrados em memória pelo filtro do header \r\n //espera terminar o prepareMarkersResources, para avisar que finalizou a troca de canal e, consequentemente renderização do scroll no final da lista de mensagens\r\n if(mediaFiles.length==0){\r\n this.endScrollMode();\r\n }\r\n },\r\n error => this.logger.error(error),\r\n () => {\r\n this.loadingListService.loadingOff();\r\n this.renderComponent();\r\n });\r\n }\r\n\r\n paginateMarkers() {\r\n let filteredMarkersLength, newFilteredMarkersLength;\r\n const found = this.fetchedPages.find(fetchedPage => fetchedPage === this.currentPage); //Verifica se a página já está em memória\r\n this.scrollToPosition(0); // o scroll vai para o inicio da lista, assim permite que sejam apresentados as mensagens acima\r\n if (found) {\r\n return;\r\n }\r\n\r\n if (this.loadingListService.getSpinnerCount() > 0) return; // evita ser chamado mais de uma vez, enquanto fez a chamada para o backend\r\n\r\n this.loadingListService.loadingOn();\r\n this.markerService.loadFilteredListFromRestApi(this.currentPage, MARKERS_PAGE_SIZE, SORT_TIMESTAMP_DESC, this.markerFilterModel).pipe(first()).subscribe((markers: MarkerModel[]) => {\r\n if (markers.length === 0) {\r\n this.noMoreMessage = true;\r\n return;\r\n }\r\n\r\n this.fetchedPages.push(this.currentPage);\r\n this.currentPage++;\r\n\r\n markers.forEach(marker => {\r\n this.insertMarker(marker, false);\r\n })\r\n\r\n filteredMarkersLength = this.filteredMarkers.length;\r\n this.filterMarkers(); // Dados de marcadores do backend são sempre filtrados em memória pelo filtro do header\r\n\r\n newFilteredMarkersLength = this.filteredMarkers.length;\r\n },\r\n error => {\r\n this.logger.error(error)\r\n },\r\n () => {\r\n this.loadingListService.loadingOff();\r\n if (!this.noMoreMessage && newFilteredMarkersLength == filteredMarkersLength) {\r\n this.paginateMarkers();\r\n }\r\n this.renderComponent();\r\n });\r\n }\r\n\r\n private prepareMarkersResources(marker: MarkerModel, mediaFileLength?: number) {\r\n\r\n if (!marker || !marker.fileId) return;\r\n\r\n if (marker.markerType == MarkerType.IMAGE_MESSAGE || marker.markerType == MarkerType.AUDIO_MESSAGE || marker.markerType == MarkerType.VIDEO_MESSAGE) {\r\n\r\n this.markerService.loadFileById(marker.fileId).pipe(first()).subscribe(file => {\r\n if (file.body.size === 0) return;\r\n\r\n if (marker.markerType == MarkerType.IMAGE_MESSAGE) {\r\n var reader = new FileReader();\r\n reader.readAsDataURL(file.body);\r\n reader.onload = (_event) => {\r\n marker.fileUrl = reader.result;\r\n }\r\n } else if (marker.markerType == MarkerType.AUDIO_MESSAGE) {\r\n //Creates a new blob with the same data, but with the new type:audio.\r\n const blob = file.body.slice(0, file.body.size, \"audio/mpeg\");\r\n let audio = new Audio();\r\n audio.src = URL.createObjectURL(blob);\r\n audio.load();\r\n marker.fileUrl = this.sanitizer.bypassSecurityTrustUrl(audio.src);\r\n } else if (marker.markerType == MarkerType.VIDEO_MESSAGE) {\r\n //Creates a new blob with the same data, but with the new type:video.\r\n const blob = file.body.slice(0, file.body.size, \"video/mp4\");\r\n marker.fileUrl = this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(blob));\r\n }\r\n if(mediaFileLength) this.mediaFilesProcessed++;\r\n if(mediaFileLength && (this.mediaFilesProcessed == mediaFileLength)){\r\n this.endScrollMode();\r\n }\r\n }, error => {\r\n this.endScrollMode();\r\n this.logger.error(error);\r\n });\r\n \r\n }\r\n }\r\n\r\n textKeyPress(event) {\r\n if (event.keyCode == 13 && !event.shiftKey) {\r\n //Stops enter from creating a new line\r\n event.preventDefault();\r\n this.sendMessage();\r\n return true;\r\n }\r\n }\r\n\r\n sendMessage() {\r\n if (this.sendingMessage) return; // Evita duplicação de mensagens\r\n\r\n if (!this.messageText || this.messageText.trim() === '') return;\r\n\r\n this.sendingMessage = true;\r\n\r\n const newMarker = this.createMarker();\r\n\r\n const formElements = new Map();\r\n this.markerService.create(newMarker, formElements).pipe(first()).subscribe((marker: MarkerModel) => {\r\n //this.logger.info('Mensagem enviada: ', marker);\r\n this.insertMarker(marker);\r\n this.messageText = '';\r\n this.renderComponent();\r\n }, error => this.logger.error(error)\r\n , () => this.sendingMessage = false);\r\n }\r\n\r\n private createMarker(): MarkerModel {\r\n let marker: MarkerModel = new MarkerModel(); // marker.id é null porque ainda não foi criado no backend\r\n\r\n if (!this.loggedUser || !this.loggedUser.id) {\r\n this.loggedUser = this.storageService.getLocalUser();\r\n }\r\n\r\n const loggedUserProfile = this.storageService.getLocalProfile();\r\n const isProfessional = loggedUserProfile.userType == UserType.PROFESSIONAL;\r\n const isTeamChannel = this.selectedChannel.type == 'PD_MOBILE' || this.selectedChannel.type == 'PD_TECHNICAL';\r\n\r\n marker.message = this.messageText;\r\n marker.patrolTeamId = this.currentTeam?.id;\r\n marker.operationId = this.currentOperation?.id;\r\n marker.operationType = this.currentOperation?.type;\r\n marker.operationIdentifier = this.currentOperation?.identifier;\r\n marker.markerType = MarkerType.TEXT_MESSAGE;\r\n marker.sourceType = SourceType.WEB_APP;\r\n marker.priority = false;\r\n marker.location = { lat: 0, lng: 0 };\r\n marker.timestamp = moment().valueOf();\r\n marker.serverTimestamp = null; // Não temos essa estimativa na Web\r\n marker.userId = this.loggedUser.id.toString();\r\n marker.userName = isTeamChannel && !isProfessional? this.loggedUser.login: this.loggedUser.name; // Esconde o nome de quem não é profissional em canais de equipe\r\n marker.uuid = uuidv4();\r\n marker.channelId = this.selectedChannel?.id;\r\n marker.channelName = this.selectedChannel?.name;\r\n\r\n return marker;\r\n }\r\n\r\n filterSelectionChanged() {\r\n this.filterMarkers();\r\n }\r\n\r\n /** Método que filtra a lista total de marcadores do backend usando o filtro do header */\r\n private filterMarkers() {\r\n if (this.allMarkers) {\r\n this.filteredMarkers = this.allMarkers.filter((marker: MarkerModel) => {\r\n return this.checkFilterMatchMarker(marker);\r\n });\r\n }\r\n }\r\n\r\n private checkFilterMatchMarker(marker: MarkerModel): boolean {\r\n let filterMatch: boolean = false;\r\n this.filterSelection.forEach((filterOptions: FilterSelectionOptions) => {\r\n switch (filterOptions) {\r\n case FilterSelectionOptions.PATROL:\r\n filterMatch = (!filterMatch && marker.operationType && marker.operationType === OperationType.PATROL) ? true : filterMatch;\r\n break;\r\n case FilterSelectionOptions.VERIFICATION:\r\n filterMatch = (!filterMatch && marker.operationType && marker.operationType === OperationType.EVENT_VERIFICATION) ? true : filterMatch;\r\n break;\r\n case FilterSelectionOptions.NO_OPERATION:\r\n filterMatch = (!filterMatch && !marker.operationType) ? true : filterMatch;\r\n break;\r\n }\r\n });\r\n return filterMatch;\r\n }\r\n\r\n //########################################################\r\n // SCROLL CONTROL\r\n //########################################################\r\n\r\n private scrollToPosition(position: any): void {\r\n this.matList.scroll({\r\n top: position,\r\n left: 0,\r\n behavior: 'smooth'\r\n });\r\n }\r\n\r\n @HostListener('scroll', ['$event'])\r\n scrolled(event: any): void {\r\n this.isNearBottom = this.isUserNearBottom();\r\n\r\n if (this.isNearBottom) {\r\n this.showScrollDownButton = false;\r\n }\r\n }\r\n\r\n private isUserNearBottom(): boolean {\r\n const threshold = 50;\r\n const position = this.matList.scrollTop + this.matList.offsetHeight;\r\n const height = this.matList.scrollHeight;\r\n return position > height - threshold;\r\n }\r\n\r\n /* Tabela sugerida pelo Bello:\r\n hsla(344, 80, 73, 1), -- rosa (partner 2)\r\n hsla(190, 95, 48, 1), -- ciano claro\r\n hsla(145, 61, 61, 1), -- verde claro\r\n hsla(32, 95, 48, 1), -- laranja\r\n hsla(18, 91, 55, 1), -- marrom claro\r\n hsla(344, 80, 53, 1), -- rosa escuro (partner 1)\r\n hsla(190, 95, 28, 1), -- ciano escuro (self)\r\n hsla(145, 61, 41, 1), -- verde escuro\r\n hsla(32, 95, 28, 1), -- laranja escuro\r\n hsla(18, 91, 35, 1) -- marrom escuro\r\n */\r\n\r\n webColorsMax = 6;\r\n\r\n webColors: string[] = [\r\n \"hsl(145, 61%, 41%)\", // verde escuro\r\n \"hsl(32, 95%, 28%)\", // laranja escuro\r\n \"hsl(190, 95%, 48%)\", // ciano claro\r\n \"hsl(145, 61%, 61%)\", // verde claro\r\n \"hsl(32, 95%, 48%)\", // laranja\r\n \"hsl(18, 91%, 35%)\", // marrom escuro\r\n \"hsl(18, 91%, 55%)\", // marrom claro\r\n ];\r\n\r\n getUserColor(userId) {\r\n if (!userId) userId = \"null\";\r\n if (this.webUserColors[userId]) return this.webUserColors[userId];\r\n\r\n if (userId == \"null\") { this.webUserColors[userId] = \"#757575\"; return this.webUserColors[userId]; } // cinza\r\n\r\n if (userId == this.loggedUser?.id) { this.webUserColors[userId] = \"hsl(190, 95%, 28%)\"; return this.webUserColors[userId]; } // ciano escuro - self\r\n if (this.currentTeam && this.currentTeam.users[0] && this.currentTeam.users[0].id == userId) { this.webUserColors[userId] = \"hsl(344, 80%, 53%)\"; return this.webUserColors[userId]; } // rosa escuro - partner 1\r\n if (this.currentTeam && this.currentTeam.users[1] && this.currentTeam.users[1].id == userId) { this.webUserColors[userId] = \"hsl(344, 80%, 73%)\"; return this.webUserColors[userId]; } // rosa - partner 2\r\n if (this.currentTeam && this.currentTeam.users[2] && this.currentTeam.users[2].id == userId) { this.webUserColors[userId] = \"hsl(344, 80%, 73%)\"; return this.webUserColors[userId]; } // rosa - partner 3\r\n\r\n // Não é proffional, então é alguém da Web, pega a próxima cor disponível\r\n this.webUserColors[userId] = this.webColors[this.webColorIndex];\r\n\r\n // Incrementa cor disponível\r\n if (this.webColorIndex < this.webColorsMax)\r\n this.webColorIndex++;\r\n else\r\n this.webColorIndex = 0;\r\n\r\n return this.webUserColors[userId];\r\n }\r\n\r\n renderComponent() {\r\n // aguarda um pouco para outras tarefas terminarem\r\n setTimeout(() => {\r\n this.changeDetector.detectChanges();\r\n }, 250);\r\n }\r\n \r\n //Função que é chamada quando é carregado várias mensagens e precisa apresentar o scroll no final\r\n endScrollMode(){ \r\n setTimeout(() => { \r\n this.scrollToPosition(this.matList.scrollHeight);\r\n }, 500);\r\n }\r\n\r\n toggleShowMessages() {\r\n this.showMessages.emit();\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n
    \r\n Mensagens da Operação: {{ currentOperation?.identifier }} \r\n
    \r\n {{ title }}\r\n
    \r\n
    \r\n\r\n \r\n Canal: {{ title }} \r\n \r\n\r\n
    \r\n\r\n
    \r\n \r\n \r\n Rondas\r\n Verificações\r\n Sem Operação\r\n \r\n \r\n\r\n \r\n\r\n \r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n
    \r\n\r\n
    \r\n\r\n \r\n \r\n desktop_windows\r\n \r\n \r\n phone_iphone\r\n \r\n {{marker?.userName}}\r\n
    \r\n \r\n {{ marker?.operationIdentifier }}\r\n \r\n - \r\n \r\n {{ marker?.inspectionName }}\r\n \r\n
    \r\n
    \r\n\r\n \r\n {{marker?.message}}\r\n \r\n\r\n \r\n   [Áudio ainda não disponível] \r\n \r\n \r\n\r\n \r\n   [Video ainda não disponível] \r\n \r\n \r\n\r\n \r\n   [Imagem ainda não disponível] \r\n \r\n \r\n\r\n \r\n {{ marker?.location | LocationToString }} \r\n \r\n edit_location_alt\r\n \r\n \r\n {{dateUtils.timestampToStringInSeconds(marker?.timestamp)}} \r\n \r\n \r\n \r\n errorAtenção\r\n \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n","import { Component, Input, Output, EventEmitter, OnInit, ViewChild } from '@angular/core';\r\nimport { MatInput } from '@angular/material/input';\r\nimport * as moment from 'moment';\r\n\r\n@Component({\r\n selector: 'date-chooser',\r\n templateUrl: './date-chooser.component.html',\r\n styleUrls: ['./date-chooser.component.scss'],\r\n exportAs: 'dateChooserContext'\r\n})\r\nexport class DateChooserComponent {\r\n @ViewChild('input', { read: MatInput}) input: MatInput;\r\n\r\n _valueData: string;\r\n @Input()\r\n set valueData(data: string) {\r\n this._valueData = data;\r\n if (this._valueData && this._valueData != \"\") {\r\n // parametro strict removido da função moment, pois a data é exibida em dois formatos (DD/MM/YYYY, D/M/YYYY) para habilitar o botão dos filtros\r\n const formats = [\"D/M/YYYY\", \"DD/MM/YYYY\"]; \r\n this.date = moment(this._valueData.toString(), formats, true);\r\n this.invalid = !this.date.isValid();\r\n }else if(data === \"\"){\r\n this.reset();\r\n }\r\n }\r\n\r\n get valueData() {\r\n return this._valueData;\r\n }\r\n\r\n _readonly: boolean;\r\n @Input()\r\n set readonly(val: boolean) {\r\n this._readonly = val;\r\n }\r\n\r\n _disabled: boolean;\r\n @Input()\r\n set disabled(val: boolean) {\r\n this._disabled = val;\r\n }\r\n \r\n _required: boolean = false;\r\n @Input()\r\n set required(val: boolean) {\r\n this._required = val;\r\n }\r\n\r\n // TODO scuri Explicar porque isso é necessário? Se remover para de funcionar\r\n @Output() valueDataChange = new EventEmitter();\r\n\r\n @Output() dateChangedEvent = new EventEmitter();\r\n\r\n @Input() placeholder: String;\r\n\r\n date: moment.Moment;\r\n\r\n invalid: boolean = false;\r\n\r\n onKeyUpEvent(event) {\r\n let dateString = event.target.value;\r\n if (dateString != \"\") {\r\n this.date = moment(dateString, \"D/M/YYYY\", true);\r\n this.invalid = !this.date.isValid();\r\n if (!this.invalid) {\r\n this.valueDataChange.emit(this._valueData);\r\n this.dateChangedEvent.emit(this.date);\r\n }\r\n }\r\n else {\r\n this.invalid = this._required ? true : false;\r\n }\r\n }\r\n\r\n onKeyPressEvent(event){\r\n if (event.which < 47 || event.which > 57) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n onDateChangeEvent() {\r\n this._valueData = this.date.format(\"D/M/yyyy\");\r\n this.valueDataChange.emit(this._valueData);\r\n this.dateChangedEvent.emit(this.date);\r\n }\r\n \r\n reset(){\r\n if(this.input) this.input.value = '';\r\n }\r\n}\r\n","\r\n {{ placeholder }}\r\n \r\n \r\n \r\n \r\n Campo Obrigatório\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport * as moment from 'moment';\r\nimport { PatrolTeamModel } from '../../model/patrolteam.model';\r\nimport { VehicleModel } from '../../model/vehicle.model';\r\nimport { UserModel } from '../../model/user.model';\r\nimport { CompanyModel } from '../../model/company.model';\r\nimport { OperationModel } from '../../model/operation.model';\r\nimport { PatrolModel } from '../../model/patrol.model';\r\nimport { InspectionModel } from '../../model/inspection.model';\r\nimport { LocationModel } from '../../model/location.model';\r\nimport { PlacementModel } from 'src/app/model/placement.model';\r\nimport { EventModel } from 'src/app/model/event.model';\r\nimport {\r\n EventStatus,\r\n SourceType\r\n} from 'src/app/model/enums.enum';\r\nimport { VerificationModel } from 'src/app/model/verification.model';\r\nimport { EventMainActionModel } from 'src/app/model/event.main.action.model';\r\nimport { ResultsModel } from 'src/app/model/results.model';\r\nimport { SignalModel } from 'src/app/model/signal.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TestDataGeneratorService {\r\n\r\n /**\r\n * Retona um exemplo de alerta, em formato JSON, de acordo com o tipo especificado.\r\n * O formato do JSON foi simplificado para só conter os dados efetivamente usados pela central de alertas.\r\n *\r\n * @param alertType tipo de alerta (numérico).\r\n */\r\n public getSampleAlertInJson(alertType: number) : string {\r\n switch (alertType) {\r\n case 1: return \"{\" + // Desvio de rota - Prioridade MÉDIA (2)\r\n \"\\\"objectId\\\" : \\\"1eee\\\",\"+\r\n \"\\\"timestamp\\\" : \" + moment().valueOf() + \",\"+\r\n \"\\\"latitude\\\" : -22.9111206,\"+\r\n \"\\\"longitude\\\" : -43.1062025,\"+\r\n \"\\\"sourceType\\\" : \\\"MOBILE_APP\\\",\"+\r\n \"\\\"operationId\\\" : \\\"5ed91c29b15bfa00015bd0a2\\\",\"+\r\n \"\\\"operationType\\\" : \\\"PATROL\\\",\"+\r\n \"\\\"patrolTeam\\\" : {\"+\r\n \"\\\"name\\\" : \\\"Equipe Julio\\\",\"+\r\n \" \\\"vehicle\\\" : {\"+\r\n \" \\\"plate\\\" : \\\"QAM-2220\\\"\"+\r\n \" },\"+\r\n \" \\\"shift\\\" : \\\"MORNING\\\",\"+\r\n \" \\\"users\\\" : [ \"+\r\n \" {\"+\r\n \" \\\"login\\\" : \\\"juliock\\\",\"+\r\n \" \\\"name\\\" : \\\"Julio Cesar\\\",\"+\r\n \" \\\"email\\\" : \\\"juliock@gmail.com\\\",\"+\r\n \" \\\"userType\\\" : \\\"PROFESSIONAL\\\"\"+\r\n \" }, \"+\r\n \" {\"+\r\n \" \\\"name\\\" : \\\"Jose Antonio\\\"\"+\r\n \" }\"+\r\n \" ],\"+\r\n \" \\\"company\\\" : {\"+\r\n \" \\\"name\\\" : \\\"GPS\\\",\"+\r\n \" \\\"phone\\\" : \\\"21 2524-3454\\\"\"+\r\n \" },\"+\r\n \" \\\"patrolCoordinator\\\" : {\"+\r\n \" \\\"name\\\" : \\\"ALBERTO PINTO DE MENDONCA\\\"\"+\r\n \" },\"+\r\n \" \\\"placement\\\" : {\"+\r\n \" \\\"name\\\" : \\\"lotação\\\",\"+\r\n \" \\\"gs\\\" : \\\"SSPCO\\\"\"+\r\n \" },\"+\r\n \" \\\"state\\\" : \\\"RJ\\\"\"+\r\n \"},\"+\r\n \"\\\"alertType\\\" : \\\"ROUTE_DEVIATION\\\",\"+\r\n \"\\\"description\\\" : \\\"Desvio de rota detectado\\\",\"+\r\n \"\\\"alertPriority\\\" : \\\"MEDIUM\\\"\"+\r\n \"}\";\r\n case 2: return \"{\"+ // Comunicação normal de ronda - Prioridade BAIXA (3)\r\n \"\\\"objectId\\\" : \\\"2eee\\\",\"+\r\n \"\\\"timestamp\\\" : \"+ moment().valueOf() + \",\"+\r\n \"\\\"latitude\\\" : -22.9109491,\"+\r\n \"\\\"longitude\\\" : -43.1060948,\"+\r\n \"\\\"sourceType\\\" : \\\"MOBILE_APP\\\",\"+\r\n \"\\\"operationId\\\" : \\\"5ed6563bb15bfa00015bd060\\\",\"+\r\n \"\\\"operationType\\\" : \\\"PATROL\\\",\"+\r\n \"\\\"patrolTeam\\\" : {\"+\r\n \" \\\"name\\\" : \\\"equipe julio vigilante\\\",\"+\r\n \" \\\"vehicle\\\" : {\"+\r\n \" \\\"plate\\\" : \\\"QQL-6979\\\"\"+\r\n \" },\"+\r\n \" \\\"shift\\\" : \\\"NIGHT\\\",\"+\r\n \" \\\"users\\\" : [ \"+\r\n \" {\"+\r\n \" \\\"name\\\" : \\\"julio vigilante\\\"\"+\r\n \" }, \"+\r\n \" null\"+\r\n \" ],\"+\r\n \" \\\"company\\\" : {\"+\r\n \" \\\"name\\\" : \\\"GPS-ENGESEG\\\",\"+\r\n \" \\\"phone\\\" : \\\"12 2139-2900\\\"\"+\r\n \" },\"+\r\n \" \\\"patrolCoordinator\\\" : {\"+\r\n \" \\\"name\\\" : \\\"ALBERTO PINTO DE MENDONCA\\\"\"+\r\n \" },\"+\r\n \" \\\"placement\\\" : {\"+\r\n \" \\\"name\\\" : \\\"lotação\\\",\"+\r\n \" \\\"gs\\\" : \\\"SSPCO\\\"\"+\r\n \" },\"+\r\n \" \\\"state\\\" : \\\"RJ\\\"\"+\r\n \"},\"+\r\n \"\\\"alertType\\\" : \\\"ATTENTION_PATROL_CHECK\\\",\"+\r\n \"\\\"description\\\" : \\\"Mensagem Ronda\\\",\"+\r\n \"\\\"alertPriority\\\" : \\\"LOW\\\"\"+\r\n \"}\";\r\n case 3: return \"{\"+ // Comunicação prioritária de ronda - Prioridade ALTA (1)\r\n \"\\\"objectId\\\" : \\\"2eee\\\",\"+\r\n \"\\\"timestamp\\\" : \" + moment().valueOf() + \",\"+\r\n \"\\\"latitude\\\" : -22.9568701010899,\"+\r\n \"\\\"longitude\\\" : -43.1980871491438,\"+\r\n \"\\\"sourceType\\\" : \\\"MOBILE_APP\\\",\"+\r\n \"\\\"operationId\\\" : \\\"5ed8f7ffb15bfa00015bd09c\\\",\"+\r\n \"\\\"operationType\\\" : \\\"PATROL\\\",\"+\r\n \"\\\"patrolTeam\\\" : {\"+\r\n \" \\\"name\\\" : \\\"equipe julio vigilante\\\",\"+\r\n \" \\\"vehicle\\\" : {\"+\r\n \" \\\"plate\\\" : \\\"QQL-6979\\\"\"+\r\n \" },\"+\r\n \" \\\"shift\\\" : \\\"NIGHT\\\",\"+\r\n \" \\\"users\\\" : [ \"+\r\n \" {\"+\r\n \" \\\"name\\\" : \\\"julio vigilante\\\"\"+\r\n \" }, \"+\r\n \" null\"+\r\n \" ],\"+\r\n \" \\\"company\\\" : {\"+\r\n \" \\\"name\\\" : \\\"GPS-ENGESEG\\\",\"+\r\n \" \\\"phone\\\" : \\\"12 2139-2900\\\"\"+\r\n \" },\"+\r\n \" \\\"patrolCoordinator\\\" : {\"+\r\n \" \\\"name\\\" : \\\"ALBERTO PINTO DE MENDONCA\\\"\"+\r\n \" },\"+\r\n \" \\\"placement\\\" : {\"+\r\n \" \\\"name\\\" : \\\"lotação\\\",\"+\r\n \" \\\"gs\\\" : \\\"SSPCO\\\"\"+\r\n \" },\"+\r\n \" \\\"state\\\" : \\\"RJ\\\"\"+\r\n \"},\"+\r\n \"\\\"alertType\\\" : \\\"ATTENTION_PATROL_CHECK\\\",\"+\r\n \"\\\"description\\\" : \\\"Mensagem Ronda\\\",\"+\r\n \"\\\"alertPriority\\\" : \\\"HIGH\\\"\"+\r\n \"}\";\r\n default: return \"{\"+// Pânico - Prioridade MÁXIMA (0)\r\n \"\\\"objectId\\\" : \\\"2eee\\\",\"+\r\n \"\\\"timestamp\\\" : \" + moment().valueOf() +\",\"+\r\n \"\\\"latitude\\\" : -22.938677,\"+\r\n \"\\\"longitude\\\" : -43.1934483,\"+\r\n \"\\\"sourceType\\\" : \\\"MOBILE_APP\\\",\"+\r\n \"\\\"operationId\\\" : \\\"5ed7eea1b15bfa00015bd090\\\",\"+\r\n \"\\\"operationType\\\" : \\\"PATROL\\\",\"+\r\n \"\\\"patrolTeam\\\" : {\"+\r\n \" \\\"name\\\" : \\\"equipe julio vigilante\\\",\"+\r\n \" \\\"vehicle\\\" : {\"+\r\n \" \\\"plate\\\" : \\\"QQL-6979\\\"\"+\r\n \" },\"+\r\n \" \\\"shift\\\" : \\\"NIGHT\\\",\"+\r\n \" \\\"users\\\" : [ \"+\r\n \" {\"+\r\n \" \\\"name\\\" : \\\"julio vigilante\\\"\"+\r\n \" }, \"+\r\n \" null\"+\r\n \" ],\"+\r\n \" \\\"company\\\" : {\"+\r\n \" \\\"name\\\" : \\\"GPS-ENGESEG\\\",\"+\r\n \" \\\"phone\\\" : \\\"12 2139-2900\\\"\"+\r\n \" },\"+\r\n \" \\\"patrolCoordinator\\\" : {\"+\r\n \" \\\"name\\\" : \\\"ALBERTO PINTO DE MENDONCA\\\"\"+\r\n \" },\"+\r\n \" \\\"placement\\\" : {\"+\r\n \" \\\"name\\\" : \\\"lotação\\\",\"+\r\n \" \\\"gs\\\" : \\\"SSPCO\\\"\"+\r\n \" },\"+\r\n \" \\\"state\\\" : \\\"RJ\\\"\"+\r\n \"},\"+\r\n \"\\\"alertType\\\" : \\\"PANIC\\\",\"+\r\n \"\\\"description\\\" : \\\"Mensagem Ronda\\\",\"+\r\n \"\\\"alertPriority\\\" : \\\"HIGH\\\"\"+\r\n \"}\";\r\n }\r\n }\r\n\r\n public getSampleOperation(): OperationModel {\r\n const patrol = new PatrolModel();\r\n patrol.patrolTeam = this.getSamplePatrolTeam(); \r\n patrol.author = this.getSampleUser(3);\r\n patrol[\"operationType\"] = \"PATROL\";\r\n const patrolStart = moment(\"2020-05-20 10:30:26.555\")\r\n patrol.startDate = patrolStart.valueOf();\r\n patrol.id = \"5ece8646e7e790000145e351\";\r\n patrol.status = \"SENT\";\r\n patrol.inspections = [this.getSampleInspection(1), this.getSampleInspection(2), this.getSampleInspection(3)];\r\n return patrol;\r\n }\r\n\r\n getSampleLocationModel(locationIndex: number): LocationModel {\r\n switch (locationIndex) {\r\n case 1: {\r\n const location = new LocationModel();\r\n location.latitude = \"-22.9565543\";\r\n location.longitude = \"-43.1963033\";\r\n return location;\r\n }\r\n case 2: {\r\n const location = new LocationModel();\r\n location.latitude = \"-22.9573375\";\r\n location.longitude = \"-43.1963606\";\r\n return location;\r\n }\r\n case 3: {\r\n const location = new LocationModel();\r\n location.latitude = \"-22.956821\";\r\n location.longitude = \"-43.1977125\";\r\n return location;\r\n }\r\n }\r\n }\r\n\r\n getSampleInspection(inspectionIndex: number): InspectionModel {\r\n switch (inspectionIndex) {\r\n case 1: {\r\n const inspection = new InspectionModel();\r\n inspection.identifier = \"0_5ece8646e7e790000145e351\";\r\n inspection.name = \"Ponto 1 - Clínica\";\r\n inspection.location = this.getSampleLocationModel(1);\r\n inspection.activities = [\"Tirar foto\"];\r\n inspection.type = \"CRITICAL_POINT\";\r\n return inspection;\r\n }\r\n case 2: {\r\n const inspection = new InspectionModel();\r\n inspection.identifier = \"1_5ece8646e7e790000145e351\";\r\n inspection.name = \"Ponto 2 - Fuska Bar\";\r\n inspection.location = this.getSampleLocationModel(2);\r\n inspection.activities = [\"Tirar foto\", \"Gravar áudio\"];\r\n inspection.type = \"CRITICAL_POINT\";\r\n return inspection;\r\n }\r\n case 3: {\r\n const inspection = new InspectionModel();\r\n inspection.identifier = \"2_5ece8646e7e790000145e351\";\r\n inspection.name = \"Base\";\r\n inspection.location = this.getSampleLocationModel(3);\r\n inspection.type = \"BASE\";\r\n return inspection;\r\n }\r\n }\r\n }\r\n\r\n public getSampleVehicle(): VehicleModel {\r\n const vehicle = new VehicleModel();\r\n vehicle.plate = \"QAO-2028\";\r\n vehicle.model = \"Amarok\";\r\n vehicle.company = this.getSampleCompany();\r\n return vehicle;\r\n }\r\n\r\n public getSampleUser(userIndex: number): UserModel {\r\n switch (userIndex) {\r\n case 1: {\r\n const user1 = new UserModel();\r\n user1.login = \"marcos\";\r\n user1.name = \"Marcos Antonio Caldas\";\r\n user1.cpf = \"000.000.000-00\";\r\n user1.mobilePhone = \"21 99696-3704\";\r\n user1.email = \"marcos@gmail.com\"; \r\n user1.patrolTeamId = \"5ec2f72b9b44b70001588e4b\";\r\n return user1;\r\n }\r\n case 2: {\r\n const user2 = new UserModel();\r\n user2.login = \"mariaf\";\r\n user2.name = \"Maria Fernanda Pires\";\r\n user2.cpf = \"000.000.000-00\";\r\n user2.mobilePhone = \"21 99343-5334\";\r\n user2.email = \"mariafernanda@email.com\"; \r\n user2.patrolTeamId = \"5ec2f72b9b44b70001588e4b\";\r\n return user2;\r\n }\r\n case 3: {\r\n const user2 = new UserModel();\r\n user2.login = \"UV60\";\r\n user2.name = \"EDSON CARDOSO\";\r\n user2.cpf = \"000.000.000-00\";\r\n user2.mobilePhone = \"21 97502-0000\";\r\n user2.email = \"edson@transpetro.com.br\"; \r\n return user2;\r\n }\r\n }\r\n }\r\n\r\n public getSamplePatrolTeam(): PatrolTeamModel {\r\n const team = new PatrolTeamModel();\r\n team.name = \"Team Leonardo\";\r\n team.vehicle = this.getSampleVehicle();\r\n team.shift = \"NIGHT\";\r\n team.users = [this.getSampleUser(1), this.getSampleUser(2)];\r\n team.patrolCoordinator = this.getSampleUser(3);\r\n return team;\r\n }\r\n\r\n public getSamplePlacement(): PlacementModel {\r\n const placement = new PlacementModel()\r\n placement.regional = \"OSBSUL\";\r\n placement.gs = \"RJMGESBA\"\r\n placement.name = placement.regional + ' / ' + placement.gs;\r\n return placement;\r\n }\r\n\r\n public getSampleCompany(): CompanyModel {\r\n const company = new CompanyModel();\r\n company.cnpj = \"00.000.000/0000-00\";\r\n company.name = \"GPS\";\r\n company.address = \"Rua Sá Freire, 70 - São Cristóvão, Rio de Janeiro - RJ\";\r\n company.phone = \"21 2524-0000\";\r\n company.email = \"gps@gmail.com\";\r\n return company;\r\n }\r\n\r\n /**\r\n * Retorna um exemplo de sinal em JSON. De acordo com o parâmetro fornecido, retorna modelos\r\n * diferentes de sinais.\r\n *\r\n * @param signalType inteiro referenciando o tipo de sinal desejado.\r\n */\r\n public getSampleSignalInJson(signalType: number) : string {\r\n switch (signalType) {\r\n case 1: return \"{\"+ // Sem ronda\r\n \"\\\"mobileObjectId\\\": \\\"123570dc9f60a77c\\\",\"+\r\n \"\\\"timestamp\\\": \" + moment().valueOf() +\",\"+\r\n \"\\\"latitude\\\": -22.9564035,\"+\r\n \"\\\"longitude\\\": -43.1968648,\"+\r\n \"\\\"sourceType\\\": \\\"MOBILE_APP\\\",\"+\r\n \"\\\"operationId\\\": null,\"+\r\n \"\\\"operationType\\\": null,\"+\r\n \"\\\"teamId\\\": \\\"5ec2f72b9b44b70001588e4b\\\"\"+\r\n \"}\";\r\n case 2: return \"{\"+ // Sem ronda, mesmo mobileId, outra equipe e outra posição\r\n \"\\\"mobileObjectId\\\": \\\"123570dc9f60a77c\\\",\"+\r\n \"\\\"timestamp\\\": \" + moment().valueOf() +\",\"+\r\n \"\\\"latitude\\\": -22.9566035,\"+\r\n \"\\\"longitude\\\": -43.1970648,\"+\r\n \"\\\"sourceType\\\": \\\"MOBILE_APP\\\",\"+\r\n \"\\\"operationId\\\": null,\"+\r\n \"\\\"operationType\\\": null,\"+\r\n \"\\\"teamId\\\": \\\"5e458d2262332541c7ebc8da\\\"\"+\r\n \"}\";\r\n case 3: return \"{\"+ // Com ronda\r\n \"\\\"mobileObjectId\\\": \\\"123570dc9f60a77c\\\",\"+\r\n \"\\\"timestamp\\\": \" + moment().valueOf() +\",\"+\r\n \"\\\"latitude\\\": -22.9564035,\"+\r\n \"\\\"longitude\\\": -43.1968648,\"+\r\n \"\\\"sourceType\\\": \\\"MOBILE_APP\\\",\"+\r\n \"\\\"operationId\\\": \\\"5ecc5288e7e790000145e318\\\",\"+\r\n \"\\\"operationType\\\": \\\"PATROL\\\",\"+\r\n \"\\\"teamId\\\": \\\"5ec2f72b9b44b70001588e4b\\\"\"+\r\n \"}\";\r\n case 4: return \"{\"+ // Com verificação\r\n \"\\\"mobileObjectId\\\": \\\"123570dc9f60a77c\\\",\"+\r\n \"\\\"timestamp\\\": \" + moment().valueOf() +\",\"+\r\n \"\\\"latitude\\\": -22.9564035,\"+\r\n \"\\\"longitude\\\": -43.1968648,\"+\r\n \"\\\"sourceType\\\": \\\"MOBILE_APP\\\",\"+\r\n \"\\\"operationId\\\": \\\"5ecc59ab3cc6920001385b74\\\",\"+\r\n \"\\\"operationType\\\": \\\"EVENT_VERIFICATION\\\",\"+\r\n \"\\\"teamId\\\": \\\"5ec2f72b9b44b70001588e4b\\\"\"+\r\n \"}\";\r\n default: return \"{\"+ // Sem ronda, um pouco deslocado\r\n \"\\\"mobileObjectId\\\": \\\"123570dc9f60a77c\\\",\"+\r\n \"\\\"timestamp\\\": \" + moment().valueOf() +\",\"+\r\n \"\\\"latitude\\\": -22.9565035,\"+\r\n \"\\\"longitude\\\": -43.1969648,\"+\r\n \"\\\"sourceType\\\": \\\"MOBILE_APP\\\",\"+\r\n \"\\\"operationId\\\": null,\"+\r\n \"\\\"operationType\\\": null,\"+\r\n \"\\\"teamId\\\": \\\"5ec2f72b9b44b70001588e4b\\\"\"+\r\n \"}\";\r\n }\r\n }\r\n\r\n /**\r\n * Carga inicial de dados históricos - O dado mais recente deve estar no início e o mais antigo no fim\r\n */\r\n public getSampleHistoricalTestData() {\r\n var now = moment();\r\n\r\n var posNow = new SignalModel();\r\n posNow.timestamp = now.valueOf();\r\n posNow.latitude = -22.95662869;\r\n posNow.longitude = -43.1973716;\r\n posNow.mobileObjectId = \"12e570dc9f60a77c\";\r\n posNow.operationId = \"5ec6984225c93d6e6ca2bd6b\",\r\n posNow.operationType = \"PATROL\";\r\n posNow.sourceType = \"MOBILE_APP\";\r\n posNow.teamId = \"5ec2f72b9b44b70001588e4b\";\r\n\r\n var pos1minAgo = new SignalModel();\r\n pos1minAgo.timestamp = now.subtract(1, \"minute\").valueOf();\r\n pos1minAgo.latitude = -22.95663869;\r\n pos1minAgo.longitude = -43.1974716;\r\n pos1minAgo.mobileObjectId = \"12e570dc9f60a77c\";\r\n pos1minAgo.operationId = \"5ec6984225c93d6e6ca2bd6b\",\r\n pos1minAgo.operationType = \"PATROL\";\r\n pos1minAgo.sourceType = \"MOBILE_APP\";\r\n pos1minAgo.teamId = \"5ec2f72b9b44b70001588e4b\";\r\n\r\n var pos2minAgo = new SignalModel();\r\n pos2minAgo.timestamp = now.subtract(1, \"minute\").valueOf();\r\n pos2minAgo.latitude = -22.95664869;\r\n pos2minAgo.longitude = -43.1975716;\r\n pos2minAgo.mobileObjectId = \"12e570dc9f60a77c\";\r\n pos2minAgo.operationId = \"5ec6984225c93d6e6ca2bd6b\",\r\n pos2minAgo.operationType = \"PATROL\";\r\n pos2minAgo.sourceType = \"MOBILE_APP\";\r\n pos2minAgo.teamId = \"5ec2f72b9b44b70001588e4b\";\r\n\r\n var pos3minAgo = new SignalModel();\r\n pos3minAgo.timestamp = now.subtract(1, \"minute\").valueOf();\r\n pos3minAgo.latitude = -22.95665869;\r\n pos3minAgo.longitude = -43.1976716;\r\n pos3minAgo.mobileObjectId = \"12e570dc9f60a77c\";\r\n pos3minAgo.operationId = \"5ec6984225c93d6e6ca2bd6b\",\r\n pos3minAgo.operationType = \"PATROL\";\r\n pos3minAgo.sourceType = \"MOBILE_APP\";\r\n pos3minAgo.teamId = \"5ec2f72b9b44b70001588e4b\";\r\n\r\n var pos4minAgo = new SignalModel();\r\n pos4minAgo.timestamp = now.subtract(1, \"minute\").valueOf();\r\n pos4minAgo.latitude = -22.95666869;\r\n pos4minAgo.longitude = -43.1977716;\r\n pos4minAgo.mobileObjectId = \"12e570dc9f60a77c\";\r\n pos4minAgo.operationId = \"5ec6984225c93d6e6ca2bd6b\",\r\n pos4minAgo.operationType = \"PATROL\";\r\n pos4minAgo.sourceType = \"MOBILE_APP\";\r\n pos4minAgo.teamId = \"5ec2f72b9b44b70001588e4b\";\r\n\r\n return [ posNow, pos1minAgo, pos2minAgo, pos3minAgo, pos4minAgo ];\r\n }\r\n\r\n /**\r\n * Simula o recebimento de sinais em tempo real no rastro histórico.\r\n *\r\n * @param callNumber a cada valor - de 1 a 5 - o método irá retornar um dado histórico diferente,\r\n * simulando a passagem do tempo\r\n */\r\n public getSampleRealTimeSignal(callNumber: number) {\r\n switch (callNumber) {\r\n case 5: {\r\n var pos5 = new SignalModel();\r\n pos5.timestamp = moment().valueOf();\r\n pos5.latitude = -22.95602869;\r\n pos5.longitude = -43.1973716;\r\n pos5.mobileObjectId = \"12e570dc9f60a77c\";\r\n pos5.operationId = \"5ec6984225c93d6e6ca2bd6b\",\r\n pos5.operationType = \"PATROL\";\r\n pos5.sourceType = \"MOBILE_APP\";\r\n pos5.teamId = \"5ec2f72b9b44b70001588e4b\";\r\n return [ pos5 ];\r\n }\r\n case 4: {\r\n var pos4 = new SignalModel();\r\n pos4.timestamp = moment().valueOf();\r\n pos4.latitude = -22.95613869;\r\n pos4.longitude = -43.1974716;\r\n pos4.mobileObjectId = \"12e570dc9f60a77c\";\r\n pos4.operationId = \"5ec6984225c93d6e6ca2bd6b\",\r\n pos4.operationType = \"PATROL\";\r\n pos4.sourceType = \"MOBILE_APP\";\r\n pos4.teamId = \"5ec2f72b9b44b70001588e4b\";\r\n return [ pos4 ];\r\n }\r\n case 3: {\r\n var pos3 = new SignalModel();\r\n pos3.timestamp = moment().valueOf();\r\n pos3.latitude = -22.95624869;\r\n pos3.longitude = -43.1975716;\r\n pos3.mobileObjectId = \"12e570dc9f60a77c\";\r\n pos3.operationId = \"5ec6984225c93d6e6ca2bd6b\",\r\n pos3.operationType = \"PATROL\";\r\n pos3.sourceType = \"MOBILE_APP\";\r\n pos3.teamId = \"5ec2f72b9b44b70001588e4b\";\r\n return [ pos3 ];\r\n }\r\n case 2: {\r\n var pos2 = new SignalModel();\r\n pos2.timestamp = moment().valueOf();\r\n pos2.latitude = -22.95635869;\r\n pos2.longitude = -43.1976716;\r\n pos2.mobileObjectId = \"12e570dc9f60a77c\";\r\n pos2.operationId = \"5ec6984225c93d6e6ca2bd6b\",\r\n pos2.operationType = \"PATROL\";\r\n pos2.sourceType = \"MOBILE_APP\";\r\n pos2.teamId = \"5ec2f72b9b44b70001588e4b\";\r\n return [ pos2 ];\r\n }\r\n case 1: {\r\n var pos1 = new SignalModel();\r\n pos1.timestamp = moment().valueOf();\r\n pos1.latitude = -22.95646869;\r\n pos1.longitude = -43.1977716;\r\n pos1.mobileObjectId = \"12e570dc9f60a77c\";\r\n pos1.operationId = \"5ec6984225c93d6e6ca2bd6b\",\r\n pos1.operationType = \"PATROL\";\r\n pos1.sourceType = \"MOBILE_APP\";\r\n pos1.teamId = \"5ec2f72b9b44b70001588e4b\";\r\n return [ pos1 ];\r\n }\r\n default: return null;\r\n }\r\n }\r\n\r\n public getSampleVerifications() : VerificationModel[] {\r\n const verifications : VerificationModel[] = [];\r\n verifications.push(this.getSampleVerification(1));\r\n verifications.push(this.getSampleVerification(2));\r\n verifications.push(this.getSampleVerification(3));\r\n\r\n return verifications;\r\n }\r\n\r\n public getSampleVerification(verificationIndex: number): VerificationModel {\r\n switch(verificationIndex){\r\n case 1:{\r\n const verification = new VerificationModel();\r\n verification.id = \"1\";\r\n verification.identifier = \"0201202-V1400010\";\r\n verification.status = EventStatus.PENDING;\r\n verification.analyst = this.getSampleUser(verificationIndex);\r\n// TODO falta atualizar esses valores para usar as novas definições, essas eram temporárias\r\n// verification.duct = EventDuct.OCAB;\r\n// verification.valve = EventValve.VALVE_7;\r\n verification.band = \"000+500 - 000+600\";\r\n verification.priority = true;\r\n verification.analyst = this.getSampleUser(verificationIndex);\r\n verification.patrolTeam = this.getSamplePatrolTeam();\r\n verification.startDate = moment().valueOf();\r\n return verification;\r\n }\r\n case 2: {\r\n const verification = new VerificationModel();\r\n verification.id = \"2\";\r\n verification.identifier = \"0201202-V4556\";\r\n verification.status = EventStatus.PENDING;\r\n verification.analyst = this.getSampleUser(verificationIndex);\r\n // verification.duct = EventDuct.OCAB2;\r\n// verification.valve = EventValve.VALVE_10;\r\n verification.band = \"000+500 - 000+600\";\r\n verification.priority = false;\r\n verification.analyst = this.getSampleUser(verificationIndex);\r\n verification.patrolTeam = this.getSamplePatrolTeam();\r\n verification.startDate = moment().valueOf();\r\n return verification;\r\n }\r\n case 3: {\r\n const verification = new VerificationModel();\r\n verification.id = \"3\";\r\n verification.identifier = \"0201202-V1400010\";\r\n verification.status = EventStatus.PENDING;\r\n verification.analyst = this.getSampleUser(verificationIndex);\r\n // verification.duct = EventDuct.OCAB;\r\n// verification.valve = EventValve.VALVE_5;\r\n verification.band = \"000+500 - 000+600\";\r\n verification.priority = true;\r\n verification.analyst = this.getSampleUser(verificationIndex);\r\n verification.patrolTeam = this.getSamplePatrolTeam();\r\n verification.startDate = moment().valueOf();\r\n return verification;\r\n }\r\n }\r\n }\r\n\r\n public getSampleAction(actionIndex: number): EventMainActionModel {\r\n switch(actionIndex){\r\n case 1:{\r\n const action = new EventMainActionModel();\r\n action.id = \"1\";\r\n action.action = \"Ligar para o ccpd\";\r\n action.comment = \"CCPD não atendeu\";\r\n return action;\r\n }\r\n case 2: {\r\n const action = new EventMainActionModel();\r\n action.id = \"2\";\r\n action.action = \"Tirar fotos do local\";\r\n action.comment = \"Não foi possível uma aproximação por causa dos riscos\";\r\n return action;\r\n }\r\n case 3: {\r\n const action = new EventMainActionModel();\r\n action.id = \"3\";\r\n action.action = \"Enviar localização do local\";\r\n action.comment = \"\";\r\n return action;\r\n }\r\n }\r\n }\r\n\r\n\r\n public getSampleResult(): ResultsModel{\r\n const result = new ResultsModel();\r\n result.id = \"1\";\r\n result.occurrenceKM = \"23km\";\r\n result.occurrence = \"Ocorrência do resultado\";\r\n result.notes = \"Notas do resultado\";\r\n result.occurrenceLatLong = \"-22.913727, -43.2328779\";\r\n\r\n return result;\r\n }\r\n\r\n public getSampleEvent(): EventModel {\r\n const event = new EventModel();\r\n event.id = \"1\";\r\n event.identifier = \"0201201-e1400001\";\r\n event.status = EventStatus.IN_TREATMENT;\r\n event.date = moment().valueOf();\r\n// event.analyst = \"Daniel Gonçalves\";\r\n// event.communicationChannel = Channel.COMPLAINT;\r\n event.source = SourceType.MOBILE_APP;\r\n // event.duct = EventDuct.OCAB;\r\n// event.valve = EventValve.VALVE_7;\r\n// event.stretch = EventStretch.STRETCH_1;\r\n// event.band = EventBand.BAND_1;\r\n event.targetPointKM = \"000+500 - 000+600\";\r\n return event;\r\n }\r\n\r\n public getSampleEventList(): EventModel[] {\r\n const eventList : EventModel[]= [];\r\n\r\n const event = new EventModel();\r\n event.id = \"1\";\r\n event.identifier = \"0201201-e1400001\";\r\n event.status = EventStatus.IN_TREATMENT;\r\n event.date = moment().valueOf();\r\n // event.analyst = \"Daniel Gonçalves\";\r\n// event.communicationChannel = Channel.COMPLAINT;\r\n event.source = SourceType.MOBILE_APP;\r\n // event.duct = EventDuct.OCAB;\r\n// event.valve = EventValve.VALVE_7;\r\n// event.stretch = EventStretch.STRETCH_5;\r\n// event.band = EventBand.BAND_9;\r\n event.targetPointKM = \"0\";\r\n event.targetPointLatLong = \"000+500 - 000+600\";\r\n event.stretchStartKM = \"0\";\r\n event.stretchEndKM = \"255\";\r\n event.street = \"Rua Dr. Mario Vianna 459 ap 804\";\r\n event.city = \"Niterói\";\r\n event.state = \"RJ\";\r\n event.zipCode = \"24241-000\";\r\n event.result = this.getSampleResult();\r\n // event.verifications = [];\r\n // event.verifications.push(this.getSampleVerification(1));\r\n // event.verifications.push(this.getSampleVerification(2));\r\n // event.verifications.push(this.getSampleVerification(3));\r\n event.actions = []\r\n event.actions.push(this.getSampleAction(1));\r\n event.actions.push(this.getSampleAction(2));\r\n event.actions.push(this.getSampleAction(3));\r\n\r\n\r\n eventList.push(event);\r\n\r\n const event2 = new EventModel();\r\n event2.id = \"2\";\r\n event2.identifier = \"0201202-e1400010\";\r\n event2.status = EventStatus.FINALIZED;\r\n event2.date = moment().valueOf();\r\n// event2.analyst = \"Maradona\";\r\n// event2.communicationChannel = Channel.COMPLAINT;\r\n event2.source = SourceType.MOBILE_APP;\r\n// event2.duct = EventDuct.OCAB;\r\n// event2.valve = EventValve.VALVE_7;\r\n event2.targetPointKM = \"000+500 - 000+600\";\r\n event2.result = this.getSampleResult();\r\n // event2.verifications = [];\r\n // event2.verifications.push(this.getSampleVerification(1));\r\n // event2.verifications.push(this.getSampleVerification(2));\r\n // event2.verifications.push(this.getSampleVerification(3));\r\n event2.actions = []\r\n event2.actions.push(this.getSampleAction(1));\r\n event2.actions.push(this.getSampleAction(2));\r\n event2.actions.push(this.getSampleAction(3));\r\n\r\n eventList.push(event2);\r\n\r\n const event3 = new EventModel();\r\n event3.id = \"3\";\r\n event3.identifier = \"0201202-e1400010\";\r\n event3.status = EventStatus.FINALIZED;\r\n event3.date = moment().valueOf();\r\n// event3.analyst = \"Maradona\";\r\n// event3.communicationChannel = Channel.MAIL_168;\r\n event3.source = SourceType.SIMF;\r\n // event3.duct = EventDuct.OCAB;\r\n// event3.valve = EventValve.VALVE_7;\r\n event3.targetPointKM = \"000+500 - 000+600\";\r\n event3.result = this.getSampleResult();\r\n // event3.verifications = [];\r\n // event3.verifications.push(this.getSampleVerification(1));\r\n // event3.verifications.push(this.getSampleVerification(2));\r\n // event3.verifications.push(this.getSampleVerification(3));\r\n event3.actions = []\r\n event3.actions.push(this.getSampleAction(1));\r\n event3.actions.push(this.getSampleAction(2));\r\n event3.actions.push(this.getSampleAction(3));\r\n\r\n eventList.push(event3);\r\n\r\n const event4 = new EventModel();\r\n event4.id = \"4\";\r\n event4.identifier = \"0201202-e1400010\";\r\n event4.status = EventStatus.FINALIZED;\r\n event4.date = moment().valueOf();\r\n// event4.analyst = \"Maradona\";\r\n// event4.communicationChannel = Channel.GPS_CENTER_PHONE;\r\n event4.source = SourceType.MOBILE_APP;\r\n // event4.duct = EventDuct.OCAB;\r\n// event4.valve = EventValve.VALVE_7;\r\n event4.targetPointKM = \"000+500 - 000+600\";\r\n event4.result = this.getSampleResult();\r\n // event4.verifications = [];\r\n // event4.verifications.push(this.getSampleVerification(1));\r\n // event4.verifications.push(this.getSampleVerification(2));\r\n // event4.verifications.push(this.getSampleVerification(3));\r\n event4.actions = []\r\n event4.actions.push(this.getSampleAction(1));\r\n event4.actions.push(this.getSampleAction(2));\r\n event4.actions.push(this.getSampleAction(3));\r\n\r\n eventList.push(event4);\r\n\r\n const event5 = new EventModel();\r\n event5.id = \"5\";\r\n event5.identifier = \"0201202-e1400010\";\r\n event5.status = EventStatus.IN_TREATMENT;\r\n event5.date = moment().valueOf();\r\n // event5.analyst = \"Pelé\";\r\n// event5.communicationChannel = Channel.CNCL_DC_ZAP;\r\n event5.source = SourceType.MOBILE_APP;\r\n // event5.duct = EventDuct.OCAB;\r\n// event5.valve = EventValve.VALVE_10;\r\n event5.targetPointKM = \"000+500 - 000+600\";\r\n event5.result = this.getSampleResult();\r\n // event5.verifications = [];\r\n // event5.verifications.push(this.getSampleVerification(1));\r\n // event5.verifications.push(this.getSampleVerification(2));\r\n // event5.verifications.push(this.getSampleVerification(3));\r\n event5.actions = []\r\n event5.actions.push(this.getSampleAction(1));\r\n event5.actions.push(this.getSampleAction(2));\r\n event5.actions.push(this.getSampleAction(3));\r\n\r\n eventList.push(event5);\r\n\r\n const event6 = new EventModel();\r\n event6.id = \"6\";\r\n event6.identifier = \"0201202-e1400010\";\r\n event6.status = EventStatus.PENDING;\r\n event6.date = moment().valueOf();\r\n // event6.analyst = \"Pelé\";\r\n// event6.communicationChannel = Channel.CHANNEL_168;\r\n event6.source = SourceType.VEHICLE;\r\n // event6.duct = EventDuct.OCAB;\r\n// event6.valve = EventValve.VALVE_10;\r\n event6.targetPointKM = \"000+500 - 000+600\";\r\n event6.result = this.getSampleResult();\r\n // event6.verifications = [];\r\n // event6.verifications.push(this.getSampleVerification(1));\r\n // event6.verifications.push(this.getSampleVerification(2));\r\n // event6.verifications.push(this.getSampleVerification(3));\r\n event6.actions = []\r\n event6.actions.push(this.getSampleAction(1));\r\n event6.actions.push(this.getSampleAction(2));\r\n event6.actions.push(this.getSampleAction(3));\r\n\r\n eventList.push(event6);\r\n\r\n const event7 = new EventModel();\r\n event7.id = \"7\";\r\n event7.identifier = \"0201128-e1400030\";\r\n event7.status = EventStatus.PENDING;\r\n event7.date = moment().valueOf();\r\n // event7.analyst = \"Maradona\";\r\n// event7.communicationChannel = Channel.COMPLAINT;\r\n event7.source = SourceType.MOBILE_APP;\r\n event7.duct = \"OCAB2\";\r\n// event7.valve = EventValve.VALVE_10;\r\n event7.targetPointKM = \"000+500 - 000+600\";\r\n event7.result = this.getSampleResult();\r\n // event7.verifications = [];\r\n // event7.verifications.push(this.getSampleVerification(1));\r\n // event7.verifications.push(this.getSampleVerification(2));\r\n // event7.verifications.push(this.getSampleVerification(3));\r\n event7.actions = []\r\n event7.actions.push(this.getSampleAction(1));\r\n event7.actions.push(this.getSampleAction(2));\r\n event7.actions.push(this.getSampleAction(3));\r\n\r\n eventList.push(event7);\r\n\r\n return eventList;\r\n }\r\n\r\n}\r\n","\r\nimport { EntityModel } from './entity.model';\r\nimport { UserModel } from './user.model';\r\nimport { InspectionBooleanDescription, PointStatus } from './enums.enum';\r\nimport LanguageUtils from '../service/util/language-utils';\r\nimport FieldUtils from '../service/util/field-utils';\r\nimport DateUtils from '../service/util/date-utils';\r\n\r\nexport class InspectionPointModel extends EntityModel {\r\n \r\n identifier: string;\r\n status: string;\r\n source: string; \r\n author: UserModel;\r\n approve: UserModel;\r\n creationDate: number;\r\n band: string;\r\n stretch: string;\r\n km: number;\r\n latLong: string;\r\n district: string;\r\n city: string;\r\n uf: string;\r\n accessArrangement: string; \r\n parallelM: string; \r\n parallelStartKM: string;\r\n parallelEndKM: string;\r\n reference: string;\r\n routeName: string;\r\n accessType: string;\r\n blockType: string;\r\n paved: string;\r\n roadCondition: string;\r\n outputNumber: string;\r\n trafficVolume: string;\r\n trafficPossibility: string [];\r\n nearestPavedRoad: string;\r\n distanceToPavedRoad: string;\r\n residences: string;\r\n abandoned: string; \r\n suspiciousResidenceNearby: string;\r\n videoMonitoring: string [];\r\n areaUnderControl: string;\r\n reasonOfDoubt: string;\r\n dc: string;\r\n vulnerabilityView: string;\r\n category: string;\r\n weight: string;\r\n accessCriticality: string;\r\n \r\n constructor (){\r\n super();\r\n this.status = PointStatus.IN_ANALYSIS; \r\n }\r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['status'] = 'Status';\r\n LanguageUtils.languageMap['author'] = 'Criador';\r\n LanguageUtils.languageMap['approve'] = 'Aprovador';\r\n LanguageUtils.languageMap['district'] = 'Bairro';\r\n LanguageUtils.languageMap['accessArrangement'] = 'Disposição do Acesso';\r\n LanguageUtils.languageMap['parallelM'] = 'Paralelo (metros)';\r\n LanguageUtils.languageMap['parallelStartKM'] = 'Paralelo (do KM)';\r\n LanguageUtils.languageMap['parallelEndKM'] = 'Paralelo (ao KM)';\r\n LanguageUtils.languageMap['reference'] = 'Referência';\r\n LanguageUtils.languageMap['routeName'] = 'Nome da Via';\r\n LanguageUtils.languageMap['accessType'] = 'Tipo de Acesso';\r\n LanguageUtils.languageMap['blockType'] = 'Tipo de Bloqueio';\r\n LanguageUtils.languageMap['paved'] = 'Pavimentada';\r\n LanguageUtils.languageMap['roadCondition'] = 'Condição da Estrada de Terra';\r\n LanguageUtils.languageMap['outputNumber'] = 'Quantidade de Saídas';\r\n LanguageUtils.languageMap['trafficVolume'] = 'Volume de Tráfego';\r\n LanguageUtils.languageMap['trafficPossibility'] = 'Possibilidade de Tráfego';\r\n LanguageUtils.languageMap['nearestPavedRoad'] = 'Rodovia Asfaltada mais Próxima';\r\n LanguageUtils.languageMap['distanceToPavedRoad'] = 'Distância a essa Rodovia (metros)';\r\n LanguageUtils.languageMap['residences'] = 'Residências';\r\n LanguageUtils.languageMap['abandoned'] = 'Abandonadas';\r\n LanguageUtils.languageMap['suspiciousResidenceNearby'] = 'Propriedade Suspeita Próxima';\r\n LanguageUtils.languageMap['videoMonitoring'] = 'Vídeo Monitoramento';\r\n LanguageUtils.languageMap['areaUnderControl'] = 'Área sob Controle';\r\n LanguageUtils.languageMap['reasonOfDoubt'] = 'Motivo da Suspeita';\r\n LanguageUtils.languageMap['dc'] = 'DC';\r\n LanguageUtils.languageMap['vulnerabilityView'] = 'Vulnerabilidade na Visão do Técnico de Campo';\r\n LanguageUtils.languageMap['category'] = 'Categoria';\r\n LanguageUtils.languageMap['weight'] = 'Pesos';\r\n LanguageUtils.languageMap['accessCriticality'] = 'Criticidade do Acesso';\r\n }\r\n\r\n static getPopupContent(inspectionPoint: InspectionPointModel, latitude: number, longitude: number, search: boolean = false){\r\n return `
    Ponto
    \r\n ${inspectionPoint.identifier? `
    ID: ${ inspectionPoint.identifier }
    ` : ''}\r\n
    Faixa: ${inspectionPoint.band}
    \r\n
    KM: ${FieldUtils.kmIntToString(inspectionPoint.km)}
    \r\n
    Vulnerabilidade: ${ inspectionPoint.vulnerabilityView? inspectionPoint.vulnerabilityView: '' }
    \r\n
    Lat, Long: ${!search? FieldUtils.coordToString(latitude): ''},${!search? FieldUtils.coordToString(longitude): ''}
    \r\n
    Data/Hora Criação: ${DateUtils.timestampToStringInMinutes(inspectionPoint.creationDate)}
    \r\n ${inspectionPoint.dc? `
    DC: ${ InspectionBooleanDescription[inspectionPoint.dc] }
    ` : ''}\r\n `;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { Observable } from 'rxjs';\r\nimport { first, map } from 'rxjs/operators';\r\nimport { API_VERSION_ENDPOINT } from 'src/app/common/constants';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { OperationType } from 'src/app/model/enums.enum';\r\nimport { OperationModel } from 'src/app/model/operation.model';\r\nimport { ArchiveService } from './archive.service';\r\nimport { OperationStatus } from '../../model/enums.enum';\r\nimport { AttachmentModel } from 'src/app/model/attachment.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class OperationService extends ArchiveService {\r\n\r\n constructor(logger: NGXLogger,\r\n http: HttpClient,\r\n apiUrl: string,\r\n private objectName: string) {\r\n super(logger, http, apiUrl);\r\n }\r\n\r\n public create(record: EntityModel, formElements: Map) {\r\n this.logger.debug('OperationService.create()');\r\n const formData: FormData = super.buildFormData(this.objectName, record, formElements);\r\n return super.postAsFormData(this.apiUrl, formData);\r\n }\r\n\r\n public edit(record: EntityModel, formElements: Map) {\r\n this.logger.debug('OperationService.edit()');\r\n const formData: FormData = super.buildFormData(this.objectName, record, formElements);\r\n return super.putAsFormData(this.apiUrl + `/${record.id}`, formData);\r\n }\r\n\r\n public editRecord (record: EntityModel): Observable {\r\n const formData: FormData = super.buildFormData(this.objectName, record, new Map());\r\n return super.putAsFormData(this.apiUrl + '/' + record.id, formData);\r\n }\r\n\r\n public loadById(id:string): Observable{\r\n return this.http.get(this.apiUrl + '/' + id);\r\n }\r\n\r\n /**\r\n * Obtem a versão do projeto patrol ou event-verifications\r\n */\r\n getServiceVersion(): Observable {\r\n return this.http.get(`${this.apiUrl}/${API_VERSION_ENDPOINT}`,\r\n { responseType: 'text' }\r\n );\r\n }\r\n\r\n protected fillOperationType(result : T, type: OperationType) : T{\r\n\r\n result.forEach((entity: EntityModel) => {\r\n (entity).type = type;\r\n });\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Obtem a lista de status não-concluído de uma operação.\r\n */\r\n public listActiveStatus() {\r\n return [OperationStatus.PLANNED, OperationStatus.STARTED, OperationStatus.PAUSED, OperationStatus.SENT];\r\n }\r\n\r\n public loadAttachmentFile(data : AttachmentModel) : Observable{ \r\n let baseUrl = this.apiUrl+\"/attachment-file\"; \r\n return this.http.get(`${baseUrl}/${data.id}`, { responseType: 'blob' }).pipe(first(), map((blob) => {\r\n return this.blobToFile(blob, data.name);\r\n }));\r\n }\r\n\r\n private blobToFile = (blob: Blob, fileName:string): File => {\r\n let arrayOfBlob = new Array();\r\n arrayOfBlob.push(blob);\r\n let file = new File(arrayOfBlob, fileName);\r\n return file;\r\n }\r\n}\r\n","import { Directive, EventEmitter, OnDestroy, OnInit, Output } from \"@angular/core\";\r\nimport { NGXLogger } from \"ngx-logger\";\r\nimport { UserModel } from \"src/app/model/user.model\";\r\nimport { EntityService } from \"src/app/service/model/entity.service\";\r\nimport { UserService } from \"src/app/service/model/user.service\";\r\n\r\nimport * as moment from 'moment';\r\nimport { LayerService } from \"src/app/service/model/layer.service\";\r\nimport DateUtils from \"src/app/service/util/date-utils\";\r\nimport { ArchivedType, FilterModel } from \"./filter.model\";\r\nimport { KeyValue } from \"@angular/common\";\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { Permission, UserType } from \"src/app/model/enums.enum\";\r\nimport { first, map } from \"rxjs/operators\";\r\nimport { LoadingListService } from \"src/app/service/loading/loading-list.service\";\r\nimport { ProfileModel } from \"src/app/model/profile.model\";\r\nimport { StorageService } from \"src/app/service/storage-service\";\r\nimport { SingleDataCacheService } from \"src/app/service/model/single.data.cache.service\";\r\nimport { Observable, Subscription } from \"rxjs\";\r\nimport { EntityCacheService } from \"src/app/service/model/entity.cache.service\";\r\n\r\n@Directive()\r\nexport abstract class FilterComponent implements OnInit, OnDestroy {\r\n\r\n @Output() filtered = new EventEmitter();\r\n protected inMemoryFilterModel: FilterModel;\r\n\r\n analysts: UserModel[];\r\n\r\n viewFilterStartDate : string;\r\n viewFilterEndDate : string;\r\n viewFilterStartTime : string;\r\n viewFilterEndTime : string;\r\n\r\n startDate: moment.Moment;\r\n endDate: moment.Moment;\r\n\r\n archivedFilterType = ArchivedType;\r\n\r\n loggedUser: UserModel;\r\n loggedUserProfile : ProfileModel;\r\n permission = Permission;\r\n \r\n loadingListService = new LoadingListService();\r\n\r\n private reloadAnalystUsersSubscription: Subscription;\r\n\r\n constructor(protected logger: NGXLogger,\r\n protected userService: UserService,\r\n protected layerService: LayerService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n public entityCacheService: EntityCacheService,\r\n protected entityService: EntityService,\r\n protected filterModel: FilterModel,\r\n protected storageService: StorageService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.loggedUser = this.storageService.getLocalUser();\r\n this.loggedUserProfile = this.storageService.getLocalProfile();\r\n\r\n this.loadFormOptionsData();\r\n\r\n this.updateFilterModel(this.inMemoryFilterModel, this.filterModel);\r\n \r\n this.handleFilterDates();\r\n }\r\n\r\n ngOnDestroy(){\r\n this.loadingListService.destroy();\r\n this.reloadAnalystUsersSubscription?.unsubscribe();\r\n }\r\n\r\n getShowSpinner() {\r\n return this.loadingListService.getShowSpinner();\r\n }\r\n\r\n startDateChanged() {\r\n this.viewFilterStartDate = this.startDate.format(\"DD/MM/yyyy\");\r\n }\r\n\r\n applyStartDate(dateString: string) {\r\n if(!dateString) return;\r\n\r\n this.startDate = moment(dateString, \"DD/MM/yyyy\");\r\n }\r\n\r\n endDateChanged() {\r\n this.viewFilterEndDate = this.endDate.format(\"DD/MM/yyyy\");\r\n }\r\n\r\n applyEndDate(dateString: string) {\r\n if(!dateString) return;\r\n\r\n this.endDate = moment(dateString, \"DD/MM/yyyy\");\r\n }\r\n\r\n protected loadFormOptionsData() {\r\n }\r\n\r\n loadAnalysts(){\r\n let _this = this; // Necessário por causa do contexto das callacks\r\n const onUsersLoad = function() {\r\n const analystUserTypes = [UserType.ANALYSIS_CCPD, UserType.ADMINISTRATOR, UserType.COORDINATOR_CCPD];\r\n _this.analysts = _this.entityCacheService.getFilteredUsers(analystUserTypes);\r\n };\r\n this.entityCacheService.loadUsers(this.loadingListService, onUsersLoad);\r\n this.reloadAnalystUsersSubscription = this.entityCacheService.onUsersReload().subscribe(onUsersLoad);\r\n }\r\n\r\n /**\r\n * Filtra a lista de acordo com os filtros selecionados\r\n */\r\n loadFilteredDataModel(): Observable {\r\n if (this.filterModel.current) {\r\n this.filterModel.startDate = DateUtils.getTodayStartDate();\r\n this.filterModel.endDate = DateUtils.getTodayEndDate();\r\n this.handleFilterDates();\r\n }\r\n else {\r\n this.filterModel.startDate = DateUtils.stringDateTimeToTimestamp(this.viewFilterStartDate, this.viewFilterStartTime, true);\r\n this.filterModel.endDate = DateUtils.stringDateTimeToTimestamp(this.viewFilterEndDate, this.viewFilterEndTime, false);\r\n }\r\n\r\n this.updateFilterModel(this.filterModel, this.inMemoryFilterModel);\r\n\r\n return this.entityService.loadFilteredListFromRestApi(null, null, null, this.inMemoryFilterModel);\r\n }\r\n\r\n onFilter(){\r\n this.loadingListService.loadingOn();\r\n this.loadFilteredDataModel().pipe(first()).subscribe( (entity : EntityModel[]) => {\r\n this.filtered.emit(entity);\r\n }, error => this.logger.error(error),\r\n () => {\r\n this.loadingListService.loadingOff();\r\n });\r\n }\r\n\r\n /**\r\n * Atualiza o filtro em memória\r\n */\r\n updateFilterModel(sourceFilter: FilterModel, targetFilter: FilterModel){\r\n for(const key in sourceFilter){\r\n targetFilter[key] = sourceFilter[key];\r\n }\r\n }\r\n\r\n /**\r\n * Limpa todos os campos do filtro\r\n */\r\n clearFilter(){\r\n // Não reseta o current para evitar que o diálogo mude de tamanho ao Limpar o filtro\r\n //this.filterModel.current = false;\r\n this.filterModel.archived = ArchivedType.NON_ARCHIVED;\r\n\r\n this.filterModel.startDate = undefined;\r\n this.filterModel.endDate = undefined;\r\n this.handleFilterDates();\r\n\r\n this.filterModel.analysts = [];\r\n this.filterModel.status = [];\r\n this.filterModel.ducts = [];\r\n this.filterModel.valves = [];\r\n this.filterModel.placements = this.storageService.getSpecificPlacementIds();\r\n }\r\n\r\n handleFilterDates(){\r\n if (this.filterModel.startDate) {\r\n this.startDate = moment(this.filterModel.startDate);\r\n this.viewFilterStartDate = this.startDate.format('DD/MM/yyyy');\r\n this.viewFilterStartTime = this.startDate.format('HH:mm');\r\n }else{\r\n this.viewFilterStartDate = '';\r\n this.viewFilterStartTime = '';\r\n }\r\n\r\n if (this.filterModel.endDate) {\r\n this.endDate = moment(this.filterModel.endDate);\r\n this.viewFilterEndDate = this.endDate.format('DD/MM/yyyy');\r\n this.viewFilterEndTime = this.endDate.format('HH:mm');\r\n }else{\r\n this.viewFilterEndDate = '';\r\n this.viewFilterEndTime = '';\r\n }\r\n }\r\n\r\n // Preserve original property order\r\n originalOrder = (a: KeyValue, b: KeyValue): number => {\r\n return 0;\r\n }\r\n}\r\n","import { environment } from 'src/environments/environment';\r\nimport { GeoModel } from './geo.model';\r\n\r\nexport class ValveModel extends GeoModel{\r\n // Não tem no momento no kml original. Já deixamos pronto na importação para o futuro.\r\n km: string;\r\n duct: string; // Nome do duto\r\n\r\n public static getPopupContent(feature, search: boolean = false): string{\r\n \r\n const valve = feature.properties as ValveModel;\r\n\r\n let states: string = valve.states ? valve.states.toString() : '';\r\n let latLong: string = GeoModel.getLatLong(valve);\r\n let contents:string = `
    Válvula
    \r\n
    ${valve.name}
    \r\n ${valve.duct? '
    Duto:' + valve.duct + '
    ': ''}\r\n ${valve.km? '
    KM:' + valve.km + '
    ': ''}\r\n
    UF(s): ${states}
    \r\n
    Lat, Long: ${!search? latLong: ''}
    \r\n `;\r\n if (!environment.showPopupLayerTables || valve.description == null || valve.description === \"\") { \r\n return contents;\r\n }\r\n else {\r\n return contents + \"
    \" + valve.description\r\n }\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n
    \r\n {{title}}\r\n
    \r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n sync\r\n refresh\r\n sync_problem\r\n {{alertsConnectionState.text}}\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n
    \r\n
    \r\n
    ID: {{inMemoryDetailsAlert?.identifier}} 
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n Reconhecido\r\n \r\n
    \r\n\r\n \r\n Notas\r\n \r\n \r\n\r\n \r\n Quem Reconheceu\r\n \r\n \r\n\r\n \r\n Data/hora Reconhecido\r\n \r\n \r\n\r\n \r\n Data/Hora Recebimento\r\n \r\n \r\n\r\n \r\n Nível\r\n \r\n \r\n\r\n \r\n KM (Lat, Long)\r\n \r\n \r\n\r\n \r\n Data/hora da Localização\r\n \r\n \r\n\r\n \r\n Placa\r\n \r\n \r\n\r\n \r\n Usuário\r\n \r\n \r\n\r\n \r\n Operação\r\n \r\n \r\n\r\n \r\n ID Operação\r\n \r\n \r\n\r\n \r\n ID Evento Vinculado\r\n \r\n \r\n\r\n \r\n Descrição\r\n \r\n \r\n\r\n \r\n Dados SIMF\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n","import { forkJoin, Observable, Subscription } from 'rxjs';\r\nimport { AlertsService } from './../../service/model/alerts.service';\r\nimport { OperationTypeDescription, AlertPriorityDescription, OperationType, SourceType, Permission, PermisionRuleOption } from './../../model/enums.enum';\r\nimport { Component, OnInit, OnDestroy, Inject, ViewChild, NgZone, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { AlertModel } from '../../model/alert.model';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Websocket } from '../../service/websocket/websocket';\r\nimport { Message } from '@stomp/stompjs';\r\nimport { StompState } from '@stomp/ng2-stompjs';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport DateUtils from '../../service/util/date-utils';\r\nimport { BaseGoldenPanel } from '../base-golden-panel/base-golden-panel';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { MAP_PAGE, FILL_DATA_PREFIX } from 'src/app/common/constants';\r\nimport { EntityModel } from '../../model/entity.model';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport * as moment from 'moment';\r\nimport { ConfirmationDialogComponent } from '../../general/confirmation-dialog/confirmation-dialog.component';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { VerificationService } from 'src/app/service/model/verification.service';\r\nimport { VerificationModel } from 'src/app/model/verification.model';\r\nimport { CentralListComponent } from './central-list/central-list.component';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { EventListDialogComponent } from '../../general/operation/event-list-dialog/event-list-dialog.component';\r\nimport { EventModel } from 'src/app/model/event.model';\r\nimport { EventFilterModel } from '../event/event-filter/event.filter.model';\r\nimport { MessageComponentData, MessageComponentType } from '../../general/message/message.component';\r\nimport { MESSAGE_PAGE } from '../../common/constants';\r\nimport { ProfileClassToConsole } from 'src/app/common/profile-class.decorator';\r\nimport { first } from 'rxjs/operators';\r\nimport { ProfileService } from 'src/app/service/model/profile.service';\r\nimport { PermissionOptions } from 'src/app/model/field.model';\r\n\r\nconst DISCONNECTED = {value: 0, text: 'Alertas Desconectado'};\r\nconst CONNECTING = {value: 1, text: 'Alertas Conectando'};\r\nconst CONNECTED = {value: 2, text: 'Alertas Conectado'};\r\n\r\n@ProfileClassToConsole()\r\n@Component({\r\n selector: 'app-central',\r\n templateUrl: './central.component.html',\r\n styleUrls: ['../../app.component.scss', './central.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CentralComponent extends BaseGoldenPanel implements OnInit, OnDestroy {\r\n title = environment.CENTRAL_TITLE_LABEL;\r\n tabTitle = environment.CENTRAL_GROUP_LABEL;\r\n appAlertsTitle = 'Alertas App Móvel';\r\n simfAlertsTitle = 'Alertas SIMF';\r\n\r\n /** ENUMS */\r\n alertPriorityDescription = AlertPriorityDescription;\r\n operationTypeDescription = OperationTypeDescription;\r\n operationType = OperationType;\r\n permission = Permission;\r\n permisionRuleOption = PermisionRuleOption;\r\n\r\n /** Colunas das listas */\r\n appDisplayedColumns: string[];\r\n simfDisplayedColumns: string[];\r\n\r\n /** Componentes de lista de alertas filhos*/\r\n @ViewChild('appAlertList', { static: true }) appAlertComponent: CentralListComponent;\r\n @ViewChild('simfAlertList', { static: true }) simfAlertComponent: CentralListComponent;\r\n\r\n @ViewChild(MatInput, { static: true }) searchInput: MatInput;\r\n\r\n /** Controle de seleção das listas de alertas */\r\n appAlertSelection : SelectionModel;\r\n simfAlertSelection : SelectionModel;\r\n\r\n /** Detalhes dos alertas */\r\n detailsAlert: AlertModel;\r\n inMemoryDetailsAlert: AlertModel;\r\n detailsChanged: boolean;\r\n verificationStretch: string = '';\r\n\r\n showDetails: boolean = false;\r\n \r\n /**valida se a janela é fechada quando o usuário não tem acesso à lista de alertas */\r\n closeWindows: boolean = false;\r\n\r\n alertsConnectionState: {value: number, text: string} = DISCONNECTED;\r\n\r\n /** Subscriptions */\r\n private alertsWebsocketSubscription: Subscription;\r\n private loadOperationSubscription: Subscription;\r\n private websocketStateSubscription: Subscription;\r\n private websocketConnectSubscription: Subscription;\r\n\r\n private alertsWebsocket: Websocket;\r\n\r\n constructor(public logger: NGXLogger,\r\n private changeDetector: ChangeDetectorRef,\r\n private ngZone: NgZone,\r\n public dialog: MatDialog,\r\n private alertsService: AlertsService,\r\n private toastr: ToastrService,\r\n private storageService: StorageService,\r\n private profileService: ProfileService,\r\n private verificationService: VerificationService,\r\n public authorizationService: AuthorizationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, goldenLayout, container);\r\n }\r\n\r\n ngOnInit() {\r\n this.logger.debug('centralComponent.onInit()');\r\n\r\n this.appAlertSelection = this.appAlertComponent.selection;\r\n this.simfAlertSelection = this.simfAlertComponent.selection;\r\n\r\n this.glUpdateTabTitle(this.tabTitle);\r\n\r\n this.inMemoryDetailsAlert = new AlertModel();\r\n\r\n this.subscribeToWebsocket();\r\n\r\n this.subscribeOnFillData();\r\n\r\n this.appDisplayedColumns = ['select', 'level', 'identifier', 'acknowledged', 'timestamp', 'observedArea', 'alertType', 'band', 'duct', 'km',\r\n 'patrolTeam.name', 'patrolTeam.company.placement.name', 'operationType', 'patrolTeam.serviceType', 'observation'];\r\n\r\n this.simfDisplayedColumns = ['select', 'level', 'identifier', 'acknowledged', 'timestamp', 'observedArea', 'alertType', 'duration',\r\n 'simf.cpsNumber', 'simf.scalePoint', 'simf.zoneName', 'simf.endChannel',\r\n 'observation'];\r\n\r\n if (this.storageService.hasPopoutData()) {\r\n const popout = this.storageService.getPopoutData();\r\n this.restorePopoutData(popout);\r\n this.storageService.setPopoutData(null);\r\n }\r\n }\r\n\r\n glOnPopout() {\r\n super.glOnPopout();\r\n this.savePopoutData()\r\n }\r\n\r\n glOnPopin() {\r\n super.glOnPopin();\r\n this.savePopoutData()\r\n }\r\n\r\n savePopoutData() {\r\n this.storageService.setPopoutData({\r\n appFilterModel: this.appAlertComponent.filterModel,\r\n simfFilterModel: this.simfAlertComponent.filterModel,\r\n });\r\n }\r\n\r\n restorePopoutData(popout) {\r\n this.appAlertComponent.filterModel = popout.appFilterModel;\r\n this.simfAlertComponent.filterModel = popout.simfFilterModel;\r\n }\r\n\r\n ngOnDestroy(){\r\n const loggedUser = this.storageService.getLocalUser();\r\n if(!loggedUser || !loggedUser.id ) return;\r\n\r\n this.alertsWebsocket?.destroy();\r\n this.alertsWebsocket = null;\r\n\r\n this.alertsWebsocketSubscription?.unsubscribe();\r\n this.loadOperationSubscription?.unsubscribe();\r\n this.websocketStateSubscription?.unsubscribe();\r\n this.websocketConnectSubscription?.unsubscribe();\r\n\r\n this.glUnSubscribeEvent(FILL_DATA_PREFIX + 'central');\r\n }\r\n\r\n //########################################################\r\n // SUBSCRIPTIONS\r\n //########################################################\r\n\r\n /**\r\n * @description Método que chama todas as inscrições do componente\r\n */\r\n private subscribeToWebsocket() {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.alertsWebsocket = Websocket.createAlertsWebsocket();\r\n this.subscribeOnAlertWebsocket();\r\n this.subscribeOnWebsocketState();\r\n this.subscribeToWebsocketConnected();\r\n });\r\n }\r\n\r\n /**\r\n * Método que observa as alterações de status do websocket\r\n */\r\n private subscribeOnWebsocketState(){\r\n this.websocketStateSubscription = this.alertsWebsocket.state().subscribe((state: StompState) => {\r\n if (state === 0 || state === 3){\r\n this.alertsConnectionState = DISCONNECTED;\r\n }else if (state === 1){\r\n this.alertsConnectionState = CONNECTING;\r\n }else if (state === 2){\r\n this.alertsConnectionState = CONNECTED;\r\n }\r\n this.renderComponent();\r\n });\r\n }\r\n\r\n /**\r\n * Inscrição para receber alertas do tópico de alertas do websocket\r\n */\r\n private subscribeOnAlertWebsocket(){\r\n this.alertsWebsocketSubscription = this.alertsWebsocket.stream().subscribe((message: Message) => {\r\n this.onNewAlertReceived(message.body);\r\n }),(error) => {\r\n let errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';\r\n this.logger.error(`[central.component.ts] subscribeAlertWebsocket: ${errMsg}`);\r\n };\r\n }\r\n\r\n /**\r\n * Ao conectar com o websocket, recarrega do backend para evitar alertas perdidos\r\n */\r\n private subscribeToWebsocketConnected(){\r\n this.websocketConnectSubscription = this.alertsWebsocket.onConnectCallback().subscribe(() => {\r\n this.logger.log('OnAlertsWebsocketConnected ***** Conexão com o websocket estabelecida.');\r\n this.appAlertComponent.loadAlerts();\r\n this.simfAlertComponent.loadAlerts();\r\n this.renderComponent();\r\n }, (error: any) => this.logger.error(error));\r\n }\r\n\r\n protected renderComponent(){\r\n // aguarda um pouco para outras tarefas terminarem\r\n setTimeout(() => {\r\n this.changeDetector.detectChanges();\r\n }, 250);\r\n }\r\n\r\n //########################################################\r\n // WEBSOCKET METHODS\r\n //########################################################\r\n\r\n /**\r\n * Callback para novo alerta recebido\r\n */\r\n protected onNewAlertReceived(updatedAlertId: string) {\r\n if (!updatedAlertId) return;\r\n\r\n this.alertsService.getRecord(updatedAlertId).pipe(first()).subscribe((entity: EntityModel) => {\r\n let alert: AlertModel = entity;\r\n if (!alert) return;\r\n\r\n // se a alerta não pertence a lista de lotações que tem acesso o usuário, não atualiza a lista \r\n const specificPlacement = this.storageService.getSpecificPlacementIds();\r\n if(specificPlacement.length == 0 || specificPlacement.includes(alert.patrolTeam.company.placement.id)) {\r\n if(alert.sourceType == SourceType.MOBILE_APP){\r\n this.handleNewAlert(this.appAlertComponent, alert);\r\n }else{\r\n this.handleNewAlert(this.simfAlertComponent, alert);\r\n }\r\n\r\n this.renderComponent();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Chama os métodos de atualização da lista de alertas dos componentes filhos\r\n * @param listComponent\r\n * @param alert\r\n */\r\n private handleNewAlert(listComponent: CentralListComponent, alert: AlertModel){\r\n let existingAlertPos = listComponent.model.findIndex( (model: AlertModel) => model.id === alert.id);\r\n if (existingAlertPos > -1) {\r\n listComponent.updateExistingAlert(existingAlertPos, alert);\r\n }else {\r\n listComponent.insertNewAlert(alert);\r\n }\r\n }\r\n\r\n //########################################################\r\n // HEADER METHODS\r\n //########################################################\r\n\r\n /**\r\n * Aplica o filtro do header nas tabelas\r\n * @param filterValue\r\n */\r\n applySearch(filterValue: string) {\r\n this.appAlertComponent.dataSource.filter = filterValue.trim().toLowerCase();\r\n this.simfAlertComponent.dataSource.filter = filterValue.trim().toLowerCase();\r\n this.appAlertSelection.clear();\r\n this.simfAlertSelection.clear();\r\n }\r\n\r\n onRemoveSearch(){\r\n this.searchInput.value = '';\r\n this.appAlertComponent.dataSource.filter = '';\r\n this.simfAlertComponent.dataSource.filter = '';\r\n this.appAlertSelection.clear();\r\n this.simfAlertSelection.clear();\r\n }\r\n\r\n // Context Menu action, não tem confirmação\r\n eventClicked(data) {\r\n if (data.create){\r\n this.glOpenContainer(\"events-edit\", {id: null, options: {selectedAlerts: [data.alert]} }); // Cria um evento e passa a lista de alertas a serem atualizados posteriormente\r\n }\r\n else {\r\n if (data.link) {\r\n this.selectEventToLink([data.alert]);\r\n }\r\n else {\r\n this.linkAlertsToEvent([data.alert], null);\r\n }\r\n }\r\n }\r\n\r\n operationClicked(data) {\r\n if (data.operationType == OperationType.PATROL){\r\n this.glOpenContainer('patrols-edit', {id: data.operationId});\r\n }\r\n else {\r\n this.glOpenContainer('verifications-edit', {id: data.operationId});\r\n }\r\n }\r\n\r\n operationMessagesClicked(data) {\r\n this.openMessageComponent(data);\r\n }\r\n\r\n openMessageComponent(data){\r\n const messageData: MessageComponentData = new MessageComponentData();\r\n messageData.componentType = MessageComponentType.OPERATION_MESSAGE;\r\n messageData.operationId = data.operationId;\r\n messageData.operationType = data.operationType;\r\n this.glOpenContainer(MESSAGE_PAGE, messageData);\r\n }\r\n\r\n getSelectedAlerts(): AlertModel[] {\r\n const selectedAlerts: AlertModel[] = [];\r\n\r\n if(this.appAlertSelection && this.appAlertSelection.selected.length > 0) {\r\n this.appAlertSelection.selected.forEach((alert: AlertModel) => {\r\n selectedAlerts.push(alert);\r\n });\r\n }\r\n\r\n if(this.simfAlertSelection && this.simfAlertSelection.selected.length > 0) {\r\n this.simfAlertSelection.selected.forEach((alert: AlertModel) => {\r\n selectedAlerts.push(alert);\r\n });\r\n }\r\n\r\n return selectedAlerts;\r\n }\r\n\r\n onCreateEventManyClick() {\r\n const selectedAlerts = this.getSelectedAlerts();\r\n const foundAlertEvent = selectedAlerts.find((alert: AlertModel) => alert.eventIdentifier);\r\n if (foundAlertEvent){\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: 'Existem alertas já vinculados a eventos, serão desvinculados e vinculados ao novo evento. Deseja continuar?',\r\n title: \"Atenção\",\r\n okLabel: \"Continuar\"\r\n }\r\n }).afterClosed().pipe(first()).subscribe((option:boolean) => {\r\n if(option) {\r\n this.glOpenContainer(\"events-edit\", {id: null, options: {selectedAlerts: selectedAlerts} }); // Cria um evento e passa a lista de alertas a serem atualizados posteriormente\r\n }\r\n });\r\n }\r\n else{\r\n this.glOpenContainer(\"events-edit\", {id: null, options: {selectedAlerts: selectedAlerts} }); // Cria um evento e passa a lista de alertas a serem atualizados posteriormente\r\n }\r\n }\r\n\r\n onLinkEventManyClick(){\r\n const selectedAlerts = this.getSelectedAlerts();\r\n const foundAlertEvent = selectedAlerts.find((alert: AlertModel) => alert.eventIdentifier);\r\n if (foundAlertEvent){\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: 'Existem alertas já vinculados a eventos, serão desvinculados e vinculados ao evento selecionado. Deseja continuar?',\r\n title: \"Atenção\",\r\n okLabel: \"Continuar\"\r\n }\r\n }).afterClosed().pipe(first()).subscribe((option:boolean) => {\r\n if(option) {\r\n this.selectEventToLink(selectedAlerts);\r\n }\r\n });\r\n }\r\n else {\r\n this.selectEventToLink(selectedAlerts);\r\n }\r\n }\r\n\r\n selectEventToLink(selectedAlerts: AlertModel[]){\r\n let filter: EventFilterModel = new EventFilterModel(); \r\n let dialogRef = this.dialog.open(EventListDialogComponent, {\r\n panelClass: 'sipd-modal',\r\n data: filter\r\n });\r\n dialogRef.afterClosed().pipe(first()).subscribe( (events: EventModel[]) => {\r\n if(events && events.length == 1){\r\n this.linkAlertsToEvent(selectedAlerts, events[0].identifier);\r\n }\r\n });\r\n }\r\n\r\n linkAlertsToEvent(selectedAlerts: AlertModel[], eventIdentifier: string){\r\n const observables: Observable[] = [];\r\n\r\n for (let i in selectedAlerts) {\r\n let alert = selectedAlerts[i];\r\n alert.eventIdentifier = eventIdentifier;\r\n if (this.updateDetails(alert)) this.inMemoryDetailsAlert.eventIdentifier = alert.eventIdentifier;\r\n\r\n let alertItem: AlertModel = this.getAlertFromList(alert);\r\n if (alertItem) alertItem.eventIdentifier = alert.eventIdentifier;\r\n\r\n observables.push(this.alertsService.editRecord(alert));\r\n }\r\n\r\n forkJoin(observables).pipe(first()).subscribe( (alerts: AlertModel[]) => {\r\n if (eventIdentifier) this.toastr.success('Alerta(s) vinculado(s) ao evento com sucesso.');\r\n else this.toastr.success('Alerta(s) desvinculado(s) do evento com sucesso.');\r\n }, error => {\r\n this.logger.error(error);\r\n if (eventIdentifier) this.toastr.error('Ocorreu uma falha ao vincular o(s) alerta(s) ao evento ' + eventIdentifier);\r\n else this.toastr.error('Ocorreu uma falha ao desvincular o(s) alerta(s) do evento');\r\n });\r\n }\r\n\r\n onUnLinkEventManyClick(){\r\n const selectedAlerts = this.getSelectedAlerts();\r\n const foundAlertEvent = selectedAlerts.find((alert: AlertModel) => alert.eventIdentifier);\r\n if (!foundAlertEvent){\r\n this.toastr.info(\"Nenhuma ação necessária. Todos os alertas selecionados não possuem evento vinculado.\");\r\n }\r\n else{\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: 'Todos os alertas selecionados serão desvinculados de eventos. Deseja continuar?',\r\n title: \"Atenção\",\r\n okLabel: \"Continuar\"\r\n }\r\n }).afterClosed().pipe(first()).subscribe((option:boolean) => {\r\n if(option) {\r\n this.linkAlertsToEvent(selectedAlerts, null);\r\n }\r\n });\r\n }\r\n }\r\n\r\n private getAlertFromList(selectedAlert: AlertModel){\r\n let alertItem: AlertModel;\r\n if (selectedAlert.sourceType == SourceType.MOBILE_APP) {\r\n alertItem = this.appAlertComponent.model.find((alert: AlertModel) => selectedAlert.id == alert.id);\r\n }\r\n else {\r\n alertItem = this.simfAlertComponent.model.find((alert: AlertModel) => selectedAlert.id == alert.id);\r\n }\r\n return alertItem;\r\n }\r\n\r\n private subscribeOnFillData(){\r\n this.glSubscribeEvent(FILL_DATA_PREFIX + 'central', (data) => {\r\n if (data.selectedAlerts) { // Novo Evento salvo com dados dos alertas, devemos atualizar o vinculo dos alertas\r\n this.logger.debug(\"CentralComponent-OnFillData\");\r\n let selectedAlerts: AlertModel [] = data.selectedAlerts;\r\n for (let i in selectedAlerts) {\r\n let alert = selectedAlerts[i];\r\n if (this.updateDetails(alert)) this.inMemoryDetailsAlert.eventIdentifier = alert.eventIdentifier;\r\n\r\n let alertItem: AlertModel = this.getAlertFromList(alert);\r\n if (alertItem) alertItem.eventIdentifier = alert.eventIdentifier;\r\n }\r\n }\r\n });\r\n }\r\n\r\n onLocationManyClick(){\r\n let selectedAlerts = this.getSelectedAlerts();\r\n selectedAlerts = selectedAlerts.filter((alert: AlertModel) => this.hasLocation(alert));\r\n\r\n if (selectedAlerts.length > 0)\r\n this.glOpenContainer(MAP_PAGE, {alertList: selectedAlerts});\r\n else\r\n this.toastr.warning(\"Nenhum alerta selecionado possui (Lat, Long) definido.\");\r\n }\r\n\r\n locationClicked(alert: AlertModel){\r\n this.glOpenContainer(MAP_PAGE, {alert: alert});\r\n }\r\n\r\n canShowMessages(): boolean {\r\n if (this.appAlertSelection.selected.length+this.simfAlertSelection.selected.length != 1)\r\n return false;\r\n\r\n if (this.appAlertSelection.selected.length == 1)\r\n return this.hasOperation(this.appAlertSelection.selected[0]);\r\n else\r\n return this.hasOperation(this.simfAlertSelection.selected[0]);\r\n }\r\n\r\n onDetailsClick(){\r\n this.showDetails = ! this.showDetails;\r\n }\r\n\r\n hasOperation(alert: AlertModel): boolean {\r\n return !!alert && !!alert.operationId;\r\n }\r\n\r\n hasLocation(alert: AlertModel): boolean {\r\n return alert && alert.location.coordinates[0] != 0 && alert.location.coordinates[1] != 0;\r\n }\r\n\r\n isDetailedAlertAcknowledged() {\r\n return (this.inMemoryDetailsAlert) ? this.inMemoryDetailsAlert.acknowledged : false;\r\n }\r\n\r\n //########################################################\r\n // ALERT DETAIL METHODS\r\n //########################################################\r\n\r\n onDetailedAlertAcknowledgedClick() {\r\n if (this.inMemoryDetailsAlert.acknowledged) {\r\n this.inMemoryDetailsAlert.acknowledged = false;\r\n this.inMemoryDetailsAlert.acknowledgmentAuthor = \"\";\r\n this.inMemoryDetailsAlert.acknowledgmentDate = 0;\r\n }\r\n else {\r\n this.inMemoryDetailsAlert.acknowledged = true;\r\n this.inMemoryDetailsAlert.acknowledgmentAuthor = this.storageService.getLocalUser().login;\r\n this.inMemoryDetailsAlert.acknowledgmentDate = moment().valueOf();\r\n }\r\n this.detailsChanged = true;\r\n }\r\n\r\n onSaveDetailsClick(): void{\r\n this.logger.debug(`onSaveDetailsClick - Atualizando o alerta ${this.inMemoryDetailsAlert.id} de ${DateUtils.timestampToStringInSeconds(this.inMemoryDetailsAlert.timestamp)}`);\r\n\r\n this.detailsAlert.acknowledged = this.inMemoryDetailsAlert.acknowledged;\r\n this.detailsAlert.acknowledgmentAuthor = this.inMemoryDetailsAlert.acknowledgmentAuthor;\r\n this.detailsAlert.acknowledgmentDate = this.inMemoryDetailsAlert.acknowledgmentDate;\r\n this.detailsAlert.observation = this.inMemoryDetailsAlert.observation;\r\n\r\n this.alertsService.editRecord(this.detailsAlert).pipe(first()).subscribe( () => {\r\n this.toastr.success('Alerta alterado com sucesso.');\r\n this.detailsChanged = false;\r\n }, (error) => {\r\n this.logger.error(`Erro ao atualizar o alerta ${this.detailsAlert.id} de\r\n ${DateUtils.timestampToStringInSeconds(this.detailsAlert.timestamp)}`, error);\r\n this.toastr.error('Não foi possível alterar o alerta.', 'Falha!');\r\n });\r\n }\r\n\r\n onChangedNotes() {\r\n if(!this.inMemoryDetailsAlert.id) return;\r\n this.detailsChanged = true;\r\n }\r\n\r\n changeDetails(alert: AlertModel) {\r\n this.detailsAlert = alert;\r\n this.inMemoryDetailsAlert = JSON.parse(JSON.stringify(alert));\r\n if(!alert.acknowledged){\r\n this.inMemoryDetailsAlert.acknowledgmentAuthor = \"\";\r\n this.inMemoryDetailsAlert.acknowledgmentDate = 0;\r\n }\r\n this.detailsChanged = false;\r\n\r\n if(alert.operationType === OperationType.EVENT_VERIFICATION){\r\n this.getVerificationStretch();\r\n }\r\n }\r\n\r\n /**\r\n * Busca o trecho da verificação que disparou o alerta\r\n * @returns\r\n */\r\n getVerificationStretch(){\r\n if(!this.inMemoryDetailsAlert) return;\r\n\r\n this.verificationService.loadById(this.inMemoryDetailsAlert.operationId).pipe(first()).subscribe( (verification: VerificationModel) => {\r\n this.verificationStretch = (verification && verification.stretch) ? verification.stretch : '';\r\n }, error => this.logger.error(error));\r\n }\r\n\r\n /**\r\n * Callback do evento de click nas linhas das tabelas de alerta.\r\n * Atualiza os dados dos detalhes do alerta selecionado.\r\n * @param alert\r\n */\r\n alertClicked(alert: AlertModel) {\r\n if (this.detailsChanged) {\r\n this.dialog.open(ConfirmationDialogComponent, {\r\n width: '480px',\r\n panelClass: 'sipd-modal',\r\n data:{\r\n msg: 'Dados editados serão perdidos. Deseja salvar?',\r\n title: \"Atenção\",\r\n okLabel: \"Salvar\",\r\n showDiscardButton: true\r\n }\r\n }).afterClosed().pipe(first()).subscribe((option:boolean) => {\r\n if(typeof(option) === 'string') {//discard\r\n this.changeDetails(alert);\r\n }\r\n else if(option) {//save\r\n this.onSaveDetailsClick();\r\n this.changeDetails(alert);\r\n }\r\n else if (!option) { //cancel ou clicar fora do dialogo\r\n }\r\n });\r\n }\r\n else {\r\n this.changeDetails(alert);\r\n }\r\n }\r\n\r\n updateDetails(alert: AlertModel): boolean{\r\n if (this.detailsAlert && this.detailsAlert.id == alert.id) {\r\n this.detailsAlert = alert;\r\n // Não atualiza o inMemoryDetailsAlert porque ele pode ter sido modificado\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n acknowledgeAlerts(selectedAlerts: AlertModel[]){\r\n let acknowledgmentAuthor = this.storageService.getLocalUser().login;\r\n let acknowledgmentDate = moment().valueOf();\r\n\r\n for (let i in selectedAlerts) {\r\n let alert = selectedAlerts[i];\r\n alert.acknowledged = true;\r\n alert.acknowledgmentAuthor = acknowledgmentAuthor;\r\n alert.acknowledgmentDate = acknowledgmentDate;\r\n if (this.updateDetails(alert)) {\r\n this.inMemoryDetailsAlert.acknowledged = alert.acknowledged;\r\n this.inMemoryDetailsAlert.acknowledgmentAuthor = alert.acknowledgmentAuthor;\r\n this.inMemoryDetailsAlert.acknowledgmentDate = alert.acknowledgmentDate;\r\n\r\n if (this.inMemoryDetailsAlert.observation != this.detailsAlert.observation) {\r\n this.detailsChanged = true;\r\n }\r\n else {\r\n this.detailsChanged = false;\r\n }\r\n }\r\n\r\n let alertItem: AlertModel = this.getAlertFromList(alert);\r\n if (alertItem) {\r\n alertItem.acknowledged = alert.acknowledged;\r\n alertItem.acknowledgmentAuthor = alert.acknowledgmentAuthor;\r\n alertItem.acknowledgmentDate = alert.acknowledgmentDate;\r\n }\r\n }\r\n\r\n const observables: Observable[] = [];\r\n selectedAlerts.forEach(alert => {\r\n observables.push(this.alertsService.editRecord(alert));\r\n });\r\n\r\n forkJoin(observables).pipe(first()).subscribe( (alerts: AlertModel[]) => {\r\n this.toastr.success('Alerta(s) reconhecido(s) com sucesso.');\r\n }, error => {\r\n this.logger.error(error);\r\n this.toastr.error('Ocorreu uma falha ao reconhecer o(s) alerta(s)');\r\n });\r\n }\r\n\r\n onAcknowledgeManyClick(){\r\n let selectedAlerts = this.getSelectedAlerts();\r\n selectedAlerts = selectedAlerts.filter((alert: AlertModel) => alert.acknowledged == false);\r\n if (selectedAlerts.length > 0){\r\n this.acknowledgeAlerts(selectedAlerts);\r\n }\r\n else {\r\n this.toastr.info(\"Nenhuma ação necessária. Todos os alertas selecionados já estão reconhecidos.\");\r\n }\r\n }\r\n\r\n // Context Menu action\r\n acknowledgeClicked(alert: AlertModel) {\r\n this.acknowledgeAlerts([alert]);\r\n }\r\n\r\n dataSourceLoaded(event) {\r\n if (this.searchInput.value && this.searchInput.value != \"\") {\r\n this.appAlertComponent.updateSearchFilter(this.searchInput.value.trim().toLowerCase());\r\n this.simfAlertComponent.updateSearchFilter(this.searchInput.value.trim().toLowerCase());\r\n }\r\n }\r\n\r\n getSimfInfo(alert): string{\r\n return AlertModel.getSimfInfo(alert, \"\\n\");\r\n }\r\n\r\n /**\r\n * Método que checa se o usuário pode ou não reconhecer o alerta\r\n * @returns boolean\r\n */\r\n denyAcknowledgedmentControl(){\r\n if(!this.inMemoryDetailsAlert) return true;\r\n\r\n //TODO Daniel: Descomentar quando o arquivamento de alertas for implementado\r\n //if(this.inMemoryDetailsAlert.archived && !this.authorizationService.isAdmin()) return false;\r\n\r\n const loggedUser = this.storageService.getLocalUser();\r\n\r\n if(this.inMemoryDetailsAlert.acknowledgmentAuthor !== '' && loggedUser.login !== this.inMemoryDetailsAlert.acknowledgmentAuthor) return true;\r\n\r\n return false;\r\n }\r\n\r\n getEventIdentifier(){\r\n if(this.inMemoryDetailsAlert.eventIdentifier) return this.inMemoryDetailsAlert.eventIdentifier;\r\n else return '';\r\n }\r\n\r\n getOperationIdentifier(){\r\n if(this.inMemoryDetailsAlert.operationIdentifier) return this.inMemoryDetailsAlert.operationIdentifier;\r\n else return '';\r\n }\r\n\r\n getOperationType(){\r\n if(this.inMemoryDetailsAlert.operationType) return this.operationTypeDescription[this.inMemoryDetailsAlert.operationType];\r\n else return '';\r\n }\r\n \r\n // Verifica se o usuário tem autorizaçao para ver a lista de alertas\r\n loggedUserPermission(event){ \r\n if(!this.authorizationService.userHasPermission(this.permission.LIST_ALERTS) && !this.closeWindows)\r\n this.glRemoveLayout('central');\r\n this.closeWindows = true;\r\n }\r\n\r\n getLocationTimestamp(){\r\n if(!this.inMemoryDetailsAlert?.locationTimestamp) return \"\";\r\n return DateUtils.timestampToStringInSeconds(this.inMemoryDetailsAlert?.locationTimestamp);\r\n }\r\n\r\n hasAccessSimf(){\r\n // Obtém as opções de permissão do usuário diferente de adm\r\n let permission_option: PermissionOptions = this.authorizationService.getUserPermissionOptions(this.permission.LIST_ALERTS);\r\n let hasSourceTypePermission = false;\r\n if(permission_option){\r\n hasSourceTypePermission = permission_option.fields.includes('SIMF');\r\n }else{\r\n hasSourceTypePermission = false;\r\n console.debug(\"permission_option é nulo ou indefinido.\");\r\n }\r\n \r\n console.debug(\"### Tem acesso aos sinais SIMF? \", hasSourceTypePermission);\r\n \r\n if(this.authorizationService.isAdmin() || hasSourceTypePermission){\r\n return true;\r\n }else{\r\n return false; \r\n }\r\n }\r\n\r\n getSizeAlerts(){\r\n if(this.hasAccessSimf()){\r\n return 50;\r\n }else{\r\n return 99;\r\n }\r\n }\r\n\r\n getSizeAlertsSimf(){\r\n if(this.hasAccessSimf()){\r\n return 50;\r\n }else{\r\n return 1;\r\n }\r\n }\r\n\r\n getLockSize(){\r\n if(this.hasAccessSimf()){\r\n return false;\r\n }else\r\n return true;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EntityService } from './entity.service';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nimport { environment } from 'src/environments/environment';\r\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { MarkerModel } from 'src/app/model/marker.model';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { API_VERSION_ENDPOINT } from '../../common/constants';\r\n\r\nimport * as moment from 'moment';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\nimport { MarkerFilterModel } from 'src/app/general/message/marker.filter.model';\r\nimport { FilterModel } from 'src/app/general/filter-component/filter.model';\r\nimport { first } from 'rxjs/operators';\r\nimport { UserModel } from 'src/app/model/user.model';\r\nimport { MarkerType, SourceType } from 'src/app/model/enums.enum';\r\nimport { ChannelModel } from 'src/app/model/channel.model';\r\nimport { ChannelService } from './channel.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MarkersService extends EntityService {\r\n\r\n // Notificação de novos marcadores recebidos pelo websocket\r\n private newMarkerReceived: Subject = new Subject();\r\n\r\n // Notificação de conexão estabelecida com o websocket\r\n private markerWebsocketConnected: Subject = new Subject();\r\n\r\n constructor(logger: NGXLogger,\r\n private channelService: ChannelService,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.markers_address}/marker`);\r\n }\r\n\r\n notifyNewMarkerReceived(marker: MarkerModel) {\r\n this.newMarkerReceived.next(marker);\r\n }\r\n\r\n onNewMarkerReceived(): Observable {\r\n return this.newMarkerReceived.asObservable();\r\n }\r\n\r\n notifyWebsocketConnected(connected: boolean) {\r\n this.markerWebsocketConnected.next(connected);\r\n }\r\n\r\n onMarkerWebsocketConnected(): Observable {\r\n return this.markerWebsocketConnected.asObservable();\r\n }\r\n\r\n protected filteredLoadFromRestApi( pageIndex?: number, pageSize?: number, sort?: string, filter?: FilterModel, extraParams?: Map ): Observable {\r\n let params: HttpParams = this.createHttpParams(filter as MarkerFilterModel);\r\n return super.loadFromRestApi(pageIndex, pageSize, sort, params);\r\n }\r\n\r\n\r\n private createHttpParams(filter: MarkerFilterModel): HttpParams{\r\n let params: HttpParams = new HttpParams();\r\n\r\n if(filter){\r\n\r\n if(filter.channelId){\r\n params = params.append('channelId', filter.channelId)\r\n }else{\r\n if(filter.operationId){\r\n params = params.append('operationId', filter.operationId);\r\n }\r\n\r\n if (filter.operationIds){\r\n filter.operationIds.forEach( opId => {\r\n params = params.append('operationIds', opId);\r\n });\r\n }\r\n \r\n if(filter.operationType){\r\n params = params.append('operationType', filter.operationType);\r\n }\r\n\r\n if(filter.inspectionId){\r\n params = params.append('inspectionId', filter.inspectionId)\r\n }\r\n\r\n if(filter.patrolTeamId){\r\n params = params.append('patrolTeamId', filter.patrolTeamId)\r\n }\r\n\r\n if(filter.startDate){\r\n const startDateTime = moment(filter.startDate).format('x');\r\n params = params.append('startDate', startDateTime);\r\n }\r\n\r\n if(filter.endDate){\r\n const endDateTime = moment(filter.endDate).format('x');\r\n params = params.append('endDate', endDateTime);\r\n }\r\n }\r\n }\r\n\r\n return params;\r\n }\r\n\r\n public loadFileById(fileId: string): Observable>{\r\n return this.http.get(this.apiUrl + '/file/' + fileId, { observe: 'response', responseType: 'blob' });\r\n }\r\n\r\n public create(record: MarkerModel, formElements: Map) {\r\n this.logger.debug('.create()');\r\n const formData: FormData = super.buildFormData(\"marker\", record, formElements);\r\n return super.postAsFormData(this.apiUrl, formData);\r\n }\r\n\r\n private createTeamInfoMarker(user: UserModel, patrolTeamId: string, msg: string): MarkerModel{\r\n let channel: ChannelModel = this.channelService.getChannelIdByReferenceId(patrolTeamId);\r\n if (!channel) {\r\n this.logger.error(\"Canal não encontrado para Equipe de id \" + patrolTeamId);\r\n return null;\r\n }\r\n\r\n let markerMessage: MarkerModel = new MarkerModel();\r\n markerMessage.message = msg;\r\n markerMessage.patrolTeamId = patrolTeamId;\r\n markerMessage.markerType = MarkerType.INFO_MESSAGE;\r\n markerMessage.sourceType = SourceType.WEB_APP;\r\n markerMessage.priority = false;\r\n markerMessage.location = {lat: 0, lng: 0};\r\n markerMessage.timestamp = moment().valueOf();\r\n markerMessage.serverTimestamp = null; // Não temos essa estimativa na Web\r\n markerMessage.userId = user.id.toString();\r\n markerMessage.userName = user.login; // Esconde o nome de quem não é profissional em canais de equipe\r\n markerMessage.channelId = channel.id;\r\n markerMessage.channelName = channel.name;\r\n markerMessage.uuid = uuidv4();\r\n\r\n return markerMessage;\r\n }\r\n\r\n public sendTeamInfoMessage(user: UserModel, patrolTeamId: string, msg: string) {\r\n const marker = this.createTeamInfoMarker(user, patrolTeamId, msg);\r\n if (!marker) return;\r\n\r\n const formElements = new Map();\r\n this.create(marker, formElements).pipe(first()).subscribe((marker: MarkerModel) => {\r\n this.logger.info('MarkersService.sendTextMessage - envio OK');\r\n }, error => this.logger.error(error));\r\n }\r\n\r\n /**\r\n * Obtem a versão do projeto Event-Verification\r\n */\r\n public getServiceVersion(): Observable {\r\n return this.http.get(`${this.apiUrl}/${API_VERSION_ENDPOINT}`,\r\n { responseType: 'text' }\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { API_VERSION_ENDPOINT } from '../../common/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WebSocketSignalsService {\r\n protected readonly apiUrl: string = `${environment.settings.websocket_http_address}/websocket`;\r\n\r\n constructor(private httpClient: HttpClient) {\r\n }\r\n\r\n /**\r\n * Obtem a versão do projeto registrations\r\n */\r\n public getServiceVersion(): Observable {\r\n return this.httpClient.get(`${this.apiUrl}/${API_VERSION_ENDPOINT}`,\r\n { responseType: 'text' }\r\n );\r\n }\r\n}\r\n","import { FilterModel } from \"./filter.model\";\r\n\r\nexport class OperationFilterModel extends FilterModel {\r\n\r\n patrolTeams: string[];\r\n}\r\n","import { ChangeDetectorRef, Directive, Inject, NgZone, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialog } from \"@angular/material/dialog\";\r\nimport * as GoldenLayout from \"golden-layout\";\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from \"ngx-golden-layout\";\r\nimport { NGXLogger } from \"ngx-logger\";\r\nimport { ToastrService } from \"ngx-toastr\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { EntityModel } from '../model/entity.model';\r\nimport { AuthorizationService } from \"../service/authorization/authorization.service\";\r\nimport { ArchiveService } from \"../service/model/archive.service\";\r\nimport { StorageService } from \"../service/storage-service\";\r\nimport { OperationModel } from '../model/operation.model';\r\nimport { HttpError, MAP_PAGE, MESSAGE_PAGE, PATROL_UPDATE_EVENT, VERIFICATION_UPDATE_EVENT } from '../common/constants';\r\nimport { TrackingService } from '../service/model/tracking.service';\r\nimport { OperationStatus, OperationType } from '../model/enums.enum';\r\nimport { OperationStatusDescription } from 'src/app/model/enums.enum';\r\nimport { MessageComponentData, MessageComponentType } from '../general/message/message.component';\r\nimport { Websocket } from '../service/websocket/websocket';\r\nimport { SignalModel } from 'src/app/model/signal.model';\r\nimport { Message } from '@stomp/stompjs';\r\nimport { PatrolService } from '../service/model/patrol.service';\r\nimport * as moment from 'moment';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ProfileClassToConsole } from '../common/profile-class.decorator';\r\nimport { first } from 'rxjs/operators';\r\nimport { ArchiveListComponent } from './archive-list-component';\r\nimport { OperationFilterModel } from '../general/filter-component/operation.filter.model';\r\nimport { VerificationModel } from '../model/verification.model';\r\nimport { MarkersService } from '../service/model/markers.service';\r\nimport { MarkerModel } from '../model/marker.model';\r\n\r\n@ProfileClassToConsole()\r\n@Directive()\r\nexport class OperationListComponent extends ArchiveListComponent implements OnInit, OnDestroy {\r\n\r\n private operationUpdateWebsocket: Websocket;\r\n private operationWebsocketConnectedSubscription: Subscription;\r\n private onNewMarkerSubscription: Subscription;\r\n\r\n public signalsWebsocket: Websocket;\r\n public signalsWebsocketSubscription: Subscription;\r\n\r\n constructor(public logger: NGXLogger,\r\n protected changeDetector: ChangeDetectorRef,\r\n protected ngZone: NgZone,\r\n public authorizationService: AuthorizationService,\r\n protected entityService: ArchiveService,\r\n protected operationType: OperationType,\r\n protected dialog: MatDialog,\r\n public componentName: string,\r\n public tabTitle: string,\r\n public title: string,\r\n public modelName: string, // Usado em diálogos de confirmação\r\n protected storageService: StorageService,\r\n protected trackingService: TrackingService,\r\n protected markerService: MarkersService,\r\n protected toastr: ToastrService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, changeDetector, authorizationService, entityService, dialog, componentName, tabTitle, title, modelName, storageService, trackingService, toastr, goldenLayout, container);\r\n }\r\n\r\n ngOnInit() {\r\n this.logger.debug('OperationListComponent.ngOnInit()');\r\n super.ngOnInit();\r\n this.isOperationArchiveButtonHiddenForUser();\r\n this.initWebsocket();\r\n this.subscribeToOperationUpdateEvent();\r\n this.subscribeToNewMarkersNotifications();\r\n }\r\n\r\n ngOnDestroy(){\r\n super.ngOnDestroy();\r\n\r\n this.operationWebsocketConnectedSubscription?.unsubscribe();\r\n this.signalsWebsocketSubscription?.unsubscribe();\r\n\r\n this.operationUpdateWebsocket?.destroy();\r\n this.signalsWebsocket?.destroy();\r\n this.operationUpdateWebsocket = null;\r\n this.signalsWebsocket = null;\r\n\r\n if(this.entityService instanceof PatrolService){\r\n this.glUnSubscribeEvent(PATROL_UPDATE_EVENT);\r\n }\r\n else {\r\n this.glUnSubscribeEvent(VERIFICATION_UPDATE_EVENT);\r\n }\r\n }\r\n\r\n initWebsocket() {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.subscribeToSignalsWebsocketStream();\r\n this.subscribeOnOperationWebsocketConnect();\r\n });\r\n }\r\n\r\n // Chamada quando algum item da lista foi atualizado pelo backend\r\n updateModelItem(id: string){\r\n this.entityService.getRecord(id).pipe(first()).subscribe((entity: EntityModel) => {\r\n if(!entity) { // Operação removida (note que o tratamento é diferente do RegistrationListComponent)\r\n this.model = this.model.filter( model => model.id != id);\r\n this.buildDataSource();\r\n return;\r\n }\r\n\r\n let operation = entity as OperationModel;\r\n operation.type = this.operationType;\r\n\r\n // Antes de adicionar na lista uma nova operação confere se o usuário tem acesso apenas algumas lotações \r\n let specificPlacements = this.storageService.getSpecificPlacementIds();\r\n if(specificPlacements.length > 0 && !specificPlacements.includes(operation.placement.id)){\r\n return;\r\n }\r\n\r\n // Se a operação está dentro da lista de operações de um evento, então somente as operações daquele evento devem ser atualizadas.\r\n // Se não está dentro da lista do evento retorna\r\n if(!this.checkInsideEventlistOrNotInsideEvent(entity)){ \r\n return;\r\n }\r\n\r\n let exclude = false; \r\n let toFilter = false;\r\n const oldModel = this.model.find( model => operation.id == model.id);\r\n \r\n if(this.checkFilterDates(operation)){\r\n toFilter = true;\r\n } \r\n else if(this.checkFilterStatus(operation)){\r\n toFilter = true;\r\n }\r\n else if(this.checkFilterPatrolTeam(operation)){\r\n toFilter = true;\r\n }\r\n else if(this.operationType == OperationType.EVENT_VERIFICATION && this.checkFilterPlacement(operation)){\r\n toFilter = true;\r\n }\r\n else if(this.operationType == OperationType.EVENT_VERIFICATION && this.checkFilterAnalyst(operation as VerificationModel)){\r\n toFilter = true;\r\n }\r\n\r\n if (toFilter == true) {\r\n if (!oldModel) {\r\n return;\r\n } else {\r\n exclude = true;\r\n }\r\n }\r\n\r\n if (oldModel)\r\n operation.lastSync = oldModel['lastSync'];\r\n\r\n this.findAndUpdateModel(operation, exclude);\r\n }, (error: HttpErrorResponse) => {\r\n if (error.status === HttpError.NOT_FOUND) { // Não deve acontecer, mas deixo o tratamento do Registration aqui como referencia\r\n this.model = this.model.filter( model => model.id != id);\r\n this.buildDataSource();\r\n return;\r\n }\r\n this.logger.error(error);\r\n });\r\n }\r\n\r\n /** Se inscreve para o ouvir o websocket de mudanças nas operações (rondas/verificações) */\r\n private subscribeToOperationUpdateEvent() {\r\n if(this.entityService instanceof PatrolService){\r\n this.glSubscribeEvent(PATROL_UPDATE_EVENT, (data) => {\r\n this.updateModelItem(data.id);\r\n });\r\n }\r\n else {\r\n this.glSubscribeEvent(VERIFICATION_UPDATE_EVENT, (data) => {\r\n this.updateModelItem(data.id);\r\n });\r\n }\r\n }\r\n /** Se inscreve como listener para receber notificações sempre que um marcador de mensagens for recebido */\r\n private subscribeToNewMarkersNotifications() {\r\n this.onNewMarkerSubscription = this.markerService.onNewMarkerReceived().subscribe((newMarker: MarkerModel) => {\r\n if (!newMarker) return;\r\n\r\n if (!newMarker.operationId) {\r\n return;\r\n }\r\n const entity: any = this.dataSource.data.find(entity => entity.id === newMarker.operationId);\r\n if (entity && newMarker.timestamp > entity.lastSync) {\r\n entity.lastSync = newMarker.timestamp;\r\n }\r\n this.renderComponent();\r\n}), (error: any) => {\r\n let errMsg = (error.message) ? error.message : error.status ? `${error.status} - ${error.statusText}` : 'Server error';\r\n this.logger.error(`[marker.component.ts] subscribeToNewMarkersNotifications: ${errMsg}`);\r\n };\r\n }\r\n\r\n /** Se inscreve para receber mensagens de localização */\r\n private subscribeToSignalsWebsocketStream() {\r\n this.signalsWebsocket = Websocket.createSignalsWebsocket();\r\n this.signalsWebsocketSubscription = this.signalsWebsocket.stream().subscribe((message: Message) => {\r\n // Não deixar descomentado, sobrecarrega o log\r\n // this.logger.debug(\"OperationListComponent.OnSignalsWebsocket()\");\r\n if (message && message.body) {\r\n const signal: SignalModel = JSON.parse(message.body);\r\n if (signal && signal.operationId) {\r\n const entity: any = this.dataSource.data.find(entity => entity.id === signal.operationId);\r\n if (entity) {\r\n if (entity.status === 'PLANNED') {\r\n return;\r\n }\r\n if (entity.status === 'FINISHED' && entity.lastSync) {\r\n return;\r\n }\r\n // PAUSED, STARTED\r\n entity.lastSync = signal.receivedTimestamp ? signal.receivedTimestamp: signal.timestamp;\r\n this.renderComponent();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Ao conectar com o websocket, recarrega as operações do backend para evitar alterações antigas perdidas\r\n */\r\n private subscribeOnOperationWebsocketConnect(){\r\n if(this.entityService instanceof PatrolService){\r\n this.operationUpdateWebsocket = Websocket.createPatrolUpdateWebsocket();\r\n }else{\r\n this.operationUpdateWebsocket = Websocket.createVerificationUpdateWebsocket();\r\n }\r\n\r\n this.operationWebsocketConnectedSubscription = this.operationUpdateWebsocket.onConnectCallback().subscribe(() => {\r\n this.logger.log('OnOperationWebsocketConnect ***** Conexão com o websocket estabelecida.');\r\n this.loadRecordsFromServer();\r\n this.renderComponent();\r\n }, (error: any) => this.logger.error(error));\r\n }\r\n\r\n onHistoricalTrackingClick(operation: OperationModel ) {\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingOperation: operation});\r\n }\r\n\r\n onHistoricalTrackingManyClick(){\r\n let historicalTrackingOperationList = [];\r\n this.selection.selected.forEach( (operation: OperationModel) => {\r\n if (this.canHasHistoricalTracking(operation)) {\r\n historicalTrackingOperationList.push(operation);\r\n }\r\n });\r\n\r\n // Note que depois de abrir o mapa pode descobrir que não tem sinais, raro mas pode acontecer\r\n if (historicalTrackingOperationList.length > 0)\r\n this.glOpenContainer(MAP_PAGE, {historicalTrackingOperationList: historicalTrackingOperationList});\r\n else\r\n this.toastr.warning(\"Nenhuma operação selecionada possui dados de rastro pois não foram iniciadas.\");\r\n }\r\n\r\n canHasHistoricalTracking(operation: OperationModel): boolean {\r\n if (operation && operation.status != OperationStatus.PLANNED\r\n && operation.status != OperationStatus.SENT)\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n hasLocation(operation: OperationModel): boolean {\r\n return operation &&\r\n ((operation.route && !!operation.route.fileRouteKml) ||\r\n (operation.inspections && operation.inspections.length != 0));\r\n }\r\n\r\n onMessagesClick(entity: EntityModel) {\r\n this.openMessageComponent(entity);\r\n }\r\n\r\n openMessageComponent(operation: OperationModel){\r\n const messageData: MessageComponentData = new MessageComponentData();\r\n messageData.componentType = MessageComponentType.OPERATION_MESSAGE;\r\n messageData.operationId = operation.id;\r\n messageData.operationType = operation.type;\r\n this.glOpenContainer(MESSAGE_PAGE, messageData);\r\n }\r\n\r\n getOperationStatus(operation: OperationModel): string {\r\n if (!operation) return '';\r\n\r\n if (operation.archived)\r\n return \"Arquivada\";\r\n else if (operation.status)\r\n return OperationStatusDescription[operation.status];\r\n else\r\n return '';\r\n }\r\n\r\n protected loadLastSignals() {\r\n if (this.model.length == 0) {\r\n return;\r\n }\r\n\r\n this.logger.debug(\"OperationListComponent.loadLastSignals\");\r\n\r\n let opDateName = this.operationType == OperationType.PATROL? 'startDate': 'sentDate';\r\n\r\n // Para otimizar a chamada ao backend olhamos para todas as operações\r\n // da mais antiga a mais recente da lista\r\n // model por default é ordenado por Identifier\r\n let startDate: number;\r\n let endDate: number;\r\n for(let i = 0; i < this.model.length; i++) {\r\n const opDate: number = this.model[i][opDateName];\r\n if (opDate) {\r\n if (!startDate || opDate < startDate){\r\n startDate = opDate;\r\n }\r\n if (!endDate || opDate > endDate){\r\n endDate = opDate;\r\n }\r\n }\r\n }\r\n\r\n if (!startDate && !endDate) return; // Nada a atualizar\r\n if (!startDate) startDate = endDate; \r\n if (!endDate) endDate = startDate; \r\n\r\n let filterStartDate = moment(startDate).startOf('day').valueOf(); // Horário local\r\n let filterEndDate = moment(endDate).endOf('day').valueOf();\r\n\r\n this.loadingOn();\r\n this.trackingService.getLastOperationSignals(this.operationType, filterStartDate, filterEndDate).pipe(first()).subscribe(lastSignalsJSON => {\r\n let lastSignals:Array = JSON.parse(lastSignalsJSON);\r\n this.logger.debug(\"OperationListComponent.loadLastSignals loaded=\", lastSignals.length);\r\n let updatedCount: number = 0;\r\n for(let i = 0; i < lastSignals.length; i++) {\r\n let entity = this.model.find( (entity:any) => lastSignals[i].key.operationId == entity.id && lastSignals[i].key.operationType == this.operationType );\r\n if(entity){\r\n let lastSync = lastSignals[i].receivedTimestamp? lastSignals[i].receivedTimestamp: lastSignals[i].timestamp;\r\n (entity as any).lastSync = lastSync;\r\n updatedCount++;\r\n }\r\n }\r\n this.logger.debug(\"OperationListComponent.loadLastSignals updated=\", updatedCount);\r\n /** Se a ordenação atual é a última atualização, força a ordenação da tabela */\r\n if(this.sort.active === 'lastSync')\r\n this.buildDataSource();\r\n },\r\n error => { \r\n this.toastr.error(\"Erro ao carregar dados de Última Atualização!\");\r\n this.logger.error(error); \r\n },\r\n () => { this.loadingOff(); });\r\n }\r\n\r\n getPropertyByPath(item: Object, property: string){\r\n switch (property) {\r\n case 'km':\r\n {\r\n const val = item['stretchStartKM'] && item['stretchEndKM'] ? item['stretchStartKM'] + ' - ' + item['stretchEndKM'] : item['km'];\r\n return val ? val : '';\r\n }\r\n case 'status': return this.getOperationStatus(item);\r\n default: return super.getPropertyByPath(item, property);\r\n }\r\n } \r\n \r\n checkFilterDates(operation: OperationModel){\r\n // data\r\n if(this.filterModel.startDate != null && this.filterModel.endDate != null){\r\n if(!(operation.startDate >= this.filterModel.startDate && operation.startDate <= this.filterModel.endDate))\r\n return true;\r\n }else if(this.filterModel.startDate == null && this.filterModel.endDate != null){\r\n if(!(operation.startDate <= this.filterModel.endDate))\r\n return true;\r\n }\r\n return false;\r\n } \r\n \r\n checkFilterStatus(operation: OperationModel){\r\n\r\n let filter: OperationFilterModel = this.filterModel as OperationFilterModel;\r\n\r\n if(filter.status != null && filter.status.length > 0){\r\n if(!filter.status.includes(operation.status))\r\n return true;\r\n }\r\n return false;\r\n } \r\n \r\n checkFilterPatrolTeam(operation: OperationModel){\r\n\r\n let filter: OperationFilterModel = this.filterModel as OperationFilterModel;\r\n\r\n if(filter.patrolTeams != null && filter.patrolTeams.length > 0){\r\n if(!filter.patrolTeams.includes(operation.patrolTeam.id))\r\n return true;\r\n }\r\n return false;\r\n } \r\n \r\n checkFilterPlacement(operation: OperationModel){\r\n\r\n let filter: OperationFilterModel = this.filterModel as OperationFilterModel;\r\n\r\n if(filter.placements != null && filter.placements.length > 0){\r\n if(!filter.placements.includes(operation.placement.id))\r\n return true;\r\n }\r\n return false;\r\n } \r\n \r\n checkFilterAnalyst(operation: VerificationModel){\r\n let filter: OperationFilterModel = this.filterModel as OperationFilterModel;\r\n if(filter.analysts != null && filter.analysts.length > 0){\r\n if(!filter.analysts.includes(operation.analyst.id))\r\n return true;\r\n }\r\n return false;\r\n } \r\n \r\n /** implementado na lista de verificações */\r\n //Rondas nunca estão dentro de eventos\r\n protected checkInsideEventlistOrNotInsideEvent(entity : any): boolean{\r\n return true;\r\n }\r\n\r\n updateOperationFromPatrolTeam(operation: OperationModel) {\r\n // Melhoria para abrir operações antigas de antes da mudanças de placement e company (mas a equipe precisa estar atualizada)\r\n if (!operation.patrolTeam) return;\r\n\r\n if (!operation.company && operation.patrolTeam.company) {\r\n operation.company = operation.patrolTeam.company;\r\n }\r\n\r\n if (!operation.placement && operation.company) {\r\n operation.placement = operation.company.placement;\r\n }\r\n\r\n if (!operation.serviceType && operation.patrolTeam.serviceType) {\r\n operation.serviceType = operation.patrolTeam.serviceType;\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { EventStatusDescription, EventStatus, ResultOccurrenceDescription } from 'src/app/model/enums.enum';\r\nimport { EventFilterModel } from './event.filter.model';\r\nimport { EventService } from 'src/app/service/model/event.service';\r\n\r\nimport { LayerService } from 'src/app/service/model/layer.service';\r\nimport { UserService } from 'src/app/service/model/user.service';\r\nimport { FilterComponent } from 'src/app/general/filter-component/filter-component';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { SingleDataCacheService } from '../../../service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { EventModel } from 'src/app/model/event.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { first } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'app-event-filter',\r\n templateUrl: './event-filter.component.html',\r\n styleUrls: ['./event-filter.component.scss', '../../filter.component.scss']\r\n})\r\nexport class EventFilterComponent extends FilterComponent implements OnInit, OnDestroy {\r\n\r\n @Input() inputFilterModel: EventFilterModel;\r\n\r\n /** ENUMS */\r\n resultOccurrenceDescription = ResultOccurrenceDescription;\r\n eventStatusDescription = EventStatusDescription;\r\n eventStatus = EventStatus;\r\n \r\n constructor(protected logger: NGXLogger,\r\n protected userService: UserService,\r\n protected layerService: LayerService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n public entityCacheService: EntityCacheService,\r\n protected eventService: EventService,\r\n protected toastr: ToastrService,\r\n public filterModel: EventFilterModel,\r\n protected storageService: StorageService ) {\r\n super(logger, userService, layerService, singleDataCacheService, entityCacheService, eventService, filterModel, storageService);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.filterModel = new EventFilterModel();\r\n this.inMemoryFilterModel = this.inputFilterModel;\r\n\r\n super.ngOnInit(); // A cópia do filtro será feita aqui\r\n }\r\n\r\n loadFormOptionsData() {\r\n this.loadAnalysts();\r\n\r\n const metadatas: string[] = [\r\n \"Valve\",\r\n \"Duct\",\r\n \"CommunicationChannel\",\r\n \"ReportSource\"];\r\n \r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n\r\n /**\r\n * Limpa todos os campos do filtro\r\n */\r\n clearFilter(){\r\n super.clearFilter();\r\n\r\n this.filterModel.sources = [];\r\n this.filterModel.occurrences = [];\r\n this.filterModel.channels = [];\r\n this.filterModel.startKM = undefined;\r\n this.filterModel.endKM = undefined;\r\n }\r\n\r\n onFilter(){\r\n this.loadingListService.loadingOn();\r\n this.loadFilteredDataModel().pipe(first()).subscribe( (entity : EventModel[]) => {\r\n this.filtered.emit(entity);\r\n }, error => {\r\n if(error.status == 413){\r\n this.toastr.warning(\"Sua consulta retornou mais de 2000 registros, por favor refina sua busca.\");\r\n this.filtered.emit([]);\r\n }else{\r\n this.logger.error(error)\r\n } \r\n },\r\n () => {\r\n this.loadingListService.loadingOff();\r\n });\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n \r\n \r\n Todos\r\n \r\n Arquivados\r\n \r\n Não Arquivados\r\n \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n Hoje\r\n Especificado\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n\r\n \r\n Hora Inicial\r\n \r\n query_builder\r\n \r\n\r\n \r\n\r\n \r\n Hora Final\r\n \r\n query_builder\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n KM Inicial\r\n \r\n \r\n\r\n \r\n KM Final\r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n","import { EventMainActionModel } from './event.main.action.model';\r\nimport { ResultsModel } from './results.model';\r\nimport { UserModel } from './user.model';\r\nimport { CommonModel } from './common.model';\r\nimport { ResultOccurrenceDescription, EventStatus, EventStatusDescription } from './enums.enum';\r\nimport { ValidationNoteModel } from './validation.note.model';\r\nimport DateUtils from '../service/util/date-utils';\r\nimport { VerificationModel } from './verification.model';\r\nimport { InspectionModel } from './inspection.model';\r\nimport { AttachmentModel } from './attachment.model';\r\nimport LanguageUtils from '../service/util/language-utils';\r\n\r\nexport class EventModel extends CommonModel {\r\n\r\n analyst: UserModel;\r\n date: number; // TODO scuri Deveria ser startDate\r\n communicationChannel: string;\r\n who: string;\r\n source: string;\r\n alertLevel: string;\r\n operatorCNCL: UserModel;\r\n coturCNCL: UserModel;\r\n situation: string;\r\n product: string;\r\n flow: string;\r\n stolenVolume: string;\r\n callId168: string;\r\n category168: string;\r\n subcategory168: string;\r\n validation: string;\r\n validationAnalyst: UserModel;\r\n validationNotes: ValidationNoteModel[];\r\n band: string;\r\n duct: string;\r\n valve: string;\r\n targetPointKM: string; // Mesmo que km em operações\r\n targetPointLatLong: string; // Mesmo que latLong em operações\r\n stretchStartKM: string;\r\n stretchEndKM: string;\r\n stretchStartLatLong: string;\r\n stretchEndLatLong: string;\r\n stretch: string;\r\n zipCode: string;\r\n street: string;\r\n city: string;\r\n state: string;\r\n result: ResultsModel;\r\n actions: EventMainActionModel[];\r\n associatedEventId: string; // evento ao qual este evento é associado\r\n associatedIdentifier: string; // identificador do evento ao qual este evento é associado\r\n suspiciousDate: number; \r\n stopDate: number;\r\n startDate: number;\r\n endDate: number;\r\n attachmentOpFile1: AttachmentModel;\r\n attachmentOpFile2: AttachmentModel;\r\n attachmentOpFile3: AttachmentModel;\r\n attachmentOpFile4: AttachmentModel;\r\n attachmentOpFile5: AttachmentModel;\r\n\r\n verifications: VerificationModel[]; // usado somente na exportação de eventos\r\n pointsDescription: string; // usado somente na exportação de eventos\r\n requestedPoints; number; // usado somente na exportação de eventos\r\n visitedPoints: number; // usado somente na exportação de eventos\r\n pointsDiff: number; // usado somente na exportação de eventos\r\n noAccessPoints: InspectionModel[]; // usado somente na exportação de eventos\r\n\r\n constructor(){\r\n super();\r\n this.actions = [];\r\n this.result = new ResultsModel();\r\n this.archived = false;\r\n this.status = EventStatus.IN_TREATMENT;\r\n this.verifications = [];\r\n }\r\n\r\n\r\n public static getPopupContent(event: EventModel, search: boolean = false){\r\n return `
    Evento
    \r\n ${event.identifier? `
    ID: ${ event.identifier }
    ` : ''}\r\n
    Status: ${ EventStatusDescription[event.status] }
    \r\n ${event.result && event.result.occurrence ?\r\n `
    Ocorrência: ${ ResultOccurrenceDescription[event.result.occurrence]}
    ` : ''}\r\n
    Data/Hora Criação: ${ DateUtils.timestampToStringInMinutes(event.date)}
    \r\n
    Analista: ${event.analyst ? event.analyst.name : ''}
    \r\n
    Canal de Comunicação: ${event.communicationChannel}
    \r\n
    Origem: ${event.source}
    \r\n ${event.duct ? `
    Duto: ${event.duct}
    ` : \"\"}\r\n ${event.valve ? `
    Válvula: ${event.valve}
    ` : \"\"}\r\n ${(event.stretchStartKM && event.stretchEndKM) || event.targetPointKM ?\r\n `
    KM: ${event.stretchStartKM && event.stretchEndKM ? event.stretchStartKM + \" - \" + event.stretchEndKM : event.targetPointKM}
    ` : \"\"}\r\n ${!search && ((event.stretchStartLatLong && event.stretchEndLatLong) || event.targetPointLatLong) ?\r\n `
    Lat, Long: ${event.stretchStartLatLong && event.stretchEndLatLong ?\r\n event.stretchStartLatLong + \" - \" + event.stretchEndLatLong : event.targetPointLatLong}
    ` : \"\"}\r\n `;\r\n }\r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['analyst'] = 'Analista CCPD';\r\n LanguageUtils.languageMap['validation'] = 'Validação';\r\n LanguageUtils.languageMap['validationAnalyst'] = 'Analista Validação';\r\n LanguageUtils.languageMap['validationNotes'] = 'Notas de Validação';\r\n LanguageUtils.languageMap['stopDate'] = 'Data de Parada';\r\n LanguageUtils.languageMap['suspiciousDate'] = 'Data de Suspeita';\r\n LanguageUtils.languageMap['flow'] = 'Vazão - m³/h';\r\n LanguageUtils.languageMap['stolenVolume'] = 'Volume Subtraído (m³)';\r\n LanguageUtils.languageMap['callId168'] = 'ID Chamada 168';\r\n LanguageUtils.languageMap['category168'] = 'Categoria 168';\r\n LanguageUtils.languageMap['subcategory168'] = 'Subcategoria 168';\r\n LanguageUtils.languageMap['date'] = 'Data de Início';\r\n LanguageUtils.languageMap['communicationChannel'] = 'Canal de Comunicação';\r\n LanguageUtils.languageMap['zipCode'] = 'CEP';\r\n LanguageUtils.languageMap['street'] = 'Logradouro';\r\n LanguageUtils.languageMap['validation'] = 'Validação';\r\n LanguageUtils.languageMap['alertLevel'] = 'Nível de Alerta';\r\n LanguageUtils.languageMap['operatorCNCL'] = 'Operador CNCL';\r\n LanguageUtils.languageMap['coturCNCL'] = 'Cotur CNCL';\r\n LanguageUtils.languageMap['actions'] = 'Ações Principais';\r\n LanguageUtils.languageMap['state'] = 'UF';\r\n LanguageUtils.languageMap['who'] = 'Quem?';\r\n LanguageUtils.languageMap['situation'] = 'Situação';\r\n LanguageUtils.languageMap['source'] = 'Origem';\r\n LanguageUtils.languageMap['targetPointKM'] = 'KM';\r\n LanguageUtils.languageMap['targetPointLatLong'] = 'KM (Lat, Long)';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { API_VERSION_ENDPOINT } from '../../common/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SignalsService {\r\n protected readonly apiUrl: string = `${environment.settings.signals_address}/signals`;\r\n\r\n constructor(private httpClient: HttpClient) {\r\n }\r\n\r\n /**\r\n * Obtem a versão do projeto registrations\r\n */\r\n public getServiceVersion(): Observable {\r\n return this.httpClient.get(`${this.apiUrl}/${API_VERSION_ENDPOINT}`,\r\n { responseType: 'text' }\r\n );\r\n }\r\n}\r\n","export abstract class EntityModel {\r\n id: string;\r\n active: boolean;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { BlankComponent } from './pages/base-golden-panel/blank/blank.component';\r\nimport { MsalGuard } from '@azure/msal-angular';\r\n\r\nconst routes: Routes = [\r\n { path: '', component: BlankComponent, canActivate: [ MsalGuard ] },\r\n // otherwise redirect to home\r\n { path: '**', redirectTo: '' }\r\n];\r\n\r\nconst isIframe = window !== window.parent && !window.opener;\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes,{\r\n useHash: true,\r\n // Don't perform initial navigation in iframes\r\n initialNavigation: !isIframe ? 'enabled' : 'disabled'\r\n })],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","// services\r\nimport {NGXLogger} from 'ngx-logger';\r\nimport * as L from 'leaflet';\r\nimport {PatrolService} from './patrol.service';\r\n\r\n// model\r\nimport {SignalModel} from '../../model/signal.model';\r\nimport {TrackingModel} from '../../model/tracking.model';\r\nimport {OperationType, SourceType} from '../../model/enums.enum';\r\n\r\nimport * as moment from 'moment';\r\n\r\nimport { API_VERSION_ENDPOINT, APP_SIGNAL_INVALID, Icons, LAST_OPERATION_SIGNALS, LAST_SIGNALS, LAST_SIGNALS_TRACKING_LIMIT, LAST_VEHICLE_SIGNALS, LOST_SIGNAL_LIMIT, MapInfo, TEAM_NOT_FOUND, TRACKING_PAGE, USER_NOT_FOUND } from '../../common/constants';\r\nimport { VerificationService } from 'src/app/service/model/verification.service';\r\nimport { EntityService } from 'src/app/service/model/entity.service';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { environment } from 'src/environments/environment';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { FILL_DATA_PREFIX, MAP_PAGE } from 'src/app/common/constants';\r\nimport { PatrolTeamModel } from 'src/app/model/patrolteam.model';\r\nimport { OperationModel } from '../../model/operation.model';\r\nimport { AbstractSignalModel } from 'src/app/model/abstract.signal.model';\r\nimport { VehicleSignalModel } from 'src/app/model/vehicle.signal.model';\r\nimport { EntityCacheService } from './entity.cache.service';\r\nimport { first } from 'rxjs/operators';\r\nimport { LoadingListService } from '../loading/loading-list.service';\r\nimport { CompanyModel } from 'src/app/model/company.model';\r\nimport { AuthorizationService } from '../authorization/authorization.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TrackingService extends EntityService {\r\n private startedOperations: Map = new Map();\r\n\r\n private trackingMap: Map = new Map(); //key é mobileObjectId - contém a lista completa de tracking recebidos\r\n\r\n private eventHub: GoldenLayout.EventEmitter;\r\n\r\n private loadingLastSignals: boolean = false;\r\n private loadingLastVehicleSignals: boolean = false;\r\n\r\n private loadAll = 0;\r\n \r\n constructor(logger: NGXLogger,\r\n protected httpClient: HttpClient,\r\n private patrolService: PatrolService,\r\n private verificationService: VerificationService,\r\n public authorizationService: AuthorizationService,\r\n public entityCacheService: EntityCacheService){\r\n super(logger, httpClient, `${environment.settings.tracking_address}/tracking`);\r\n }\r\n \r\n isNewerSignal(signal: AbstractSignalModel, signalReceived: AbstractSignalModel): boolean {\r\n return signalReceived.timestamp > signal.timestamp;\r\n }\r\n\r\n setEventHub(eventHub: GoldenLayout.EventEmitter){\r\n this.eventHub = eventHub;\r\n }\r\n\r\n getTrackingList(): TrackingModel[] {\r\n return Array.from(this.trackingMap.values());\r\n }\r\n\r\n // Só pode ser chamada depois de autenticado\r\n initialize(){\r\n this.entityCacheService.loadUsers(null, () => {\r\n this.loadAll++;\r\n if (this.loadAll == 3) this.updateTrackings();\r\n });\r\n this.entityCacheService.loadPatrolTeams(null, () => {\r\n this.loadAll++;\r\n if (this.loadAll == 3) this.updateTrackings();\r\n });\r\n this.entityCacheService.loadVehicles(null, () => {\r\n this.loadAll++;\r\n if (this.loadAll == 3) this.updateTrackings();\r\n });\r\n\r\n this.loadLastSignals(null, null);\r\n this.loadLastVehicleSignals(null, null);\r\n }\r\n\r\n /** Recebe um objeto traking e verifica se o placement da equipe/veículo \r\n * encontra-se na lista de placements que pertence o usuário perfil*/\r\n isPermittedPlacement(tracking: TrackingModel, specificPlacements: string[]):boolean{\r\n\r\n if (specificPlacements.length == 0) return true;\r\n if (this.authorizationService.isAdmin()) return true;\r\n\r\n // Se o usuário não tem acesso a todas as lotações, filtra só aquelas que pertence\r\n\r\n if(tracking.company && tracking.company.placement){\r\n return specificPlacements.includes(tracking.company.placement.id); \r\n }\r\n else if (tracking.signal['placementId']) {\r\n return specificPlacements.includes(tracking.signal['placementId']);\r\n }\r\n else {\r\n return false; // Não administradores não veem se não possuirem a empresa definida\r\n }\r\n }\r\n\r\n /**\r\n * Verifica se já existe um tracking item no mapa para o mobileId do sinal recebido. Se não existir, mantem a flag do updateInfo = true\r\n * para criar uma nova entrada no mapa.\r\n * Se já existir, verifica se o sinal tem uma operação ou se o tipo da operação do sinal recebido é diferente da entrada no mapa existente.\r\n * Se uma dessas condições for verdadeira, também mantém a flag do updateInfo = true para atualizar\r\n * essas informações.\r\n *\r\n * Além disso, se existir a entrada do mobileId no mapa de objetos móveis, ele atualiza\r\n * o tracking com as novas coordenadas do sinal.\r\n */\r\n updateTracking(signalReceived: AbstractSignalModel, notify: boolean){\r\n let tracking: TrackingModel = this.trackingMap.get(signalReceived.mobileObjectId);\r\n if (!tracking) {\r\n tracking = new TrackingModel();\r\n tracking.signal = signalReceived;\r\n \r\n this.updateTrackingInfo(tracking);\r\n\r\n // Salva modificação e notifica o mapa\r\n this.trackingMap.set(tracking.signal.mobileObjectId, tracking);\r\n \r\n if (notify) { \r\n this.notifyMap(tracking);\r\n this.notifyTrackingList();\r\n }\r\n return true;\r\n }\r\n\r\n let updateInfo: boolean = false;\r\n\r\n if(tracking.signal.sourceType === SourceType.MOBILE_APP) {\r\n if (!this.isNewerSignal(tracking.signal, signalReceived)) {\r\n return false; // Sinal antigo é ignorado sempre para o APP\r\n }\r\n else {\r\n updateInfo = true;\r\n tracking.signal = signalReceived;\r\n }\r\n }\r\n else { // VEHICLE\r\n let vehicleSignal: VehicleSignalModel = tracking.signal as VehicleSignalModel;\r\n let vehicleSignalReceived: VehicleSignalModel = signalReceived as VehicleSignalModel;\r\n\r\n if (!this.isNewerSignal(tracking.signal, signalReceived)) { // Sinal mais antigo chegou\r\n // mas no caso de veículo pode ser uma atualização enriquecida\r\n if (!vehicleSignal.enriched && vehicleSignalReceived.enriched) {\r\n // Mantenho os dados do sinal mais atual, e copio apenas o que foi enriquecido\r\n tracking.signal.teamId = vehicleSignalReceived.teamId;\r\n tracking.signal.operationId = vehicleSignalReceived.operationId;\r\n tracking.signal.operationType = vehicleSignalReceived.operationType;\r\n tracking.signal.operationStatus = vehicleSignalReceived.operationStatus;\r\n vehicleSignal.companyId = vehicleSignalReceived.companyId;\r\n vehicleSignal.placementId = vehicleSignalReceived.placementId;\r\n vehicleSignal.enriched = true; // same as vehicleSignalReceived.enriched\r\n updateInfo = true;\r\n }\r\n else {\r\n return false; // ignora se o recebido não estiver enriquecido, ou se o atual já estiver enriquecido (o recebido é mais antigo então prevalece o atual)\r\n }\r\n }\r\n else { // Sinal mais recente chegou\r\n // no caso de veículo, pode ser um sinal que ainda não está enriquecido\r\n if (vehicleSignal.enriched && !vehicleSignalReceived.enriched) {\r\n // Mantenho os dados do sinal recebido e copio o que já tinha sido enriquecido no sinal atual\r\n vehicleSignalReceived.teamId = tracking.signal.teamId;\r\n vehicleSignalReceived.operationId = tracking.signal.operationId;\r\n vehicleSignalReceived.operationType = tracking.signal.operationType;\r\n vehicleSignalReceived.operationStatus = tracking.signal.operationStatus;\r\n vehicleSignalReceived.companyId = vehicleSignal.companyId;\r\n vehicleSignalReceived.placementId = vehicleSignal.placementId;\r\n vehicleSignalReceived.enriched = true; // same as vehicleSignal.enriched\r\n }\r\n else{\r\n // Sinal atual não enriquecido ou sinal recebido enriquecido (o atual é mais antigo então prevalece o recebido)\r\n updateInfo = true;\r\n }\r\n\r\n tracking.signal = signalReceived;\r\n }\r\n }\r\n\r\n this.updateVehicleSignal(tracking);\r\n\r\n // otimização para evitar ter que atualizar dados dos sinais a todo momento TODO scuri - acho que isso não é mais necessário\r\n if(updateInfo){\r\n this.updateTrackingInfo(tracking);\r\n }\r\n\r\n if (notify) {\r\n this.notifyMap(tracking);\r\n this.notifyTrackingList();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private reportTrackingList(){\r\n if (this.loadAll < 3) return;\r\n\r\n let invalidCount = 0;\r\n this.trackingMap.forEach(tracking => {\r\n if (tracking.invalidInfo) {\r\n invalidCount++;\r\n \r\n const title = (SourceType.MOBILE_APP ? 'Profissional ' : 'Veículo ') + tracking.signal.mobileObjectId;\r\n this.logger.debug(\"TrackingService Item Inválido: \" + title + \" [\" + tracking.invalidCode + \"]\");\r\n }\r\n });\r\n this.logger.debug(\"TrackingService Total de Itens Inválidos: \" + invalidCount);\r\n this.logger.debug(\"TrackingService Total de Itens: \" + this.trackingMap.size);\r\n }\r\n\r\n loadLastSignals(loadingListService: LoadingListService, loadAtMap: boolean) {\r\n if (!this.loadingLastSignals) {\r\n this.logger.debug(\"TrackingService.loadLastSignals\");\r\n this.loadingLastSignals = true;\r\n loadingListService?.loadingOn();\r\n const trackLimit = environment.development? 7*24*LAST_SIGNALS_TRACKING_LIMIT: LAST_SIGNALS_TRACKING_LIMIT;\r\n const startDate = moment().subtract(trackLimit, 'minutes').valueOf(); // Now - interval\r\n this.getLastSignals(null, startDate, null).pipe(first()).subscribe(lastSignalsJSON => {\r\n let lastSignals:Array = JSON.parse(lastSignalsJSON);\r\n this.logger.debug(\"loadLastSignals loaded= \", lastSignals.length);\r\n for(let i = 0; i < lastSignals.length; i++) {\r\n let tracking: TrackingModel = this.trackingMap.get(lastSignals[i].mobileObjectId);\r\n if(!tracking || tracking.signal.timestamp < lastSignals[i].timestamp){\r\n this.processLastSignal(lastSignals[i]);\r\n }\r\n if (tracking) {\r\n if (loadAtMap) tracking.removedFromMap = false;\r\n else tracking.removedFromTracking = false;\r\n }\r\n }\r\n\r\n // Atualiza lista depois que todos foram atualziados\r\n this.logger.debug(\"loadLastSignals end\");\r\n this.reportTrackingList();\r\n this.notifyMapList();\r\n this.notifyTrackingList();\r\n this.loadingLastSignals = false;\r\n loadingListService?.loadingOff();\r\n },\r\n error => {\r\n this.logger.error(error);\r\n this.loadingLastSignals = false;\r\n loadingListService?.loadingOff();\r\n });\r\n }\r\n }\r\n\r\n private processLastSignal(lastSignal: any) { // LastSignalVO\r\n let signal: SignalModel = new SignalModel();\r\n signal.mobileObjectId = lastSignal.mobileObjectId;\r\n signal.timestamp = lastSignal.timestamp;\r\n signal.latitude = lastSignal.latitude;\r\n signal.longitude = lastSignal.longitude;\r\n signal.sourceType = lastSignal.sourceType;\r\n signal.userId = lastSignal.userId;\r\n signal.operationId = lastSignal.operationId;\r\n signal.operationType = lastSignal.operationType;\r\n signal.operationStatus = lastSignal.operationStatus;\r\n signal.receivedTimestamp = lastSignal.receivedTimestamp;\r\n signal.teamId = lastSignal.key.teamId; // teamId fica dentro da Key\r\n\r\n this.updateTracking(signal, false);\r\n }\r\n\r\n loadLastVehicleSignals(loadingListService: LoadingListService, loadAtMap: boolean) {\r\n if (!this.loadingLastVehicleSignals) {\r\n this.logger.debug(\"TrackingService.loadLastVehicleSignals\");\r\n this.loadingLastVehicleSignals = true;\r\n loadingListService?.loadingOn();\r\n const trackLimit = environment.development? 7*24*LAST_SIGNALS_TRACKING_LIMIT: LAST_SIGNALS_TRACKING_LIMIT;\r\n const startDate = moment().subtract(trackLimit, 'minutes').valueOf(); // Now - interval\r\n this.getLastVehicleSignals(null, startDate, null).pipe(first()).subscribe(lastSignalsJSON => {\r\n let lastSignals:Array = JSON.parse(lastSignalsJSON);\r\n this.logger.debug(\"loadLastVehicleSignals loaded= \", lastSignals.length);\r\n for(let i = 0; i < lastSignals.length; i++) {\r\n let tracking: TrackingModel = this.trackingMap.get(lastSignals[i].mobileObjectId);\r\n if(!tracking || tracking.signal.timestamp < lastSignals[i].timestamp){\r\n // Não preciso chamar processLastSignal para LastSignal de veículos porque duplicamos o mobileObjectId da Key na classe LastVehicleSignalVO\r\n this.updateTracking(lastSignals[i], false);\r\n }\r\n if (tracking) {\r\n if (loadAtMap) tracking.removedFromMap = false;\r\n else tracking.removedFromTracking = false;\r\n }\r\n }\r\n\r\n // Atualiza lista depois que todos foram atualziados\r\n this.logger.debug(\"loadLastVehicleSignals end\");\r\n this.reportTrackingList();\r\n this.notifyMapList();\r\n this.notifyTrackingList();\r\n this.loadingLastVehicleSignals = false;\r\n loadingListService?.loadingOff();\r\n },\r\n error => {\r\n this.logger.error(error);\r\n this.loadingLastVehicleSignals = false;\r\n loadingListService?.loadingOff();\r\n });\r\n }\r\n }\r\n\r\n private notifyMap(tracking: TrackingModel){\r\n if (this.eventHub) this.eventHub.emit(FILL_DATA_PREFIX + MAP_PAGE, {tracking: tracking});\r\n } \r\n\r\n private notifyTrackingList(){\r\n if (this.eventHub) this.eventHub.emit(FILL_DATA_PREFIX + TRACKING_PAGE, {updateFilter: true});\r\n }\r\n\r\n private notifyMapList(){\r\n let trackingList: TrackingModel[] = this.getTrackingList();\r\n if (this.eventHub) this.eventHub.emit(FILL_DATA_PREFIX + MAP_PAGE, {trackingList: trackingList});\r\n }\r\n\r\n private updateVehicleSignal(tracking: TrackingModel) {\r\n if(tracking.signal.sourceType === SourceType.MOBILE_APP) {\r\n if (tracking.patrolTeam && tracking.patrolTeam.vehicle) {\r\n this.trackingMap.forEach((t: TrackingModel) => {\r\n // Se é sinal de App, procura por sinal de veículo com mesma placa, e atualiza sinal do veículo\r\n if (t.signal.sourceType === SourceType.VEHICLE &&\r\n t.signal.mobileObjectId == tracking.patrolTeam.vehicle.plate){\r\n let vehicleSignal: VehicleSignalModel = t.signal as VehicleSignalModel;\r\n if (!vehicleSignal.enriched) { // apenas para sinais de veículo não enriquecidos\r\n vehicleSignal.teamId = tracking.signal.teamId;\r\n vehicleSignal.operationId = tracking.signal.operationId;\r\n vehicleSignal.operationType = tracking.signal.operationType;\r\n vehicleSignal.operationStatus = tracking.signal.operationStatus;\r\n t.operation = tracking.operation;\r\n t.patrolTeam = tracking.patrolTeam;\r\n t.user = tracking.user;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n else{\r\n let vehicleSignal: VehicleSignalModel = tracking.signal as VehicleSignalModel;\r\n if (!vehicleSignal.enriched) { // apenas para sinais de veículo não enriquecidos\r\n this.trackingMap.forEach((t: TrackingModel) => {\r\n if (t.patrolTeam && t.patrolTeam.vehicle) {\r\n // Se é sinal de Veículo, procura por sinal de App com mesma placa\r\n if (t.signal.sourceType === SourceType.MOBILE_APP &&\r\n tracking.signal.mobileObjectId == t.patrolTeam.vehicle.plate){\r\n vehicleSignal.teamId = t.signal.teamId;\r\n vehicleSignal.operationId = t.signal.operationId;\r\n vehicleSignal.operationType = t.signal.operationType;\r\n vehicleSignal.operationStatus = t.signal.operationStatus;\r\n tracking.operation = t.operation;\r\n tracking.patrolTeam = t.patrolTeam;\r\n tracking.user = t.user;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n private getCompany(tracking: TrackingModel): CompanyModel{\r\n if (tracking.patrolTeam) {\r\n return tracking.patrolTeam.company;\r\n }\r\n if (tracking.signal.sourceType === SourceType.VEHICLE) {\r\n return tracking.vehicle?.company;\r\n }\r\n else {\r\n return tracking.user?.company;\r\n }\r\n }\r\n\r\n private updateTrackingInfo(tracking: TrackingModel){\r\n // Atualiza os modelos a partir dos Ids\r\n tracking.operation = tracking.signal.operationId? this.getOperation(tracking.signal.operationId, tracking.signal.operationType, tracking.signal.operationStatus): null;\r\n if(tracking.operation){\r\n tracking.operation.type = tracking.signal.operationType;\r\n tracking.patrolTeam = tracking.operation.patrolTeam;\r\n tracking.invalidInfo = false;\r\n }else{\r\n if (tracking.signal.teamId) {\r\n tracking.patrolTeam = this.entityCacheService.getPatrolTeamById(tracking.signal.teamId);\r\n if (!tracking.patrolTeam) {\r\n // Equipe não encontrada. \r\n // Ou é um erro de cadastro (a equipe foi removida)\r\n // Ou não pode ser obtida por falta de permissão do usuário logado\r\n // Nesse caso temos que remover o tracking\r\n tracking.invalidInfo = true;\r\n tracking.invalidCode = TEAM_NOT_FOUND;\r\n }\r\n else {\r\n tracking.invalidInfo = false;\r\n }\r\n }\r\n else {\r\n tracking.patrolTeam = null; // Usuário sem equipe OK\r\n tracking.invalidInfo = false;\r\n }\r\n }\r\n\r\n if(tracking.signal.sourceType === SourceType.MOBILE_APP) {\r\n const signal: SignalModel = tracking.signal;\r\n if (signal.userId) {\r\n tracking.user = this.entityCacheService.getUserById(signal.userId);\r\n if (!tracking.user) {\r\n // Usuário não encontrado. \r\n // Ou é um erro de cadastro (o usuário foi removido)\r\n // Ou não pode ser obtido por falta de permissão do usuário logado\r\n // Nesse caso temos que remover o tracking\r\n tracking.invalidInfo = true;\r\n tracking.invalidCode = USER_NOT_FOUND;\r\n }\r\n else {\r\n tracking.invalidInfo = false;\r\n }\r\n }\r\n else {\r\n tracking.user = null; // Não pode não ter usuário\r\n tracking.invalidInfo = true;\r\n tracking.invalidCode = APP_SIGNAL_INVALID;\r\n this.logger.error(\"Sinal de App sem UserId\");\r\n }\r\n }\r\n else {\r\n tracking.vehicle = this.entityCacheService.getVehicleByPlate(tracking.signal.mobileObjectId);\r\n }\r\n\r\n this.updateIcon(tracking);\r\n\r\n tracking.title = TrackingModel.getBaseTitle(tracking.signal.sourceType, tracking.signal.mobileObjectId, tracking.user);\r\n\r\n tracking.company = this.getCompany(tracking);\r\n }\r\n\r\n private updateTrackings() {\r\n // Atualiza a partir dele mesmo, pois dados de usuários e equipes terminaram de ser carregados\r\n this.trackingMap.forEach( (tracking: TrackingModel) => {\r\n if(tracking.signal){\r\n this.updateTrackingInfo(tracking);\r\n }\r\n });\r\n this.notifyMapList();\r\n this.notifyTrackingList();\r\n }\r\n\r\n /** Atualiza uma operação para quem já está associado à operação */\r\n updateOperation(operation: OperationModel, loaded: boolean) {\r\n this.trackingMap.forEach((tracking: TrackingModel) => {\r\n if(tracking.operation){\r\n if(tracking.operation.id && tracking.operation.id == operation.id) {\r\n tracking.operation = operation;\r\n if (!loaded) this.startedOperations.set(operation.id + operation.type, operation);\r\n this.notifyMap(tracking);\r\n }\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Verifica se o sinal de um objeto móvel foi perdido (se o último tiver sido recebido há mais tempo\r\n * do que o limite máximo)\r\n */\r\n private isTheSignalLost(signal: AbstractSignalModel){\r\n let signalMoment = moment(signal.timestamp);\r\n let currentDay = moment();\r\n var seconds = currentDay.diff(signalMoment, 'seconds');\r\n if(seconds > LOST_SIGNAL_LIMIT){\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** Retorna o ícone apropriado de acordo com o tipo e o estado do objeto móvel (sinal online/offline) */\r\n private buildIconAccordingToSignal(signal: AbstractSignalModel) {\r\n let iconUrlValue = null;\r\n let isLostSignal: boolean = this.isTheSignalLost(signal);\r\n if (signal.sourceType == SourceType.VEHICLE) {\r\n if (signal.operationId) {\r\n if (signal.operationType == OperationType.PATROL) {\r\n iconUrlValue = (isLostSignal) ? Icons.ICON_URL_VEHICLE_PATROL_OFFLINE : Icons.ICON_URL_VEHICLE_PATROL;\r\n }\r\n else {\r\n iconUrlValue = (isLostSignal) ? Icons.ICON_URL_VEHICLE_VERIFICATION_OFFLINE : Icons.ICON_URL_VEHICLE_VERIFICATION;\r\n }\r\n }\r\n else {\r\n iconUrlValue = (isLostSignal) ? Icons.ICON_URL_VEHICLE_OFFLINE : Icons.ICON_URL_VEHICLE;\r\n }\r\n }\r\n else {\r\n if (signal.operationId) {\r\n if (signal.operationType == OperationType.PATROL) {\r\n iconUrlValue = (isLostSignal) ? Icons.ICON_URL_PROFESSIONAL_PATROL_OFFLINE : Icons.ICON_URL_PROFESSIONAL_PATROL;\r\n }\r\n else {\r\n iconUrlValue = (isLostSignal) ? Icons.ICON_URL_PROFESSIONAL_VERIFICATION_OFFLINE : Icons.ICON_URL_PROFESSIONAL_VERIFICATION;\r\n }\r\n }\r\n else {\r\n iconUrlValue = (isLostSignal) ? Icons.ICON_URL_PROFESSIONAL_OFFLINE : Icons.ICON_URL_PROFESSIONAL;\r\n }\r\n }\r\n const icon = L.icon({\r\n iconUrl: iconUrlValue,\r\n iconSize: [ MapInfo.TRACKING_ICON_SIZE, MapInfo.TRACKING_ICON_SIZE ],\r\n iconAnchor: [ MapInfo.TRACKING_ICON_SIZE/2, MapInfo.TRACKING_ICON_SIZE/2 ] // No centro do ícone\r\n });\r\n return icon;\r\n }\r\n\r\n updateIcon(tracking: TrackingModel){\r\n const icon = this.buildIconAccordingToSignal(tracking.signal);\r\n tracking.icon = icon;\r\n }\r\n\r\n /**\r\n * Tenta recuperar a ronda ou verificação de evento associada ao sinal recebido\r\n */\r\n private getOperation(operationId: string, operationType: string, operationStatus: string): OperationModel {\r\n if (!operationId) return null;\r\n\r\n let operation : OperationModel = this.startedOperations.get(operationId + operationType);\r\n if(operation){\r\n if (operationStatus) operation.status = operationStatus;\r\n return operation;\r\n }\r\n else{\r\n switch (operationType) {\r\n case (OperationType.PATROL): \r\n this.patrolService.loadById(operationId).toPromise().then (op => {\r\n if (op) {\r\n op.type = operationType;\r\n this.startedOperations.set(operationId + operationType, op);\r\n this.updateOperation(op, true);\r\n }\r\n });\r\n break;\r\n case (OperationType.EVENT_VERIFICATION): \r\n this.verificationService.loadById(operationId).toPromise().then (op => {\r\n if (op) {\r\n op.type = operationType;\r\n this.startedOperations.set(operationId + operationType, op);\r\n this.updateOperation(op, true);\r\n }\r\n });\r\n break;\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n public loadFromServerByTeamId(teamId: string, startDate: number, endDate: number): Observable {\r\n let httpParams = new HttpParams();\r\n if(startDate){\r\n const startDateTime = moment(startDate).format('x');\r\n httpParams = httpParams.set('startDate', startDateTime);\r\n }\r\n if(endDate){\r\n const endDateTime = moment(endDate).format('x');\r\n httpParams = httpParams.set('endDate', endDateTime);\r\n }\r\n return this.httpClient.get(this.apiUrl + '/' + teamId, { params: httpParams });\r\n }\r\n\r\n public loadFromServerByOperationIdAndOperationType(operationId: string, operationType: string, startDate: number): Observable{\r\n let httpParams = new HttpParams();\r\n if(startDate){\r\n const startDateTime = moment(startDate).format('x');\r\n httpParams = httpParams.set('startDate', startDateTime);\r\n }\r\n return this.http.get(this.apiUrl + `/${operationId}/${operationType}` , { params: httpParams });\r\n }\r\n\r\n public loadFromServerByMobileObjectId(mobileObjectId: string, sourceType: SourceType, patrolTeam:PatrolTeamModel, operation: OperationModel, startDate: number, endDate: number): Observable {\r\n let httpParams = new HttpParams();\r\n if(startDate){\r\n const startDateTime = moment(startDate).format('x');\r\n httpParams = httpParams.set('startDate', startDateTime);\r\n }\r\n if(endDate){\r\n const endDateTime = moment(endDate).format('x');\r\n httpParams = httpParams.set('endDate', endDateTime);\r\n }\r\n if (patrolTeam) {\r\n httpParams = httpParams.set('teamId', patrolTeam.id);\r\n }\r\n if (operation) {\r\n httpParams = httpParams.set('operationId', operation.id);\r\n httpParams = httpParams.set('operationType', operation.type);\r\n }\r\n\r\n if (sourceType == SourceType.VEHICLE)\r\n return this.httpClient.get(this.apiUrl + '/vehicle/' + mobileObjectId, { params: httpParams });\r\n else\r\n return this.httpClient.get(this.apiUrl + '/user/' + mobileObjectId, { params: httpParams });\r\n }\r\n\r\n /**\r\n * Obtem a versão do projeto tracking\r\n */\r\n public getServiceVersion(): Observable {\r\n this.logger.debug(`${this.apiUrl}/${API_VERSION_ENDPOINT}`);\r\n return this.httpClient.get(`${this.apiUrl}/${API_VERSION_ENDPOINT}`,\r\n { responseType: 'text' }\r\n );\r\n }\r\n\r\n /**\r\n * Obter os últimos sinais registrados para cada: teamId, operationId e operationType\r\n */\r\n private getLastSignals(teamId: string, startDate: number, endDate: number): Observable {\r\n this.logger.debug(`${this.apiUrl}/${LAST_SIGNALS}`);\r\n let httpParams = new HttpParams();\r\n\r\n if(teamId){ // Não está sendo usado no momento. Hoje carregamos todos os last signals do intervalo de tempo.\r\n httpParams = httpParams.set('teamId', teamId);\r\n }\r\n\r\n if(startDate){\r\n const startDateTime = moment(startDate).format('x');\r\n httpParams = httpParams.set('startDate', startDateTime);\r\n }\r\n\r\n if(endDate){ // Não está sendo usado no momento. \r\n const endDateTime = moment(endDate).format('x');\r\n httpParams = httpParams.set('endDate', endDateTime);\r\n }\r\n\r\n return this.httpClient.get(`${this.apiUrl}/${LAST_SIGNALS}`, { params: httpParams, responseType: 'text' });\r\n }\r\n\r\n public getLastOperationSignals(operationType: string, startDate: number, endDate: number): Observable {\r\n this.logger.debug(`${this.apiUrl}/${LAST_OPERATION_SIGNALS}`);\r\n let httpParams = new HttpParams();\r\n\r\n httpParams = httpParams.set('operationType', operationType);\r\n\r\n if(startDate){\r\n const startDateTime = moment(startDate).format('x');\r\n httpParams = httpParams.set('startDate', startDateTime);\r\n }\r\n\r\n if(endDate){\r\n const endDateTime = moment(endDate).format('x');\r\n httpParams = httpParams.set('endDate', endDateTime);\r\n }\r\n\r\n return this.httpClient.get(`${this.apiUrl}/${LAST_OPERATION_SIGNALS}`, { params: httpParams, responseType: 'text' });\r\n }\r\n\r\n /**\r\n * Obter os últimos sinais registrados para cada veículo\r\n */\r\n private getLastVehicleSignals(mobileObjectId: string, startDate: number, endDate: number): Observable {\r\n this.logger.debug(`${this.apiUrl}/${LAST_VEHICLE_SIGNALS}`);\r\n let httpParams = new HttpParams();\r\n\r\n if(mobileObjectId){ // Não está sendo usado no momento. Hoje carregamos todos os last signals do intervalo de tempo.\r\n httpParams = httpParams.set('mobileObjectId', mobileObjectId);\r\n }\r\n\r\n if(startDate){\r\n const startDateTime = moment(startDate).format('x');\r\n httpParams = httpParams.set('startDate', startDateTime);\r\n }\r\n\r\n if(endDate){ // Não está sendo usado no momento. \r\n const endDateTime = moment(endDate).format('x');\r\n httpParams = httpParams.set('endDate', endDateTime);\r\n }\r\n\r\n return this.httpClient.get(`${this.apiUrl}/${LAST_VEHICLE_SIGNALS}`, { params: httpParams, responseType: 'text' });\r\n }\r\n}\r\n","import { EvidenceRequirement, QuestionType } from \"./enums.enum\";\r\n\r\nexport class QuestionModel {\r\n identifier: string;\r\n label: string;\r\n type: QuestionType;\r\n evidenceRequirement?: EvidenceRequirement;\r\n children: QuestionModel[];\r\n \r\n constructor(){\r\n this.children = [];\r\n this.type = QuestionType.YESNO; //Default YESNO\r\n this.evidenceRequirement = EvidenceRequirement.OPTIONAL; //Default OPTIONAL\r\n }\r\n }","import { Component, Inject, OnInit, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { EventMainActionsService } from 'src/app/service/model/event.main.actions.service';\r\nimport { RegistrationListComponent } from '../../registration-list-component';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { RegistrationType } from '../../../../model/enums.enum';\r\nimport { EventMainActionModel } from 'src/app/model/event.main.action.model';\r\nimport { ESP } from 'src/app/common/constants';\r\n\r\n@Component({\r\n selector: 'app-event-main-actions-list',\r\n templateUrl: './event-main-actions-list.component.html',\r\n styleUrls: ['../../../../app.component.scss', '../../../list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class EventMainActionsListComponent extends RegistrationListComponent implements OnInit {\r\n\r\n constructor(logger: NGXLogger,\r\n eventMainActionsService: EventMainActionsService,\r\n dialog: MatDialog,\r\n public authorizationService: AuthorizationService,\r\n protected storageService: StorageService,\r\n protected changeDetector: ChangeDetectorRef,\r\n protected toastr: ToastrService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container){\r\n super(logger, authorizationService, eventMainActionsService, dialog, 'event-main-actions', environment.EVENT_MAIN_ACTIONS_GROUP_LABEL,\r\n environment.EVENT_MAIN_ACTIONS_TITLE_LABEL, environment.EVENT_MAIN_ACTIONS_MODEL_LABEL,\r\n storageService, changeDetector, toastr, goldenLayout, container);\r\n logger.debug('EventMainActionsListComponent.constructor()');\r\n this.registrationType = RegistrationType.EVENT_MAIN_ACTION;\r\n }\r\n\r\n ngOnInit(): void {\r\n super.ngOnInit();\r\n \r\n this.logger.debug('EventMainActionsListComponent.ngOnInit()');\r\n this.loadRecordsFromServer();\r\n this.displayedColumns = ['select', 'sourceType', 'action' ];\r\n }\r\n \r\n protected getDefaultSortColumn(): string {\r\n return \"sourceType\";\r\n }\r\n\r\n protected getStringEntityForFilter(eventMainAction: EventMainActionModel): string {\r\n const sourceType = this.lowerAndTrimText(eventMainAction.sourceType);\r\n const action = this.lowerAndTrimText(eventMainAction.action);\r\n return sourceType + ESP + action;\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n {{ title }}[ {{getListCount()}} ]\r\n
    \r\n
    \r\n \r\n search\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n Origem {{ element?.sourceType }} Ação Principal {{element?.action}}
    \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n \r\n \r\n \r\n
    ","import { StompService, StompConfig, StompState } from '@stomp/ng2-stompjs';\r\nimport { IMessage, Message } from '@stomp/stompjs';\r\nimport { Observable, BehaviorSubject, Subscription } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n// Não é injetado, é instanciado\r\n// Para cada stream de tópico que queremos ouvir, instanciamos a classe\r\n\r\nexport class Websocket {\r\n private countWebsocketClosedCheck: number;\r\n private WEBSOCKET_STUCK_CONN_COUNT: number = 4;\r\n\r\n private stateCheckInterval: NodeJS.Timeout;\r\n private WEBSOCKET_CONN_CHECK_RATE: number = 30000; // milliseconds (30 seconds)\r\n\r\n private websocketTestSubscription: Subscription;\r\n\r\n private messages: Observable;\r\n private stompService: StompService;\r\n\r\n constructor(socketUrl: string, streamUrl: string) {\r\n\r\n this.countWebsocketClosedCheck = 0;\r\n\r\n // Create Stomp Configuration\r\n const stompConfig: StompConfig = {\r\n url: socketUrl,\r\n headers: {\r\n login: '',\r\n passcode: ''\r\n },\r\n heartbeat_in: 0,\r\n heartbeat_out: 20000,\r\n reconnect_delay: 5000,\r\n debug: false\r\n\r\n };\r\n // Create Stomp Service\r\n this.stompService = new StompService(stompConfig);\r\n // Connect to a Stream\r\n this.messages = this.stompService.subscribe(streamUrl);\r\n\r\n this.subscribeOnWebsocketTest();\r\n this.setCheckStateInterval();\r\n }\r\n\r\n /**\r\n * Método \"Fábrica\" para retornar um websocket já configurado para notificar mudanças nos\r\n * eventos.\r\n */\r\n public static createEventUpdateWebsocket(): Websocket {\r\n const WEBSOCKET_TOPIC = '/topic/eventUpdate';\r\n return Websocket.internalCreateWebsocket(WEBSOCKET_TOPIC);\r\n }\r\n\r\n /**\r\n * Método \"Fábrica\" para retornar um websocket já configurado para notificar mudanças nas\r\n * verificações.\r\n */\r\n public static createVerificationUpdateWebsocket(): Websocket {\r\n const WEBSOCKET_TOPIC = '/topic/verificationUpdate';\r\n return Websocket.internalCreateWebsocket(WEBSOCKET_TOPIC);\r\n }\r\n\r\n /**\r\n * Método \"Fábrica\" para retornar um websocket já configurado para notificar mudanças nas rondas.\r\n */\r\n public static createPatrolUpdateWebsocket(): Websocket {\r\n const WEBSOCKET_TOPIC = '/topic/patrolUpdate';\r\n return Websocket.internalCreateWebsocket(WEBSOCKET_TOPIC);\r\n }\r\n\r\n /**\r\n * Método \"Fábrica\" para retornar um websocket já configurado para notificar mudanças na\r\n * nos cadastros.\r\n */\r\n public static createRegistrationsUpdateWebsocket(): Websocket {\r\n const WEBSOCKET_TOPIC = '/topic/registrationUpdate';\r\n return Websocket.internalCreateWebsocket(WEBSOCKET_TOPIC);\r\n }\r\n\r\n /**\r\n * Método \"Fábrica\" para retornar um websocket já configurado para notificar notificar\r\n * altera;'ao na cotagem de canais.\r\n */\r\n public static createResetChannelWebsocket(): Websocket {\r\n const WEBSOCKET_TOPIC = '/topic/resetChannel';\r\n return Websocket.internalCreateWebsocket(WEBSOCKET_TOPIC);\r\n }\r\n\r\n /**\r\n * Método \"Fábrica\" para retornar um websocket já configurado para notificar o recebimento\r\n * de sinais GPS de aplicativos.\r\n */\r\n public static createSignalsWebsocket(): Websocket {\r\n const WEBSOCKET_TOPIC = '/topic/signals';\r\n return Websocket.internalCreateWebsocket(WEBSOCKET_TOPIC);\r\n }\r\n\r\n /**\r\n * Método \"Fábrica\" para retornar um websocket já configurado para notificar o recebimento\r\n * de sinais GPS de veículos.\r\n */\r\n public static createVehicleSignalsWebsocket(): Websocket {\r\n const WEBSOCKET_TOPIC = '/topic/vehicle_signals';\r\n return Websocket.internalCreateWebsocket(WEBSOCKET_TOPIC);\r\n }\r\n\r\n /**\r\n * Método \"Fábrica\" para retornar um websocket já configurado para notificar o recebimento\r\n * de marcadores.\r\n */\r\n public static createMarkersWebsocket(): Websocket {\r\n const WEBSOCKET_TOPIC = '/topic/markers';\r\n return Websocket.internalCreateWebsocket(WEBSOCKET_TOPIC);\r\n }\r\n\r\n /**\r\n * Método \"Fábrica\" para retornar um websocket já configurado para notificar o recebimento\r\n * de alertas.\r\n */\r\n public static createAlertsWebsocket(): Websocket {\r\n const WEBSOCKET_TOPIC = '/topic/alerts';\r\n return Websocket.internalCreateWebsocket(WEBSOCKET_TOPIC);\r\n }\r\n\r\n /** Método auxiliar para apoiar a construção de instâncias pelos métodos \"Fábrica\" de Websockets. */\r\n private static internalCreateWebsocket(topic: string): Websocket {\r\n const WEBSOCKET_URL = environment.settings.websocket_address;\r\n return new Websocket(WEBSOCKET_URL, topic);\r\n }\r\n\r\n public stream(): Observable {\r\n return this.messages;\r\n }\r\n\r\n public send(url: string, message: any) {\r\n return this.stompService.publish(url, JSON.stringify(message));\r\n }\r\n\r\n public state(): BehaviorSubject {\r\n return this.stompService.state;\r\n }\r\n\r\n private disconnect(){\r\n this.stompService?.deactivate();\r\n console.log(\"***** Websocket.disconnect - Conexão com o websocket terminada\");\r\n }\r\n\r\n public destroy(){\r\n this.disconnect();\r\n this.websocketTestSubscription?.unsubscribe();\r\n clearInterval(this.stateCheckInterval);\r\n }\r\n\r\n private connect(){\r\n this.stompService.activate();\r\n this.countWebsocketClosedCheck = 0;\r\n console.log(\"***** Websocket.connect - Conexão com o websocket re-conectada\");\r\n }\r\n\r\n public onConnectCallback() {\r\n return this.stompService.connected$;\r\n }\r\n\r\n /********************************************************************************/\r\n /***************************** HEALTH CHECK ****************************/\r\n /********************************************************************************/\r\n\r\n /*\r\n * Inscrição para receber as mudanças de status do stomp\r\n */\r\n private setCheckStateInterval(){\r\n clearInterval(this.stateCheckInterval);\r\n this.stateCheckInterval = setInterval(() => {\r\n this.checkWebsocketState();\r\n }, this.WEBSOCKET_CONN_CHECK_RATE);\r\n }\r\n\r\n /*\r\n * Método que verifica se a conexão com o websocket está travada.\r\n * Caso esteja, reativa a conexão\r\n * @returns\r\n */\r\n private checkWebsocketState(){\r\n if(this.stompService?.client.connected){ // Verifica se a conexão com stomp está ativa\r\n if(this.countWebsocketClosedCheck === this.WEBSOCKET_STUCK_CONN_COUNT){ // Atingiu o limite de tentativas sem resposta\r\n console.log(\"***** Websocket.checkWebsocketState - Conexão travada. Reativando a conexão\");\r\n\r\n this.disconnect(); // desconecta\r\n\r\n setTimeout(() => {\r\n this.connect(); // e conecta novamente, um tempo depois\r\n }, 5000); // 5s\r\n\r\n return;\r\n }else{\r\n console.log(\"***** Websocket.checkWebsocketState - Enviando mensagem de teste\");\r\n const WEBSOCKET_TOPIC = '/app/test';\r\n this.send(WEBSOCKET_TOPIC, \"Just Checking\"); // Enviando uma mensagem de teste para o backend\r\n\r\n this.countWebsocketClosedCheck++; // Incrementa o contador de tentativas de resposta do backend\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Inscrição para receber a callback do teste de ping do servidor websocket\r\n */\r\n private subscribeOnWebsocketTest(){\r\n const WEBSOCKET_TOPIC = '/topic/callback';\r\n console.log(\"***** Websocket.subscribeOnWebsocketTest - Inscrição no tópico de teste do websocket: \", WEBSOCKET_TOPIC);\r\n this.websocketTestSubscription = this.stompService.watch(WEBSOCKET_TOPIC).subscribe((message: IMessage) => {\r\n //console.log(\"***** Mensagem recebida no broker:\", message); // Recebeu a confirmação da mensagem de teste do backend\r\n this.countWebsocketClosedCheck = 0; // Zera o contador de tentativas\r\n }, (error: any) => console.error(error));\r\n }\r\n}\r\n","import { MatPaginatorIntl } from '@angular/material/paginator';\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class MatPaginatorIntlBr extends MatPaginatorIntl{\r\n itemsPerPageLabel = 'Itens por Página';\r\n nextPageLabel = 'Próxima';\r\n previousPageLabel = 'Anterior';\r\n lastPageLabel = 'Última página';\r\n firstPageLabel = 'Primeira página';\r\n\r\n getRangeLabel = function(page, pageSize, length){\r\n if(length === 0){return 'Nenhum item'};\r\n\r\n length = Math.max(length, 0);\r\n const startIndex = page * pageSize;\r\n const endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : (startIndex + pageSize);\r\n\r\n return startIndex + 1 + ' - ' + endIndex + ' de ' + length\r\n }\r\n}\r\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport * as moment from 'moment';\r\nimport { GoldenLayoutComponent, GoldenLayoutComponentHost, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { LatLongMask, LatLongPattern } from 'src/app/common/constants';\r\nimport { MapEvents, ObservedAreaStatus, ObservedAreaStatusDescription, ObservedAreaTypeDescription, Permission, UserType } from 'src/app/model/enums.enum';\r\nimport { ObservedAreaModel } from 'src/app/model/observed.area.model';\r\nimport { UserModel } from 'src/app/model/user.model';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { ObservedAreaService } from 'src/app/service/model/observed.area.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport FieldUtils from 'src/app/service/util/field-utils';\r\nimport { environment } from 'src/environments/environment';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { EditComponent } from '../../../edit-component';\r\nimport { Subscription } from 'rxjs';\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\n\r\n@Component({\r\n selector: 'app-observed-area-edit',\r\n templateUrl: './observed-area-edit.component.html',\r\n styleUrls: ['./observed-area-edit.component.scss']\r\n})\r\nexport class ObservedAreaEditComponent extends EditComponent implements OnInit, OnDestroy {\r\n\r\n mapEvents = MapEvents;\r\n\r\n status = ObservedAreaStatus;\r\n statusDescription = ObservedAreaStatusDescription;\r\n\r\n areaTypeDescriptions = ObservedAreaTypeDescription;\r\n\r\n /** Os usuários carregados do serviço do ccpd-registrations */\r\n responsibles: UserModel[];\r\n\r\n startDate: moment.Moment;\r\n endDate: moment.Moment;\r\n volumeCheckDate: moment.Moment;\r\n\r\n latLongPattern = LatLongPattern;\r\n latLongMask = LatLongMask;\r\n\r\n private reloadUsersSubscription: Subscription;\r\n\r\n constructor(logger: NGXLogger,\r\n protected observedAreasService: ObservedAreaService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n public storageService: StorageService,\r\n public entityCacheService: EntityCacheService,\r\n protected dialog: MatDialog,\r\n public toastr: ToastrService,\r\n public authorizationService: AuthorizationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, observedAreasService, dialog, environment.OBSERVED_AREA_MODEL_LABEL, environment.OBSERVED_AREA_TITLE_LABEL, storageService,\r\n 'observed-areas-edit', environment.OBSERVED_AREA_GROUP_LABEL, toastr, authorizationService, goldenLayout, container);\r\n}\r\n\r\n ngOnInit(): void {\r\n this.initializeFields(); // Precisa vir antes da super.ngOnInit\r\n\r\n super.ngOnInit();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n super.ngOnDestroy();\r\n this.reloadUsersSubscription?.unsubscribe();\r\n }\r\n\r\n createData(options?: any) {\r\n this.logger.debug('ObservedAreaEditComponent.createData()');\r\n\r\n this.model = new ObservedAreaModel();\r\n this.view = {};\r\n\r\n this.initializeFields();\r\n \r\n this.currentUserAsField('creator');\r\n\r\n this.glUpdateTabTitle(this.modelName + ': [NOVA]');\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n this.model['identifier'] = null;\r\n this.model['status'] = ObservedAreaStatus.ACTIVE;\r\n }\r\n\r\n loadFormOptionsData(){\r\n let _this = this; // Necessário por causa do contexto das callacks\r\n const onUsersLoad = function() {\r\n const responsibleUserTypes = [UserType.ANALYSIS_CCPD, UserType.COORDINATOR_CCPD, UserType.COORDINATOR_OPPD, UserType.PLANNER];\r\n _this.responsibles = _this.entityCacheService.getFilteredUsers(responsibleUserTypes);\r\n };\r\n this.entityCacheService.loadUsers(this.loadingListService, onUsersLoad);\r\n this.reloadUsersSubscription = this.entityCacheService.onUsersReload().subscribe(onUsersLoad);\r\n\r\n const metadatas: string[] = [\r\n \"CommunicationChannel\",\r\n \"Band\",\r\n \"PipeStretch\",\r\n \"City\",\r\n \"State\",\r\n \"Product\",\r\n \"Duct\"];\r\n \r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n\r\n onEnableEditClick() {\r\n if (this.canEdit()) {\r\n this.readOnly = false;\r\n \r\n if (!this.view['creator']) {\r\n this.currentUserAsField('creator');\r\n }\r\n }\r\n }\r\n\r\n initializeFields(){\r\n this.view['identifier'] = \"[NOVA]\";\r\n this.view['type'] = 'ObservedArea';\r\n this.view['states'] = [];\r\n this.view['status'] = ObservedAreaStatus.ACTIVE;\r\n\r\n this.startDate = moment();\r\n this.view['startDate'] = this.startDate.format('DD/MM/yyyy');\r\n this.view['startTime'] = this.startDate.format('HH:mm');\r\n\r\n this.view['endDate'] = '';\r\n this.view['endTime'] = '';\r\n\r\n this.volumeCheckDate = moment();\r\n this.view['volumeCheckDate'] = '';\r\n this.view['volumeCheckTime'] = '';\r\n }\r\n\r\n mapModelToView() {\r\n this.logger.debug('ObservedAreaEditComponent.mapModelToView()');\r\n\r\n super.mapModelToView();\r\n\r\n if (!this.model['status']) {\r\n this.model['status'] = ObservedAreaStatus.ACTIVE;\r\n }\r\n\r\n if (this.model['createdAt'] && this.model['id'] != null) {\r\n this.startDate = moment(this.model['createdAt']);\r\n }\r\n else {\r\n this.startDate = moment();\r\n }\r\n this.view['createdAt'] = this.startDate.format('DD/MM/yyyy HH:mm:ss');\r\n\r\n if (this.model['updatedAt']) {\r\n this.startDate = moment(this.model['updatedAt']);\r\n this.view['updatedAt'] = this.startDate.format('DD/MM/yyyy HH:mm:ss');\r\n }\r\n\r\n if (this.model['startDate']) {\r\n this.startDate = moment(this.model['startDate']);\r\n }else {\r\n this.startDate = moment();\r\n }\r\n this.view['startDate'] = this.startDate.format('DD/MM/yyyy');\r\n this.view['startTime'] = this.startDate.format('HH:mm');\r\n\r\n if (this.model['endDate']) {\r\n this.endDate = moment(this.model['endDate']);\r\n this.view['endDate'] = this.endDate.format('DD/MM/yyyy');\r\n this.view['endTime'] = this.endDate.format('HH:mm');\r\n }\r\n else {\r\n this.view['endDate'] = '';\r\n this.view['endTime'] = '';\r\n }\r\n\r\n if (this.model['volumeCheckDate']) {\r\n this.volumeCheckDate = moment(this.model['volumeCheckDate']);\r\n this.view['volumeCheckDate'] = this.volumeCheckDate.format('DD/MM/yyyy');\r\n this.view['volumeCheckTime'] = this.volumeCheckDate.format('HH:mm');\r\n }\r\n else {\r\n this.volumeCheckDate = moment();\r\n this.view['volumeCheckDate'] = '';\r\n this.view['volumeCheckTime'] = '';\r\n }\r\n\r\n this.view['identifier'] = this.model['identifier'] ? this.model['identifier'] : \"[NOVA]\";\r\n\r\n if (this.copy){\r\n this.currentUserAsField('creator');\r\n }\r\n\r\n this.glUpdateTabTitle(this.modelName + ': ' + this.view['identifier']);\r\n }\r\n\r\n mapViewToModel() {\r\n if (this.isSaving && this.isCreating())\r\n this.view['identifier'] = null;\r\n\r\n super.mapViewToModel();\r\n\r\n //Esse campos são controlados pelo backend. Não precisa enviar.\r\n this.model['createdAt'] = null;\r\n this.model['updatedAt'] = null;\r\n\r\n const startDate = DateUtils.stringDateTimeToTimestamp(this.view['startDate'], this.view['startTime'], true);\r\n this.model['startDate'] = startDate;\r\n\r\n const endDate = DateUtils.stringDateTimeToTimestamp(this.view['endDate'], this.view['endTime'], true);\r\n this.model['endDate'] = endDate;\r\n\r\n const volumeCheckDate = DateUtils.stringDateTimeToTimestamp(this.view['volumeCheckDate'], this.view['volumeCheckTime'], true);\r\n this.model['volumeCheckDate'] = volumeCheckDate;\r\n\r\n this.model['type'] = 'ObservedArea';\r\n }\r\n\r\n hasLocation(): boolean {\r\n const latLongPattern = /^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?),\\s*[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$/;\r\n \r\n const isLatLongValid = this.view['latLong'] && latLongPattern.test(this.view['latLong']);\r\n const isStretchStartLatLongValid = this.view['stretchStartLatLong'] && latLongPattern.test(this.view['stretchStartLatLong']);\r\n const isStretchEndLatLongValid = this.view['stretchEndLatLong'] && latLongPattern.test(this.view['stretchEndLatLong']);\r\n \r\n return (isLatLongValid && (!this.view['stretchStartLatLong'] && !this.view['stretchEndLatLong'])) ||\r\n ((isStretchStartLatLongValid && isStretchEndLatLongValid && this.view['stretchStartLatLong'] && this.view['stretchEndLatLong']) && (isLatLongValid && this.view['latLong'])) ||\r\n ((isStretchStartLatLongValid && isStretchEndLatLongValid && this.view['stretchStartLatLong'] && this.view['stretchEndLatLong']) && !this.view['latLong']);\r\n }\r\n \r\n replaceRunTimeData(data){\r\n // Substitui mudanças dinamicas, que independem da edição do usuário\r\n this.replaceModelViewDateData(data, 'createdAt');\r\n this.replaceModelViewDateData(data, 'updatedAt');\r\n data['type'] = 'ObservedArea';\r\n this.replaceModelViewData(data, 'type');\r\n }\r\n\r\n dateChanged(fieldName: string) {\r\n if(fieldName === 'startDate'){\r\n this.view[fieldName] = this.startDate.format(\"DD/MM/yyyy\");\r\n }else if(fieldName === 'endDate'){\r\n this.view[fieldName] = this.endDate.format(\"DD/MM/yyyy\");\r\n }else if(fieldName === 'volumeCheckDate'){\r\n this.view[fieldName] = this.volumeCheckDate.format(\"DD/MM/yyyy\");\r\n }\r\n }\r\n\r\n applyStartDate(dateString: string) {\r\n this.startDate = moment(dateString, \"DD/MM/YYYY\", true);\r\n }\r\n\r\n applyEndDate(dateString: string) {\r\n if (dateString === '') {\r\n this.endDate = null;\r\n }\r\n else {\r\n this.endDate = moment(dateString, \"DD/MM/YYYY\", true);\r\n }\r\n }\r\n\r\n applyVolumeCheckDate(dateString: string) {\r\n if (dateString === '') {\r\n this.endDate = null;\r\n }\r\n else {\r\n this.volumeCheckDate = moment(dateString, \"DD/MM/YYYY\", true);\r\n }\r\n }\r\n\r\n onPasteLatLong(event: ClipboardEvent, name: string){\r\n let pastedValue = FieldUtils.pasteLatLong(event, this.view[name]);\r\n if (pastedValue != null) {\r\n this.view[name] = pastedValue;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n canEdit(): boolean {\r\n if (!this.model) return false;\r\n\r\n if (!this.authorizationService.userHasPermission(Permission.CREATE_EDIT_OBSERVED_AREA)){\r\n return false\r\n }\r\n\r\n return true;\r\n }\r\n\r\n isRequiredFieldFilled(): boolean{\r\n if (!this.view['name'] ||\r\n !this.view['responsible'] ||\r\n !this.view['areaType'] ||\r\n !this.view['startDate'] ||\r\n !this.view['startTime'] ||\r\n !(DateUtils.stringDateTimeToTimestamp(this.view['startDate'], this.view['startTime'], true)) ||\r\n !this.hasLocation()) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['name']) names.push('Nome');\r\n if (!this.view['responsible']) names.push('Responsável');\r\n if (!this.view['areaType']) names.push('Tipo');\r\n if (!this.view['startDate']) names.push('Data de Início');\r\n if (!this.view['startTime']) names.push('Hora de Início');\r\n if (!this.hasLocation()) names.push('KM (Lat, Long) ou Trecho (Lat, Long)');\r\n return names;\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n Área Observada: {{view['identifier']}}\r\n
    \r\n {{ statusDescription[view['status']] }}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n \r\n\r\n \r\n \r\n
    \r\n\r\n
    \r\n\r\n \r\n Data/Hora (Criação)\r\n \r\n \r\n\r\n \r\n Cadastrador\r\n \r\n \r\n\r\n \r\n Nome da Área\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n Hora Início\r\n \r\n query_builder\r\n Campo Obrigatório\r\n Formato inválido para a hora\r\n \r\n\r\n \r\n \r\n\r\n \r\n Hora Fim\r\n \r\n query_builder\r\n Formato inválido para a hora\r\n \r\n\r\n \r\n \r\n\r\n \r\n Volume (m³)\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n Hora Verificação de Volume\r\n \r\n query_builder\r\n Formato inválido para a hora\r\n \r\n\r\n \r\n \r\n\r\n \r\n Atualizado\r\n \r\n \r\n\r\n
    \r\n \r\n \r\n Notas\r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n KM\r\n \r\n Formato inválido para o KM.\r\n \r\n\r\n \r\n KM (Lat, Long)\r\n \r\n Formato inválido para o KM (Lat, Long)).\r\n \r\n\r\n \r\n Início Trecho (KM)\r\n \r\n Formato inválido para o Início do trecho (KM).\r\n \r\n\r\n \r\n Fim Trecho (KM)\r\n \r\n Formato inválido para o Fim do trecho (KM).\r\n \r\n\r\n \r\n Início Trecho (Lat, Long)\r\n \r\n Formato inválido para o Início do trecho (Lat, Long).\r\n \r\n\r\n \r\n Fim Trecho (Lat, Long)\r\n \r\n Formato inválido para o Fim do trecho (Lat, Long).\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n","import LanguageUtils from '../service/util/language-utils';\r\nimport { EntityModel } from './entity.model';\r\n\r\nexport class PlacementModel extends EntityModel {\r\n gs: string;\r\n regional: string;\r\n name: string;\r\n \r\n static addLanguageMap(){\r\n LanguageUtils.languageMap['gs'] = 'Gerência';\r\n LanguageUtils.languageMap['regional'] = 'Regional';\r\n }\r\n}\r\n","import { Component, Input, OnInit, Output, ViewChild, EventEmitter, ElementRef, Directive } from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { Observable } from 'rxjs';\r\nimport { map, startWith } from 'rxjs/operators';\r\n\r\n@Directive()\r\nexport abstract class Autocomplete implements OnInit {\r\n\r\n dataControl = new FormControl();\r\n\r\n // lista de objetos de entrada\r\n _data: Object[];\r\n @Input()\r\n set data(newData: Object[]) {\r\n this._data = newData;\r\n this.filteredData = this.dataControl.valueChanges.pipe(\r\n startWith(''),\r\n map(value => typeof value === 'string' ? value : ''),\r\n map(filter => this.filter(filter))\r\n );\r\n }\r\n\r\n get data() {\r\n return this._data;\r\n }\r\n \r\n @Output() valueDataChange = new EventEmitter();\r\n\r\n @Output() selectionChangedEvent = new EventEmitter();\r\n \r\n // Define qual o parametro do objeto para receber o valor selecionado (em geral 'id' ou 'key')\r\n _optionValue: any;\r\n @Input()\r\n set optionValue(val: any) {\r\n this._optionValue = val;\r\n }\r\n \r\n _required: boolean;\r\n @Input()\r\n set required(val: boolean) {\r\n this._required = val;\r\n }\r\n \r\n _disabled: boolean;\r\n @Input()\r\n set disabled(val: boolean) {\r\n this._disabled = val;\r\n if (val) {\r\n this.dataControl.disable();\r\n }\r\n else {\r\n this.dataControl.enable();\r\n }\r\n }\r\n \r\n _readonly: boolean;\r\n @Input()\r\n set readonly(val: boolean) {\r\n this._readonly = val;\r\n }\r\n\r\n // Usado para ficar vermelho no dado inválido\r\n @Input() controlColor: String;\r\n\r\n // Define qual o parâmetro que é usado para representar visualmente o objeto (em geral 'name')\r\n _name: string;\r\n @Input()\r\n set name(data: string) {\r\n this._name = data;\r\n }\r\n\r\n get name() {\r\n return this._name;\r\n }\r\n\r\n @Input() placeholder: string;\r\n\r\n @Input() label: string;\r\n\r\n // Função que retorna o dado do objeto que aparece na tela. Se não estiver definido name é utilizado\r\n @Input() displayName: (args: any) => void;\r\n\r\n @ViewChild(MatAutocompleteTrigger) autocomplete: MatAutocompleteTrigger;\r\n\r\n @ViewChild('someInput') someInput!: ElementRef;\r\n\r\n selectedData: Object;\r\n\r\n filteredData: Observable;\r\n\r\n scrollEvent = (event: any): void => {\r\n if(this.autocomplete.panelOpen)\r\n this.autocomplete.updatePosition();\r\n };\r\n\r\n ngOnInit() {\r\n window.addEventListener('scroll', this.scrollEvent, true);\r\n }\r\n\r\n filter(filter: string): Object[] {\r\n if (filter) {\r\n let nfilter:string = filter.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").toLowerCase();\r\n return this._data.filter(option => {\r\n let item = this._name ? option[this._name] : option;\r\n item = item.normalize(\"NFD\").replace(/[\\u0300-\\u036f]/g, \"\").toLowerCase();\r\n return item.toLowerCase().indexOf(nfilter.toLowerCase()) >= 0;\r\n })\r\n } else {\r\n return this._data ? this._data.slice() : this._data;\r\n }\r\n }\r\n\r\n getDataControlObjectValue(value: any, option: string) {\r\n let retValue: any = undefined;\r\n if (option) {\r\n this._data.forEach(item => {\r\n if(item[option] === value) {\r\n retValue = item;\r\n }\r\n })\r\n } \r\n else {\r\n retValue = value;\r\n }\r\n return retValue;\r\n }\r\n\r\n getDataControlPropertyValue(value: any, option: string) {\r\n let retValue: any = undefined;\r\n if (option && value != null) { // value != null verifica que o campo selecionado seja diferente de vazío\r\n this._data.forEach(item => {\r\n if(item[option] === value[option]) {\r\n retValue = item[option];\r\n }\r\n })\r\n }\r\n else {\r\n retValue = value;\r\n }\r\n return retValue;\r\n }\r\n \r\n getData(data: Object){\r\n if (this._name) {\r\n return this.displayName ? this.displayName(data) : data[this._name];\r\n }\r\n return data;\r\n }\r\n\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport * as GoldenLayout from 'golden-layout';\r\nimport { GoldenLayoutComponentHost, GoldenLayoutComponent, GoldenLayoutContainer } from 'ngx-golden-layout';\r\nimport { NGXLogger } from 'ngx-logger';\r\n\r\nimport { EventMainActionModel } from 'src/app/model/event.main.action.model';\r\nimport { EditComponent } from 'src/app/pages/edit-component';\r\nimport { EventMainActionsService } from 'src/app/service/model/event.main.actions.service';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { Permission } from 'src/app/model/enums.enum';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\n\r\n@Component({\r\n selector: 'app-event-main-actions-edit',\r\n templateUrl: './event-main-actions-edit.component.html',\r\n styleUrls: ['../../../../app.component.scss', './event-main-actions-edit.component.scss']\r\n})\r\nexport class EventMainActionsEditComponent extends EditComponent {\r\n\r\n constructor(logger: NGXLogger,\r\n eventMainActionService: EventMainActionsService,\r\n dialog: MatDialog,\r\n toastr: ToastrService,\r\n public singleDataCacheService: SingleDataCacheService,\r\n protected storageService: StorageService,\r\n authorizationService: AuthorizationService,\r\n @Inject(GoldenLayoutComponentHost) protected goldenLayout: GoldenLayoutComponent,\r\n @Inject(GoldenLayoutContainer) protected container: GoldenLayout.Container) {\r\n super(logger, eventMainActionService, dialog, environment.EVENT_MAIN_ACTIONS_MODEL_LABEL, environment.EVENT_MAIN_ACTIONS_TITLE_LABEL, storageService,\r\n 'event-main-actions-edit', environment.EVENT_MAIN_ACTIONS_GROUP_LABEL, toastr, authorizationService, goldenLayout, container);\r\n this.logger.debug('EventMainActionsEditComponent.constructor()');\r\n }\r\n\r\n createData(options?) {\r\n this.logger.debug('EventMainActionsEditComponent.createData()');\r\n \r\n this.model = new EventMainActionModel();\r\n this.view = {};\r\n\r\n this.glUpdateTabTitle(this.modelName + ': [NOVA]');\r\n }\r\n\r\n isRequiredFieldFilled(): boolean{\r\n if (!this.view['sourceType'] || \r\n !this.view['action']) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n getRequiredFieldNames(): string[] {\r\n let names: string [] = [];\r\n if (!this.view['sourceType']) names.push('Origem');\r\n if (!this.view['action']) names.push('Ação Principal');\r\n return names;\r\n }\r\n\r\n clearCopyData(){\r\n super.clearCopyData();\r\n\r\n this.model['sourceType'] = null;\r\n }\r\n\r\n canEdit(): boolean {\r\n if (!this.model) return false;\r\n\r\n if (!this.authorizationService.userHasPermission(Permission.CREATE_EDIT_MAIN_EVENT)){\r\n return false\r\n }\r\n\r\n return true;\r\n }\r\n\r\n loadFormOptionsData(){\r\n const metadatas: string[] = [\r\n \"ReportSource\"];\r\n\r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n {{modelName + (isCreating()? ': [NOVA]':'')}}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Ação Principal\r\n \r\n Campo Obrigatório\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TrackingComponent } from './tracking.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { GeneralModule } from 'src/app/general/general.module';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n TrackingComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n MatIconModule,\r\n MatButtonModule,\r\n MatInputModule,\r\n MatFormFieldModule,\r\n MatToolbarModule,\r\n MatListModule,\r\n MatMenuModule,\r\n MatSortModule,\r\n MatSidenavModule,\r\n MatTooltipModule,\r\n MatCheckboxModule,\r\n FlexLayoutModule,\r\n GeneralModule,\r\n MatTableModule\r\n ]\r\n})\r\nexport class TrackingModule { }\r\n","import { Injectable } from '@angular/core';\r\nimport { EntityService } from './entity.service';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { HttpClient, HttpParams} from '@angular/common/http';\r\nimport { FormModel } from 'src/app/model/form.model';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { FormFilterModel } from 'src/app/pages/registrations/form/form-filter-dialog/form.filter.model';\r\nimport { QuestionModel } from 'src/app/model/question.model';\r\nimport { QuestionType } from 'src/app/model/enums.enum';\r\nimport {environment} from '../../../environments/environment';\r\nimport { EntityModel } from 'src/app/model/entity.model';\r\n\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormService extends EntityService {\r\n\r\n /** Serviço de notificação de mudanças na árvore do questionário */\r\n private quizDataSubject = new Subject();\r\n\r\n constructor(logger: NGXLogger,\r\n httpClient: HttpClient) {\r\n super(logger, httpClient, `${environment.settings.registrations_address}/forms`);\r\n }\r\n\r\n protected filteredLoadFromRestApi(pageIndex?: number, pageSize?: number, sort?: string, filter?: FormFilterModel): Observable {\r\n let params: HttpParams = new HttpParams();\r\n\r\n if(filter){\r\n if (filter.name){\r\n params = params.set('name', filter.name);\r\n }\r\n\r\n if (filter.placement){\r\n params = params.set('placement', filter.placement);\r\n }\r\n\r\n if (filter.inspectionType){\r\n params = params.set('inspectionType', filter.inspectionType);\r\n }\r\n }\r\n\r\n return super.loadFromRestApi(pageIndex, pageSize, sort, params);\r\n }\r\n\r\n /** Provê o observable para as notificações de mudanças na árvore */\r\n public onQuizDataChange(){\r\n return this.quizDataSubject.asObservable();\r\n }\r\n\r\n /** Notifica a mudança na árvore */\r\n private notifyQuizDataChange(forModel: FormModel){\r\n this.quizDataSubject.next(forModel);\r\n }\r\n\r\n /**\r\n * Método recursivo que busca pelo nó pai na árvore\r\n * ou, se passado como parametro onlyQuestions = true, busca pela pergunta pai na árvore\r\n * @param childNode\r\n * @param quizNodes\r\n * @param onlyQuestions\r\n * @returns\r\n */\r\n findParentNode(childNode: QuestionModel, quizNodes: QuestionModel[], onlyQuestions: boolean = false) : QuestionModel | undefined{\r\n for(let targetNode of quizNodes){\r\n\r\n if(targetNode.children.includes(childNode)){\r\n return targetNode;\r\n }\r\n\r\n if(targetNode.children && targetNode.children.length > 0){ // Se o nó não é o pai, mas ele possui filhos, continua descendo na árvore\r\n let foundNode = this.findParentNode(childNode, targetNode.children, onlyQuestions);\r\n\r\n if(foundNode !== undefined) return foundNode;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Cria um novo nó para a árvore\r\n * @param text\r\n * @param nodeType Tipo do nó da árvore\r\n * @returns O novo nó criado\r\n */\r\n public createQuizNode(text: string, nodeType: QuestionType): QuestionModel{\r\n const quizNode = new QuestionModel();\r\n quizNode.type = nodeType;\r\n quizNode.label = text;\r\n quizNode.identifier = uuidv4();\r\n\r\n\r\n if(nodeType === QuestionType.ANSWER){\r\n quizNode.evidenceRequirement = undefined;\r\n }\r\n\r\n return quizNode;\r\n }\r\n\r\n /** Copia os dados do nó target para o nó source */\r\n copyQuizNode(sourceQuestion: QuestionModel, targetNode: QuestionModel){\r\n targetNode.evidenceRequirement = sourceQuestion.evidenceRequirement;\r\n targetNode.label = sourceQuestion.label;\r\n\r\n if(targetNode.type !== sourceQuestion.type){\r\n targetNode.children = sourceQuestion.children;\r\n }\r\n\r\n targetNode.type = sourceQuestion.type;\r\n }\r\n\r\n /**\r\n * ######################\r\n * Métodos das Perguntas\r\n * ######################\r\n */\r\n\r\n /**\r\n * Adiciona o novo nó aos filhos do nó pai e verifica o tipo de pergunta.\r\n * No caso de YESNO ou NUMBER, adiciona os nós filhos padrão dos dois casos e notifica a mudança na árvore.\r\n * @param parentNode\r\n * @param newQuestion\r\n */\r\n addQuestion(parentNode: QuestionModel, newQuestion: QuestionModel, formModel: FormModel){\r\n if(parentNode){\r\n parentNode.children.push(newQuestion);\r\n }else{\r\n formModel.questions.push(newQuestion);\r\n }\r\n\r\n this.checkSubQuestions(newQuestion);\r\n this.notifyQuizDataChange(formModel);\r\n\r\n this.logger.debug('**** addQuestion(parentNode: QuestionModel, newQuestion: QuestionModel): Nova pergunta adicionada');\r\n this.logger.trace(newQuestion);\r\n }\r\n\r\n /**\r\n * Copia os valores do nó editado no nó original e verifica o tipo de pergunta.\r\n * No caso de YESNO ou NUMBER, adiciona os nós filhos padrão dos dois casos e notifica a mudança na árvore.\r\n * @param originalQuestion\r\n * @param editedQuestion\r\n */\r\n editQuestion(originalQuestion: QuestionModel, editedQuestion: QuestionModel, formModel: FormModel){\r\n\r\n if(editedQuestion.type !== originalQuestion.type){\r\n this.checkSubQuestions(editedQuestion);\r\n }\r\n\r\n this.copyQuizNode(editedQuestion, originalQuestion);\r\n\r\n this.notifyQuizDataChange( formModel);\r\n\r\n this.logger.debug('**** editQuestion(originalQuestion: QuestionModel, editedQuestion: QuestionModel): Pergunta editada');\r\n this.logger.trace(originalQuestion);\r\n }\r\n\r\n /**\r\n * Verifica o tipo de pergunta. No caso de YESNO ou NUMBER, adiciona os nós filhos padrão dos dois casos.\r\n * @param question\r\n */\r\n checkSubQuestions(question: QuestionModel){\r\n question.children = [];\r\n switch(question.type) {\r\n case QuestionType.YESNO:\r\n question.children.push(this.createQuizNode('Sim', QuestionType.ANSWER));\r\n question.children.push(this.createQuizNode('Não', QuestionType.ANSWER));\r\n question.children.push(this.createQuizNode('N/A', QuestionType.ANSWER));\r\n break;\r\n case QuestionType.ACTIVEINACTIVE:\r\n question.children.push(this.createQuizNode('Ativo', QuestionType.ANSWER));\r\n question.children.push(this.createQuizNode('Inativo', QuestionType.ANSWER));\r\n question.children.push(this.createQuizNode('N/A', QuestionType.ANSWER));\r\n break;\r\n case QuestionType.VIOLATEDCOMPLETE:\r\n question.children.push(this.createQuizNode('Violada', QuestionType.ANSWER));\r\n question.children.push(this.createQuizNode('Íntegra', QuestionType.ANSWER));\r\n question.children.push(this.createQuizNode('N/A', QuestionType.ANSWER));\r\n break;\r\n case QuestionType.NUMBER:\r\n question.children.push(this.createQuizNode('[0-0]', QuestionType.ANSWER)); //Padrão de interpretação do reader\r\n question.children.push(this.createQuizNode('[1-*]', QuestionType.ANSWER));\r\n }\r\n }\r\n\r\n /**\r\n * Remove o nó da árvore e notifica as mudanças na árvore\r\n * @param deletedQuestion\r\n */\r\n removeQuestion(deletedQuestion: QuestionModel, formModel : FormModel){\r\n let targetNode = this.findParentNode(deletedQuestion, formModel.questions);\r\n if(targetNode){\r\n targetNode.children.splice(targetNode.children.indexOf(deletedQuestion), 1);\r\n }else{\r\n formModel.questions.splice(formModel.questions.indexOf(deletedQuestion), 1);\r\n }\r\n\r\n this.notifyQuizDataChange( formModel);\r\n this.logger.debug('**** removeQuestion(deletedQuestion: QuestionModel): Pergunta removida');\r\n this.logger.trace(deletedQuestion);\r\n }\r\n\r\n public updatePublisher (form: FormModel, publish: boolean): Observable{\r\n form.published = publish;\r\n return this.http.put(this.apiUrl + '/'+ form.id, form );\r\n }\r\n\r\n\r\n\r\n\r\n}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\nimport { environmentLoader as environmentLoaderPromise } from './environments/environment-loader';\r\nconst appVersion = require('../package.json').version;\r\n\r\nenvironmentLoaderPromise.then(env => {\r\n // Obrigatórias\r\n environment.production = env.production;\r\n environment.development = env.development;\r\n environment.hmg = env.hmg;\r\n environment.settings = env.settings;\r\n\r\n // Opcionais\r\n if (env.showPopupLayerTables) {\r\n environment.showPopupLayerTables = env.showPopupLayerTables;\r\n }\r\n if (env.useServerPagination) {\r\n environment.useServerPagination = env.useServerPagination;\r\n }\r\n if (env.allUsersCanUseApp) {\r\n environment.allUsersCanUseApp = env.allUsersCanUseApp;\r\n }\r\n if (env.defaultPageSize) {\r\n environment.defaultPageSize = env.defaultPageSize;\r\n }\r\n if (env.profileThresHold) {\r\n environment.profileThresHold = env.profileThresHold;\r\n }\r\n if (env.profileClassToConsoleEnabled) {\r\n environment.profileClassToConsoleEnabled = env.profileClassToConsoleEnabled;\r\n }\r\n \r\n // Inicialização\r\n if (environment.production) {\r\n console.log(\"Modo de Produção Habilitado.\");\r\n enableProdMode();\r\n }\r\n else {\r\n console.log(\"Modo de Produção Desabilitado.\");\r\n }\r\n\r\n console.log(\"Versão componente web: \" + appVersion);\r\n platformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n});\r\n","import {EntityModel} from './entity.model';\r\n\r\nexport class FileKmlModel extends EntityModel {\r\n name: string;\r\n}\r\n","import { AlertTypeDescription, AlertPriorityDescription, SourceType, SimfAlertTypeDescription, Permission, PermisionRuleOption, UserTypeDescription, OperationTypeDescription, OperationType, ServiceTypeDescription } from '../../../model/enums.enum';\r\nimport { Component, OnInit, Inject, OnDestroy } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { CentralFilterModel } from './central-filter.model';\r\nimport * as moment from 'moment';\r\nimport DateUtils from 'src/app/service/util/date-utils';\r\nimport { KeyValue } from '@angular/common';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { PermissionOptions } from 'src/app/model/field.model';\r\nimport { StorageService } from '../../../service/storage-service';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { LoadingListService } from 'src/app/service/loading/loading-list.service';\r\nimport { SingleDataCacheService } from 'src/app/service/model/single.data.cache.service';\r\n\r\nexport class TypeAlerts {\r\n name : string;\r\n value : string;\r\n};\r\n\r\n@Component({\r\n selector: 'app-central-filter-dialog',\r\n templateUrl: './central-filter-dialog.component.html',\r\n styleUrls: ['./central-filter-dialog.component.scss']\r\n})\r\n\r\nexport class CentralFilterDialogComponent implements OnInit, OnDestroy {\r\n\r\n sourceApp: boolean;\r\n\r\n viewFilterStartDate : string;\r\n viewFilterEndDate : string;\r\n viewFilterStartTime : string;\r\n viewFilterEndTime : string;\r\n\r\n startDate: moment.Moment;\r\n endDate: moment.Moment;\r\n\r\n /** ENUMS */\r\n alertPriorityDescription = AlertPriorityDescription;\r\n alertTypeDescription = AlertTypeDescription;\r\n simfAlertTypeDescription = SimfAlertTypeDescription;\r\n permission = Permission;\r\n permisionRuleOption = PermisionRuleOption;\r\n userTypeDescription = UserTypeDescription;\r\n serviceTypeDescription = ServiceTypeDescription\r\n operationType = OperationType;\r\n operationTypeDescription = OperationTypeDescription;\r\n\r\n alertTypeDescriptionFiltered : TypeAlerts[] = [];\r\n \r\n loadingListService = new LoadingListService();\r\n\r\n constructor(private logger: NGXLogger,\r\n public dialogRef: MatDialogRef,\r\n public entityCacheService: EntityCacheService,\r\n @Inject(MAT_DIALOG_DATA) public inMemoryFilterModel: CentralFilterModel,\r\n public filterModel: CentralFilterModel,\r\n public singleDataCacheService: SingleDataCacheService,\r\n protected authorizationService: AuthorizationService,\r\n protected storageService: StorageService) {\r\n this.viewFilterStartTime = '';\r\n this.viewFilterEndTime = '';\r\n\r\n if (this.inMemoryFilterModel.sourceTypes[0] == SourceType.MOBILE_APP) {\r\n this.sourceApp = true;\r\n }\r\n else{\r\n this.sourceApp = false;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.loadFormOptionsData();\r\n\r\n this.filterModel = new CentralFilterModel();\r\n this.updateFilterModel(this.inMemoryFilterModel, this.filterModel);\r\n\r\n this.handleFilterDates();\r\n this.filterAlertTypeByProfile();\r\n }\r\n\r\n ngOnDestroy(){\r\n this.loadingListService.destroy();\r\n }\r\n\r\n getShowSpinner() {\r\n return this.loadingListService.getShowSpinner();\r\n }\r\n\r\n startDateChanged() {\r\n this.viewFilterStartDate = this.startDate.format(\"DD/MM/yyyy\");\r\n }\r\n\r\n applyStartDate(dateString: string) {\r\n this.startDate = moment(dateString, \"DD/MM/yyyy\");\r\n }\r\n\r\n endDateChanged() {\r\n this.viewFilterEndDate = this.endDate.format(\"DD/MM/yyyy\");\r\n }\r\n\r\n applyEndDate(dateString: string) {\r\n this.endDate = moment(dateString, \"DD/MM/yyyy\");\r\n }\r\n\r\n private loadFormOptionsData() {\r\n this.logger.debug('CentralFilterDialogComponent.loadFormOptionsData()');\r\n this.loadPatrolTeams();\r\n this.loadVehicles();\r\n const metadatas: string[] = [\r\n \"OpticalProcessingSystem\"];\r\n\r\n this.singleDataCacheService.loadMulipleValues(metadatas, this.loadingListService);\r\n\r\n }\r\n\r\n private loadPatrolTeams () {\r\n this.entityCacheService.loadPatrolTeams(this.loadingListService);\r\n }\r\n\r\n private loadVehicles () {\r\n this.entityCacheService.loadVehicles(this.loadingListService);\r\n }\r\n\r\n onFilter(){\r\n if (this.filterModel.current) {\r\n this.filterModel.startDate = DateUtils.getTodayStartDate();\r\n this.filterModel.endDate = DateUtils.getTodayEndDate();\r\n }\r\n else {\r\n this.filterModel.startDate = DateUtils.stringDateTimeToTimestamp(this.viewFilterStartDate, this.viewFilterStartTime, true);\r\n this.filterModel.endDate = DateUtils.stringDateTimeToTimestamp(this.viewFilterEndDate, this.viewFilterEndTime, false);\r\n }\r\n \r\n if(this.filterModel.startScalePoint == \"\")\r\n this.filterModel.startScalePoint = undefined;\r\n \r\n if(this.filterModel.endScalePoint == \"\")\r\n this.filterModel.endScalePoint = undefined;\r\n\r\n this.filterModel.placements = this.storageService.getSpecificPlacementIds();\r\n\r\n this.updateFilterModel(this.filterModel, this.inMemoryFilterModel);\r\n\r\n this.dialogRef.close(true);\r\n }\r\n\r\n updateFilterModel(sourceFilter: CentralFilterModel, targetFilter: CentralFilterModel){\r\n for(const key in sourceFilter){\r\n targetFilter[key] = sourceFilter[key];\r\n }\r\n }\r\n\r\n clearFilter(){\r\n // Não reseta o current para evitar que o diálogo mude de tamanho ao Limpar o filtro\r\n //this.filterModel.current = true;\r\n this.filterModel.startDate = DateUtils.getTodayStartDate();\r\n this.filterModel.endDate = DateUtils.getTodayEndDate();\r\n this.filterModel.patrolTeams = undefined;\r\n this.filterModel.vehicles = undefined;\r\n this.filterModel.types = undefined;\r\n this.filterModel.priorities = undefined;\r\n this.filterModel.operationTypes = undefined;\r\n this.filterModel.serviceTypes = undefined;\r\n this.filterModel.simfAlertTypes = undefined;\r\n this.filterModel.cpsNumber = undefined;\r\n this.filterModel.startChannel = undefined;\r\n this.filterModel.endChannel = undefined;\r\n this.filterModel.startScalePoint = undefined; \r\n this.filterModel.endScalePoint= undefined;\r\n\r\n this.handleFilterDates();\r\n }\r\n\r\n handleFilterDates(){\r\n this.startDate = moment(this.filterModel.startDate);\r\n this.viewFilterStartDate = this.startDate.format('DD/MM/yyyy');\r\n this.viewFilterStartTime = this.startDate.format('HH:mm');\r\n\r\n this.endDate = moment(this.filterModel.endDate);\r\n this.viewFilterEndDate = this.endDate.format('DD/MM/yyyy');\r\n this.viewFilterEndTime = this.endDate.format('HH:mm');\r\n }\r\n\r\n originalOrder = (a: KeyValue, b: KeyValue): number => {\r\n return 0;\r\n }\r\n\r\n /**Filtra a lista de origem de acordo com o perfil do usuário */\r\n filterAlertTypeByProfile() {\r\n // Mapeia `alertTypeDescription` para obter os tipos de alerta\r\n const typeAlerts = Object.entries(this.alertTypeDescription).map(([name, value]) => ({\r\n name,\r\n value\r\n }));\r\n\r\n // Obtém as opções de permissão do usuário\r\n const permissionOption: PermissionOptions = this.authorizationService.getUserPermissionOptions(this.permission.LIST_ALERTS);\r\n console.log(\"### 3 - Central Filter Dialog User - Permission Option:\", permissionOption);\r\n \r\n if (!permissionOption) {\r\n console.warn(\"### - Central Filter Dialog - No permission options found for this user.\");\r\n return;\r\n }\r\n\r\n // Define condições para permissões específicas\r\n const isSomeFieldsOption = permissionOption.option === this.permisionRuleOption.SOME_FIELDS;\r\n const isAllFieldsOption = permissionOption.option === this.permisionRuleOption.ALL_FIELD || !permissionOption.option;\r\n\r\n // Filtra `typeAlerts` conforme as permissões\r\n this.alertTypeDescriptionFiltered = typeAlerts.filter(element => {\r\n const isAllowedField = permissionOption.fields?.includes(element.name);\r\n console.log(\"### 4 Central Filter Dialog - Origem: \" + element.name)\r\n return (isSomeFieldsOption && isAllowedField) || isAllFieldsOption; \r\n });\r\n}\r\n}\r\n","
    \r\n Filtrar Alertas {{sourceApp? \"App Móvel\": \"SIMF\"}}\r\n \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n Hoje\r\n Especificado\r\n \r\n
    \r\n\r\n \r\n
    \r\n \r\n\r\n \r\n Hora Inicial\r\n \r\n query_builder\r\n \r\n\r\n \r\n \r\n\r\n \r\n Hora Final\r\n \r\n query_builder\r\n \r\n\r\n
    \r\n
    \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n Kpoint Inicial\r\n \r\n \r\n\r\n \r\n Kpoint Final\r\n \r\n \r\n\r\n \r\n Canal Inicial\r\n \r\n \r\n\r\n \r\n Canal Final\r\n \r\n \r\n\r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n\r\n \r\n \r\n \r\n\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpClient} from '@angular/common/http';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport * as JWT from 'jwt-decode';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { StorageService } from 'src/app/service/storage-service';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { API_VERSION_ENDPOINT, NO_PROFILE_ID } from '../../../common/constants';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { ProfileService } from '../../../service/model/profile.service';\r\nimport { ProfileModel } from '../../../model/profile.model';\r\nimport { UserService } from '../../../service/model/user.service';\r\nimport { UserModel } from 'src/app/model/user.model';\r\nimport { Permission } from 'src/app/model/enums.enum';\r\nimport { UserType } from '../../../model/enums.enum';\r\nimport { PermissionOptions } from '../../../model/field.model';\r\nimport { EntityCacheService } from 'src/app/service/model/entity.cache.service';\r\nimport { AuthorizationService } from 'src/app/service/authorization/authorization.service';\r\nimport { first } from 'rxjs/operators';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { PublicClientApplication } from '@azure/msal-browser';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthenticationService {\r\n\r\n private authenticatedSubject: Subject = new Subject();\r\n public readonly authenticated$: Observable = this.authenticatedSubject.asObservable();\r\n\r\n private inconsistentData: Subject = new Subject();\r\n public readonly idata$: Observable = this.inconsistentData.asObservable();\r\n\r\n constructor(private logger: NGXLogger,\r\n private http: HttpClient,\r\n public storage: StorageService,\r\n private cookieService: CookieService,\r\n public entityCacheService: EntityCacheService,\r\n protected authorizationService: AuthorizationService,\r\n private msalService: MsalService,\r\n private toastr: ToastrService,\r\n private router: Router,\r\n private _injector: Injector,\r\n private profileService: ProfileService,\r\n private userService: UserService) {\r\n }\r\n\r\n protected logoutErase() {\r\n this.cookieService.deleteAll();\r\n\r\n this.storage.setLocalUser(null);\r\n this.storage.setLocalProfile(null);\r\n\r\n this.storage.setPopoutData(null);\r\n this.storage.setSpecificPlacementIds(null);\r\n }\r\n\r\n logout() {\r\n if (this.storage.getLocalUser()) {\r\n this.logoutErase();\r\n this.router.navigated = false;\r\n localStorage.clear();\r\n location.reload();\r\n this.authenticatedSubject.next(false);\r\n }\r\n }\r\n\r\n injectUpdate() {\r\n if (!this.toastr) {\r\n this.toastr = this._injector.get(ToastrService);\r\n }\r\n if (!this.logger) {\r\n this.logger = this._injector.get(NGXLogger);\r\n }\r\n }\r\n\r\n reloadToken(){\r\n this.injectUpdate();\r\n\r\n const account = this.msalService.instance.getAllAccounts()[0];\r\n const accessTokenRequest = {\r\n scopes: [\"user.read\"],\r\n account: account,\r\n };\r\n\r\n let msalInstance: PublicClientApplication = this.msalService.instance as PublicClientApplication;\r\n\r\n const _this = this;\r\n\r\n msalInstance.acquireTokenSilent(accessTokenRequest).then(accessTokenResponse => {\r\n // Acquire token silent success\r\n let accessToken = accessTokenResponse.accessToken;\r\n _this.updateUserToken(accessToken);\r\n })\r\n .catch(function (error) {\r\n //Acquire token silent failure\r\n if (_this.logger) _this.logger.error(\"AuthenticationService.reloadToken()\", error); else console.error(\"AuthenticationService.reloadToken()\", error);\r\n if (_this.toastr) _this.toastr.error(\"AuthenticationService.reloadToken() - Erro ao renovar o token de acesso. Recomendamos fazer logout ou recarregar a página.\");\r\n });\r\n }\r\n\r\n private updateUserToken(token){\r\n const loggedUser = this.storage.getLocalUser();\r\n loggedUser.token = token;\r\n this.storage.setLocalUser(loggedUser);\r\n }\r\n\r\n private onUserProfileLoad(user: UserModel, profile: ProfileModel){\r\n if(profile.userType===UserType.ADMINISTRATOR){\r\n // Faz com que o administrador tenha todas as permissões\r\n profile.permissions = {};\r\n const keyPermission = Object.keys(Permission);\r\n keyPermission.forEach((key,index)=>{\r\n let permissionOption = new PermissionOptions();\r\n profile.permissions[key] = permissionOption;\r\n });\r\n }\r\n\r\n let perm = profile.permissions[Permission.ACCES_WEB];\r\n if(!perm){\r\n localStorage.setItem(\"Login Error\", \"Perfil sem acesso a Web: \" + profile.name);\r\n this.inconsistentData.next(false);\r\n return;\r\n }\r\n\r\n // Se não tem a permissão de acessar todas as lotações\r\n perm = profile.permissions[Permission.ACCESS_TO_ALL_PLACEMENT];\r\n if(!perm){\r\n // Se não tem a permissão de acessar todas as lotações\r\n let userPlacements : string[] = [];\r\n userPlacements = userPlacements.concat(user?.placements.map(( { id }) => id));\r\n\r\n if(user.originPlacement && userPlacements.length > 0 && !userPlacements.includes(user?.originPlacement.id) ){\r\n userPlacements.push(user.originPlacement.id);\r\n }\r\n\r\n if(userPlacements.length == 0) {\r\n localStorage.setItem(\"Login Error\", \"Perfil com lotações de acesso não definidas: \" + profile.name);\r\n this.inconsistentData.next(true);\r\n return;\r\n }\r\n\r\n this.storage.setSpecificPlacementIds(userPlacements);\r\n }\r\n\r\n this.storage.setLocalProfile(profile);\r\n this.authorizationService.setLoggedProfileUser(profile);\r\n\r\n this.authenticatedSubject.next(true);\r\n }\r\n\r\n loadProfile(user: UserModel){\r\n if(user.profileId === NO_PROFILE_ID) {\r\n localStorage.setItem(\"Login Error\", \"Usuário sem perfil definido!\");\r\n this.inconsistentData.next(true);\r\n return;\r\n }\r\n\r\n this.profileService.getProfileById(user.profileId).pipe(first()).subscribe((profile:ProfileModel)=>{\r\n if(profile){\r\n this.onUserProfileLoad(user, profile);\r\n }\r\n else {\r\n localStorage.setItem(\"Login Error\", \"Perfil não encontrado: \" + user.profileId);\r\n this.inconsistentData.next(true);\r\n }\r\n },\r\n error => {\r\n localStorage.setItem(\"Login Error\", \"Falha ao carregar o perfil: \" + user.profileId);\r\n this.inconsistentData.next(true);\r\n });\r\n }\r\n\r\n /** Retorna a lotação de origem do usuário logado*/\r\n getUserPlacementId() {\r\n const loggedUser = this.storage.getLocalUser()\r\n if (!loggedUser.originPlacement && loggedUser.placements && loggedUser.placements.length == 1) {\r\n return loggedUser.placements[0].id;\r\n }\r\n\r\n return loggedUser.originPlacement ? loggedUser.originPlacement.id : null;\r\n }\r\n\r\n private loadAllProfiles(){\r\n this.entityCacheService.loadProfiles(null);\r\n }\r\n\r\n private loadUserData(loggedUser : UserModel): Promise{\r\n // Keycloak => email , Microsoft Azure => unique_name\r\n const email = loggedUser.email ? loggedUser.email: loggedUser.unique_name;\r\n if(!email){\r\n localStorage.setItem(\"Login Error\", \"Usuário sem e-mail no SSO!\");\r\n return new Promise((resolve, reject) => {\r\n resolve(false);\r\n });\r\n }\r\n\r\n return new Promise((resolve, reject)=>{\r\n this.userService.getUserFromEmail(email.toLocaleLowerCase()).pipe(first()).subscribe((user:UserModel)=>{\r\n if(user){ // existe usuário\r\n const token = loggedUser.token;\r\n loggedUser = user;\r\n loggedUser.token = token;\r\n\r\n // Chama novamente depois de carregar os dados do usuário (ver createSession)\r\n this.storage.setLocalUser(loggedUser);\r\n\r\n this.loadProfile(loggedUser); // Aqui não aguarda carregar o perfil, mas os dados inconsistentes irão forçar um logout depois de uma tela de confirmação\r\n resolve(true);\r\n }else{\r\n localStorage.setItem(\"Login Error\", \"Usuário não encontrado! email=\" + email.toLocaleLowerCase());\r\n resolve(false);\r\n }\r\n }, error => {\r\n localStorage.setItem(\"Login Error\", \"Falha ao carregar dados do usuário! email=\" + email.toLocaleLowerCase());\r\n resolve(false);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Cria uma sessão para o usuário logado a partir do seu token JWT vindo da requisição\r\n * @param token Token JWT criado na autenticação no CCPD-AUTH\r\n */\r\n async createSession(token: string): Promise{\r\n let user: UserModel;\r\n\r\n const loginAsUser = this.storage.getLoginAsUser();\r\n if(loginAsUser){\r\n user = loginAsUser;\r\n }\r\n else {\r\n user = JWT(token.substring(7)); //Remove \"Bearer \" from string and parse\r\n }\r\n\r\n user.token = token;\r\n\r\n // Isso se repete em loadUserData\r\n // Armazena mesmo que incompleto, logo depois vamos carregar os dados completos do backend\r\n // É necessario para que o AuthInterceptor pegue o token ao procurar os dados usuário no Bd\r\n this.storage.setLocalUser(user);\r\n\r\n let existUser: boolean;\r\n if (loginAsUser) {\r\n const profile = this.storage.getLocalProfile();\r\n setTimeout(() => {\r\n this.onUserProfileLoad(user, profile); // é preciso esperar até iniciar os componentes e a subscripción que valida o acesso para as telas abertas inicialmente (Alertas, Rastreamento e Mensagens)\r\n },700);\r\n existUser = true;\r\n }\r\n else {\r\n existUser = await this.loadUserData(user);\r\n }\r\n\r\n this.loadAllProfiles();\r\n\r\n this.logger.debug(`Sessão = { Subject='${user.login}', Token='${token}' }`);\r\n return existUser;\r\n }\r\n\r\n /**\r\n * Obtem a versão do projeto auth\r\n */\r\n public getServiceVersion(): Observable {\r\n return this.http.get(`${environment.settings.auth_address}/auth/${API_VERSION_ENDPOINT}`,\r\n { responseType: 'text' });\r\n }\r\n}\r\n"]}