{"version":3,"sources":["./src/app/model/company.model.ts","./src/app/pages/event/event-edit/event-edit.component.ts","./src/app/pages/event/event-edit/event-edit.component.html","./src/app/model/validation.note.model.ts","./src/app/model/event.main.action.model.ts","./src/app/pages/registrations/registrations.module.ts","./src/app/pages/base-golden-panel/blank/blank.component.ts","./src/app/model/abstract.signal.model.ts","xmldom (ignored)","./src/app/pages/event/event.module.ts","./src/app/model/simf.model.ts","fs (ignored)","./src/app/model/dc.model.ts","./src/app/model/operation.model.ts","./src/app/pages/channel/channel-list/channel-list.component.ts","./src/app/pages/channel/channel-list/channel-list.component.html","crypto (ignored)","./src/app/service/model/reactive.service.ts","./src/app/model/signal.model.ts","./src/app/pages/base-golden-panel/base-golden-panel.ts","stream (ignored)","./src/app/pages/event/event-list/event-list.component.ts","./src/app/pages/event/event-list/event-list.component.html","./src/app/model/duct.model.ts","./src/app/service/model/event.service.ts","./src/app/pages/patrol/patrol-repetition-dialog/patrol-repetition-dialog.component.ts","./src/app/pages/patrol/patrol-repetition-dialog/patrol-repetition-dialog.component.html","./src/app/pages/map/map.component.ts","./src/app/pages/map/map.component.html","./src/app/model/alert.model.ts","./src/app/general/answer-list/answer-list.component.ts","./src/app/general/answer-list/answer-list.component.html","./src/app/general/operation/insert-point-dialog/insert-point-dialog.component.ts","./src/app/general/operation/insert-point-dialog/insert-point-dialog.component.html","./src/app/service/model/archive.service.ts","./src/app/pages/registrations/point/point-edit/point-edit.component.ts","./src/app/pages/registrations/point/point-edit/point-edit.component.html","./src/app/service/storage-service.ts","./src/app/general/tokml.ts","./src/app/general/system-check/service-response.ts","./src/app/pages/tracking/tracking.component.ts","./src/app/pages/tracking/tracking.component.html","./src/app/pages/map/map.module.ts","./src/app/pages/registrations/user/user-edit/user-edit.component.ts","./src/app/pages/registrations/user/user-edit/user-edit.component.html","./src/app/pages/registrations/form/form-filter-dialog/form-filter-dialog.component.ts","./src/app/pages/registrations/form/form-filter-dialog/form-filter-dialog.component.html","./src/app/model/inspection.model.ts","./src/app/pages/patrol/patrol-edit/patrol-edit.component.ts","./src/app/pages/patrol/patrol-edit/patrol-edit.component.html","./src/app/general/filter-component/filter.model.ts","./src/app/pages/registrations/form/question-form/question-form.component.ts","./src/app/pages/registrations/form/question-form/question-form.component.html","./src/app/model/location.model.ts","./src/app/pages/registrations/point/point-filter-dialog/point.filter.model.ts","./src/app/pages/verification/verification-edit/verification-edit.component.ts","./src/app/pages/verification/verification-edit/verification-edit.component.html","./src/app/model/pipe/location.pipe.ts","./src/environments/environment.ts","./src/app/pages/message-page/message-page.module.ts","./src/app/pages/registrations/observed-area/observed-area-list/observed-area-list.component.ts","./src/app/pages/registrations/observed-area/observed-area-list/observed-area-list.component.html","./src/app/general/operation/event-list-dialog/event-list-dialog.component.ts","./src/app/general/operation/event-list-dialog/event-list-dialog.component.html","./src/app/model/marker.model.ts","./src/app/pages/verification/verification-filter-dialog/verification-filter-dialog.component.ts","./src/app/pages/verification/verification-filter-dialog/verification-filter-dialog.component.html","./src/app/general/operation/import-points-dialog/import-points-dialog.component.ts","./src/app/general/operation/import-points-dialog/import-points-dialog.component.html","./src/app/pages/message-page/message-page.component.ts","./src/app/pages/message-page/message-page.component.html","./src/app/pages/registrations/registration-list-component.ts","./src/app/service/model/profile.service.ts","./src/app/general/import-geo-kml-dialog/import-geo-kml-dialog.component.ts","./src/app/general/import-geo-kml-dialog/import-geo-kml-dialog.component.html","./src/app/pages/registrations/observed-area/observed-area-filter/observed-area-filter.component.ts","./src/app/pages/registrations/observed-area/observed-area-filter/observed-area-filter.component.html","./src/app/pages/operation-edit.component.ts","./src/app/general/message/marker.filter.model.ts","./src/app/pages/channel/channel-filter/channel.filter.model.ts","./src/app/model/singleData.model.ts","./src/app/pages/registrations/patrolTeam/patrol-team-list/patrol-team-list.component.ts","./src/app/pages/registrations/patrolTeam/patrol-team-list/patrol-team-list.component.html","./src/app/pages/login/login.module.ts","./src/app/model/channel.model.ts","./src/app/service/util/date-utils.ts","./src/app/general/notification-dialog/notification-dialog.component.ts","./src/app/general/notification-dialog/notification-dialog.component.html","./src/app/pages/filtered-list-component.ts","./src/app/pages/central/central-list/central-list.component.ts","./src/app/pages/central/central-list/central-list.component.html","./src/app/general/login-error/login-error.component.ts","./src/app/general/login-error/login-error.component.html","./src/app/common/profile-class.decorator.ts","./src/app/pages/event/event-validation-note-dialog/event-validation-note-dialog.component.ts","./src/app/pages/event/event-validation-note-dialog/event-validation-note-dialog.component.html","./src/app/model/vehicle.signal.model.ts","./src/app/directives/ctrl-click.directive.ts","./src/app/service/model/event.main.actions.service.ts","./src/app/service/authorization/authorization.service.ts","./src/app/service/util/field-utils.ts","./src/app/pages/registrations/patrolTeam/patrol-team-edit/patrol-team-edit.component.ts","./src/app/pages/registrations/patrolTeam/patrol-team-edit/patrol-team-edit.component.html","./src/app/pages/verification/verification-list/verification-list.component.ts","./src/app/pages/verification/verification-list/verification-list.component.html","./src/app/service/model/layer.service.ts","./src/app/general/single-data-edit/single-data-edit.component.ts","./src/app/general/single-data-edit/single-data-edit.component.html","./src/app/pages/event/event-action-dialog/event-main-action-dialog.component.ts","./src/app/pages/event/event-action-dialog/event-main-action-dialog.component.html","./src/app/model/patrol.model.ts","./src/app/service/model/single.data.cache.service.ts","./src/app/service/model/vehicle.service.ts","./src/app/model/simple.model.ts","./src/app/pages/registrations/point/point-filter-dialog/point-filter-dialog.component.ts","./src/app/pages/registrations/point/point-filter-dialog/point-filter-dialog.component.html","./src/app/model/field.model.ts","./src/app/pages/patrol/patrol-repetition-edit-dialog/patrol-repetition-edit-dialog.component.ts","./src/app/pages/patrol/patrol-repetition-edit-dialog/patrol-repetition-edit-dialog.component.html","./src/app/service/model/observed.area.service.ts","./src/app/general/multiselect-autocomplete/multiselect-autocomplete.component.ts","./src/app/general/multiselect-autocomplete/multiselect-autocomplete.component.html","./src/app/service/util/language-utils.ts","./src/app/model/vehicle.model.ts","./src/app/pages/registrations/profile/profile-edit/profile-edit.component.ts","./src/app/pages/registrations/profile/profile-edit/profile-edit.component.html","./src/app/interceptors/auth-interceptor.ts","./src/app/pages/event/event-filter/event.filter.model.ts","./node_modules/moment/locale sync ^\\.\\/.*$","./src/app/service/model/operation.form.answers.service.ts","./src/app/pages/list-component.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/pages/registrations/form/form-filter-dialog/form.filter.model.ts","./src/app/model/user.model.ts","./src/app/pages/patrol/patrol.module.ts","./src/app/pages/login/login-services/index.ts","./src/app/model/profile.model.ts","./src/app/service/model/channel.users.service.ts","./src/environments/environment-loader.ts","./src/app/model/observed.area.model.ts","./src/app/pages/registrations/placement/placement-edit/placement-edit.component.ts","./src/app/pages/registrations/placement/placement-edit/placement-edit.component.html","./src/app/common/constants.ts","./src/app/model/geo.model.ts","./src/app/pages/registrations/user/user-list/user-list.component.ts","./src/app/pages/registrations/user/user-list/user-list.component.html","./src/app/pages/registrations/company/company-edit/company-edit.component.ts","./src/app/pages/registrations/company/company-edit/company-edit.component.html","./src/app/pages/registrations/vehicle/vehicle-edit/vehicle-edit.component.ts","./src/app/pages/registrations/vehicle/vehicle-edit/vehicle-edit.component.html","./src/app/pages/login/login-services/user-login.service.ts","./src/app/service/model/registration.service.ts","./src/app/app.module.ts","./src/app/general/login-as/login-as.component.ts","./src/app/general/login-as/login-as.component.html","./src/app/pages/registrations/point/point-list/point-list.component.ts","./src/app/pages/registrations/point/point-list/point-list.component.html","./src/app/service/model/placement.service.ts","./src/app/service/loading/loading-list.service.ts","./src/app/pages/registrations/observed-area/observed-area-filter/observed-area.filter.model.ts","./src/app/model/pipe/user-model-toview.pipe.ts","./src/app/model/kilometerMark.model.ts","./src/app/model/verification.model.ts","./src/app/general/operation/import-points-kml-dialog/import-points-kml-dialog.component.ts","./src/app/general/operation/import-points-kml-dialog/import-points-kml-dialog.component.html","./src/app/general/global-spinner/global-spinner.component.ts","./src/app/general/global-spinner/global-spinner.component.html","./src/app/general/track-points-dialog/track-points-dialog.component.ts","./src/app/general/track-points-dialog/track-points-dialog.component.html","./src/app/model/patrolteam.model.ts","./src/app/pages/central/central-filter-dialog/central-filter.model.ts","./src/$_lazy_route_resource lazy namespace object","./src/app/model/attachment.model.ts","./src/app/error/global-error-handler.service.ts","./src/app/interceptors/invalid-token-api-service.ts","./src/app/pages/edit-component.ts","./src/app/general/base-map/base-map.component.ts","./src/app/general/base-map/base-map.component.html","./src/app/pages/verification/verification.module.ts","./src/app/service/model/entity.cache.service.ts","./src/app/service/model/verification.service.ts","./src/app/general/upload/upload.component.ts","./src/app/general/upload/upload.component.html","./src/app/model/patrol.repetition.model.ts","./src/app/service/model/company.service.ts","./src/app/service/model/alerts.service.ts","./src/app/service/model/patrol.team.service.ts","./src/app/service/model/patrol.service.ts","./src/app/general/confirmation-dialog/confirmation-dialog.component.ts","./src/app/general/confirmation-dialog/confirmation-dialog.component.html","./src/app/model/layer.filter.model.ts","./src/app/pages/patrol/patrol-filter-dialog/patrol-filter-dialog.component.ts","./src/app/pages/patrol/patrol-filter-dialog/patrol-filter-dialog.component.html","./src/app/general/general.module.ts","./src/app/pages/channel/channel.module.ts","./src/app/general/single-autocomplete/single-autocomplete.component.ts","./src/app/general/single-autocomplete/single-autocomplete.component.html","./src/app/pages/registrations/profile/profile-list/profile-list.component.ts","./src/app/pages/registrations/profile/profile-list/profile-list.component.html","./src/app/general/operation/import-points-xls-dialog/import-points-xls-dialog.component.ts","./src/app/general/operation/import-points-xls-dialog/import-points-xls-dialog.component.html","./src/app/general/filter-component/operation-filter-component.ts","./src/app/model/band.model.ts","./src/app/service/model/route-geographical-service.ts","./src/app/pages/registrations/vehicle/vehicle-list/vehicle-list.component.ts","./src/app/pages/registrations/vehicle/vehicle-list/vehicle-list.component.html","./src/app/pages/archive-list-component.ts","./src/app/pages/registrations/form/form-list/form-list.component.ts","./src/app/pages/registrations/form/form-list/form-list.component.html","./src/app/pages/registrations/form/form-edit/form-edit.component.ts","./src/app/pages/registrations/form/form-edit/form-edit.component.html","./src/app/model/form.model.ts","./src/app/model/enums.enum.ts","./src/app/service/util/list-utils.ts","./src/app/service/model/user.service.ts","./src/app/general/boolean-br.pipe.ts","./src/app/pages/registrations/placement/placement-list/placement-list.component.ts","./src/app/pages/registrations/placement/placement-list/placement-list.component.html","./src/app/model/route.model.ts","./src/app/model/common.model.ts","./src/app/general/system-check/system-check-dialog.component.ts","./src/app/general/system-check/system-check-dialog.component.html","./src/app/service/model/single.data.service.ts","./src/app/model/tracking.model.ts","./src/app/pages/central/central.module.ts","./src/app/model/results.model.ts","./src/app/service/model/point.service.ts","./src/app/service/model/channel.service.ts","./src/app/pages/patrol/patrol-filter-dialog/patrol-repetition.filter.model.ts","./src/app/pages/registrations/company/company-list/company-list.component.ts","./src/app/pages/registrations/company/company-list/company-list.component.html","./src/app/service/model/entity.service.ts","./src/app/general/multiselect-object-autocomplete/multiselect-object-autocomplete.component.ts","./src/app/general/multiselect-object-autocomplete/multiselect-object-autocomplete.component.html","./src/app/pages/patrol/patrol-list/patrol-list.component.ts","./src/app/pages/patrol/patrol-list/patrol-list.component.html","./src/app/general/single-data-list/single-data-list.component.ts","./src/app/general/single-data-list/single-data-list.component.html","./src/app/pages/verification/verification-filter-dialog/verification.filter.model.ts","./src/app/pages/patrol/patrol-filter-dialog/patrol.filter.model.ts","./src/app/general/message/message.component.ts","./src/app/general/message/message.component.html","./src/app/general/date-chooser/date-chooser.component.ts","./src/app/general/date-chooser/date-chooser.component.html","./src/app/general/test-data-generator/test-data-generator.service.ts","./src/app/model/inspection.point.model.ts","./src/app/service/model/operation.service.ts","./src/app/general/filter-component/filter-component.ts","./src/app/model/valve.model.ts","./src/app/pages/central/central.component.ts","./src/app/pages/central/central.component.html","./src/app/service/model/markers.service.ts","./src/app/service/model/websocket.signals.service.ts","./src/app/general/filter-component/operation.filter.model.ts","./src/app/pages/operation-list-component.ts","./src/app/pages/event/event-filter/event-filter.component.ts","./src/app/pages/event/event-filter/event-filter.component.html","./src/app/model/event.model.ts","./src/app/service/model/signals.service.ts","./src/app/model/entity.model.ts","./src/app/app-routing.module.ts","./src/app/service/model/tracking.service.ts","./src/app/model/question.model.ts","./src/app/pages/registrations/event-main-actions/event-main-actions-list/event-main-actions-list.component.ts","./src/app/pages/registrations/event-main-actions/event-main-actions-list/event-main-actions-list.component.html","./src/app/service/websocket/websocket.ts","./src/app/general/internationalization/mat-paginator-intl-br.ts","./src/app/pages/registrations/observed-area/observed-area-edit/observed-area-edit.component.ts","./src/app/pages/registrations/observed-area/observed-area-edit/observed-area-edit.component.html","./src/app/model/placement.model.ts","./src/app/general/autocomplete/autocomplete.component.ts","./src/app/pages/registrations/event-main-actions/event-main-actions-edit/event-main-actions-edit.component.ts","./src/app/pages/registrations/event-main-actions/event-main-actions-edit/event-main-actions-edit.component.html","./src/app/pages/tracking/tracking.module.ts","./src/app/service/model/form.service.ts","./src/main.ts","./src/app/model/filekml.model.ts","./src/app/pages/central/central-filter-dialog/central-filter-dialog.component.ts","./src/app/pages/central/central-filter-dialog/central-filter-dialog.component.html","./src/app/pages/login/login-services/authentication.service.ts"],"names":[],"mappings":"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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2B;;;;;;;;;;;;ACvSA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4E;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","file":"main-es2015.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","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\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","\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","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","
\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","/* (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 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","
\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 { 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","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","
\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 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","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","
\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 { 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","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}","
    \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 { 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","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}","
    \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 {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","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","
    \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 { 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","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","
    \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 } 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","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","
    \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 { 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","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","
    \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 { 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"],"sourceRoot":"webpack:///"}